
オレオレ証明書の作成
作成する証明書のタイプは「-Type」で指定します。下記5つから選択が可能です。
- SSLServerAuthentication
- CodeSigningCert
- DocumentEncryptionCert
- DocumentEncryptionCertLegacyCsp
- Custom
今回は「TLSサーバー証明書の作成」「コードサイニング証明書」を作ってみます。
TLSサーバー証明書の作成
「-Type SSLServerAuthentication」でTLSサーバー証明書の作成が可能です。
「-Type」を未指定の場合もTLSサーバー証明書になります。
New-SelfSignedCertificate -DnsName "www.test.com", "www2.test.net" -CertStoreLocation "cert:\LocalMachine\My"
この例では、証明書の保存場所を「LocalMachine」としているので、管理者で実行する必要があります。
作成した証明書は「証明書の管理」から確認が可能です。
コードサイニング証明書の作成
「-Type CodeSigning」でコードサイニング証明書の作成が可能です。
この例では、パラメータを配列にしてコマンドレットの引数として渡してみます。
$params = @{ Subject = 'CN=CodeSigningCert' Type = 'CodeSigning' CertStoreLocation = 'Cert:\CurrentUser\My' HashAlgorithm = 'sha256' } New-SelfSignedCertificate @params
作成した証明書は「証明書の管理」から確認が可能です。
秘密鍵と証明書のエクスポート
秘密鍵と証明書をPFX形式でエクスポートできます。
下記ではGUIで操作していますが、「certutil.exe」でも実施可能です。
証明書ストアで証明書を右クリック > すべてのタスク > エクスポート
秘密鍵を含んでエクスポートするので「はい、秘密キーをエクスポートします」を選択する
「証明書のパスにある証明書を可能であればすべて含む」は、自己署名証明書の場合はどちらでも良い
「すべての拡張プロパティをエクスポートする」はチェックする
「証明書のプライバシーを有効にする」をチェックすると、秘密鍵だけでなく証明書もパスフレーズで暗号化される
パスフレーズと出力パスを指定するとPFX形式で出力されます。
PFX形式からPEM形式への変換は「OpenSSL」や「Convert-PfxToPem.ps1」で実施可能です。
OpenSSLを利用した場合のコマンドは以下の通りです。
> openssl pkcs12 -in <PFX形式ファイル名> -nocerts -nodes -out <秘密鍵ファイル名> > openssl pkcs12 -in <PFX形式ファイル名> -clcerts -nokeys -out <証明書ファイル名>