目次:
このモジュールは正式にはサポートされていません。これは、HTTPS 機能のテストを簡素化するために自己署名証明書を生成するための便利なモジュールとして作成されました。
このモジュールは実稼働シナリオでは使用しないでください。テスト目的のみで自己署名証明書を作成するように設計されています。
このモジュールは、PowerShell Core と Windows PowerShell 5.1 の両方で自己署名証明書を生成するための便利なクロスプラットフォームの方法となるように設計されています。
.NET Core には独自のクロスプラットフォーム暗号化/証明書 API がすでに埋め込まれているため、このモジュールはバイナリ依存関係のないネイティブ PowerShell スクリプト モジュールです。
このモジュールの目標には次のようなものがあります。
X509HighlySpecificCryptoObject
の割り当てと操作はありませんここにリストされている、自己署名証明書生成の他のいくつかの代替案を検討してみるとよいでしょう。
PkiClient モジュールからの Windows PowerShell のNew-SelfSignedCertificate
コマンドレット。
次のように 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 ネイティブのオプションと比較すると有利ではない可能性があり、PFX 形式ではなく PEM 形式を使用します。
単純な証明書を作成するには、次のようにします。
> New-SelfSignedCertificate
Certificate written to C:UsersroholtDocumentsDevsandboxcertificate.pfx
Thumbprint Subject EnhancedKeyUsageList
---------- ------- --------------------
A51B016324B5D2F11340CDCC52004B8129C88D3B CN = localhost
これにより、 localhost
の CWD に、 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'
です)。
作成時から始まる 1 年間の有効期間 (ミリ秒は切り捨て)。
4096 ビット RSA キー。
CertificateAuthority
がtrue
に設定された基本的な制約拡張。
Digital Signature
とKey Encipherment
基本的なキーの使用法が示されています。
Server Authentication
とClient Authentication
拡張キーの使用法が示されています。
このコマンドは、 System.Security.Cryptography.X509Certificates.X509Extension
の配列を取得して、生成された証明書に追加する-AdditionalExtension
パラメーターも提供します。
このモジュールは、Linux の世界で頻繁に使用される PEM ファイルをまだサポートしていません。それ自体は証明書形式ではありませんが、証明書の一般的なエンコーディングであるため、何らかの方法でサポートするよう努める必要があります。
現時点では、作成者は PowerShell Core または .NET Core にネイティブな PEM サポートを認識していません。
このモジュールによって生成される証明書拡張機能は現在すべて、柔軟性を高めるためにCritical
フィールドをfalse
に設定しています。
ただし、これらの一部またはすべてをCritical
として指定するように構成することが望ましい場合があります。理想的には、これは、すでに多数のパラメータがあるコマンドを混乱させることなく実行できます。
現在、 ServerAuthentication
およびClientAuthentication
では、拡張されたキーの使用法がサポートされています (使いやすさのため、制限された方法で)。
理想的には、これにより多くのオプションが利用可能になるはずです。
このモジュールは、一般的に使用される証明書拡張機能を記述するX509Extension
を生成するクラスのセットを提供できます。
このモジュールは MIT ライセンスを取得しています。 LICENSE.txtを参照してください。