目錄:
該模組不受官方支援。它被創建為一個方便的模組,用於生成自簽名證書,以簡化 HTTPS 功能的測試。
該模組不應該在任何生產場景中使用;它旨在創建僅用於測試目的的自簽名證書。
此模組旨在以方便的跨平台方式在 PowerShell Core 和 Windows PowerShell 5.1 中產生自簽章憑證。
由於 .NET Core 已經嵌入了自己的跨平台加密/憑證 API,因此該模組是本機 PowerShell 腳本模組,沒有二進位依賴項。
該模組的一些目標包括:
X509HighlySpecificCryptoObject
分配和操作您可能想看看其他一些用於產生自簽名憑證的替代方案,如下所列:
PkiClient 模組中的 Windows PowerShell 的New-SelfSignedCertificate
cmdlet。
可以使用 WindowsCompatibility 模組從 Windows 上的 PowerShell Core 使用它,如下所示:
Install-Module WindowsCompatibility
Import-WinModule PKI
New-SelfSignedCertificate # args as needed
不過,該模組僅適用於 Windows,沒有 Linux 版本。
dotnet dotnet-dev-certs
全域工具,旨在為 ASP.NET Core 開發產生自簽名憑證。
可以從 dotnet CLI 安裝。
openssl
,它確實可以跨平台工作,但與 PowerShell 本機選項相比可能不太有利,並且使用 PEM 而不是 PFX 格式。
要建立一個簡單的證書,可以執行以下操作:
> New-SelfSignedCertificate
Certificate written to C:UsersroholtDocumentsDevsandboxcertificate.pfx
Thumbprint Subject EnhancedKeyUsageList
---------- ------- --------------------
A51B016324B5D2F11340CDCC52004B8129C88D3B CN = localhost
這將在您的 CWD 中為localhost
建立一個名為certificate.pfx
的新憑證。該指令本身傳回一個X509Certificate2
對象,描述寫入磁碟的憑證。您可以檢查該物件以查找其屬性。該憑證將沒有密鑰用法、沒有基本約束、沒有增強的密鑰用法和主題標識符密鑰擴充。
注意:要重複此命令,您將需要-Force
參數才能覆蓋先前產生的舊憑證。
New-SelfSignedCertificate
指令允許指定完整的專有名稱以及一些其他選項:
> $password = ConvertTo-SecureString - Force - AsPlainText ' your password '
> $distinguishedName = @ {
CommonName = ' example.org '
Country = ' US '
StateOrProvince = ' Nebraska '
Locality = ' Omaha '
Organization = ' Umbrella Corporation '
OrganizationalUnit = ' Sales '
EmailAddress = ' [email protected] '
}
> $certificateParameters = $distinguishedName + @ {
OutCertPath = ' C:UsersyouDocumentscert.pfx '
StartDate = [ System.DateTimeOffset ]::Now
Duration = [ timespan ]::FromDays( 365 )
Passphrase = $password
CertificateFormat = ' Pfx ' # Values from [System.Security.Cryptography.X509Certificates.X509ContentType]
KeyLength = 4096
ForCertificateAuthority = $true
KeyUsage = ' DigitalSignature ' , ' KeyEncipherment ' # Values from [System.Security.Cryptography.X509Certificates.X509KeyUsageFlags]
EnhancedKeyUsage = ' ServerAuthentication ' , ' ClientAuthentication '
}
> New-SelfSignedCertificate @certificateParameters - Force
WARNING: Parameter ' EmailAddress ' is obsolete. The email name component is deprecated by the PKIX standard
Certificate written to C:UsersroholtDocumentsDevsandboxhere.pfx
Thumbprint Subject EnhancedKeyUsageList
---------- ------- --------------------
7445433CB2BB4948E12794A167C6725DC214AA84 CN = example.org , O.. . {Server Authentication , Client Authentication}
上述命令產生的證書將具有以下屬性:
發行者和主體專有名稱設定為:
CN=example.org, OU=Sales, O=Umbrella Corporation, L=Omaha, S=Nebraska, C=US, [email protected]
密碼保護(在本例中使用密碼'Your password'
)。
自創建時間起一年有效期(截斷毫秒)。
4096 位元 RSA 金鑰。
基本約束擴展, CertificateAuthority
設定為true
。
指示了Digital Signature
和Key Encipherment
基本金鑰用法。
指示了Server Authentication
和Client Authentication
增強的金鑰用法。
此指令也提供-AdditionalExtension
參數,該參數採用System.Security.Cryptography.X509Certificates.X509Extension
陣列來新增到任何產生的憑證中。
此模組尚不支援在 Linux 世界中大量使用的 PEM 檔案。雖然本身不是證書格式,但它們是證書的常見編碼,我們應該努力以某種方式支援它們。
目前,作者不知道 PowerShell Core 或 .NET Core 本身是否支援 PEM。
此模組產生的憑證擴充功能目前都將Critical
欄位設為false
以提供更大的彈性。
然而,可能需要將其中任何或全部配置為指定為Critical
。理想情況下,這可以在不擾亂已經有大量參數的命令的情況下完成。
目前, ServerAuthentication
和ClientAuthentication
支援增強的金鑰用法(以約束方式,以便於使用)。
理想情況下,可以為此提供更多選擇。
此模組可以提供一組產生描述常用憑證擴充功能的X509Extension
的類別。
該模組已獲得 MIT 許可。請參閱 LICENSE.txt。