認証局に SSL 証明書を発行を依頼する際には CSR(Certificate Signing Request) を使用します。
IIS が稼働していれば、IIS で CSR は作成できますが、IIS が稼働していない場合にどうやって CSR を作るか...
色々調べていると、Windows には CSR を作成する certreq.exe が入っているって事を初めて知りました(恥
Certreq の説明はこちら
日本語(機械翻訳がイケてないですけど)
https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/certreq_1?WT.mc_id=WD-MVP-36880
まずは CSR に必要な情報をテキストファイルで作ります。
[CSR_Base.inf]
[Version] Signature="$Windows NT$" [NewRequest] Subject = "属性情報" Exportable = TRUE KeyLength = 2048 KeySpec = 1 KeyUsage = 0xA0 MachineKeySet = True ProviderName = "Microsoft RSA SChannel Cryptographic Provider" HashAlgorithm = sha256 RequestType = PKCS10 ProviderType = 12 [EnhancedKeyUsageExtension] OID=1.3.6.1.5.5.7.3.1 |
設定する箇所は「属性情報」です。
C= | 2桁の国コード。日本なら JP |
ST= | 組織の所在地: 都道府県名 |
L= | 組織の所在地: 都市名 |
O= | 組織名 |
CN= | 証明を利用するホスト名、コモンネーム(www.cotoso.com とか *.cotoso.com) |
例えば、東京都港区にある Cotoso という組織が sts.cotoso.com の CSR を作る場合は以下のようになります。
Subject = "C=JP,ST=Tokyo,L=Minato,O=Contoso,CN=sts.cotoso.com" |
Subject のデフォルトの区切り文字はカンマなので、組織名とかにカンマを含めることはできません。
Subject の組織名に「Co.,Ltd」みたいな感じでカンマを含ませたい場合は、区切り文字はセミコロンに変更します。
区切り文字をセミコロンに変更する場合は、X500NameFlags = CERT_NAME_STR_SEMICOLON_FLAG を追加します。
こんな感じですね
Subject = "C=JP;ST=Tokyo;L=Minato;O=Contoso
Co.,Ltd;CN=sts.cotoso.com" X500NameFlags = CERT_NAME_STR_SEMICOLON_FLAG |
これを読み込ませて CSR.req を出力する場合は、以下のようにします。(要管理権限)
C:\> certreq -new -f CSR_Base.inf CSR.req |
認証局から発行されたX.509 証明書(.cer)あるいは、PKCS#7 証明書(.p7b)を以下コマンドで取り込みます。
(バックグラウンドで発行された秘密鍵と結合させるので、CSR を発行した PC で実行する必要あり)
certreq -accept 証明書 |
cert.cer を取り込む場合は以下のようにします。
C:\> certreq -accept cert.cer |
AD FS 等で使用する PKCS#12 証明書(.pfx) にする場合は、certlm.msc を使って秘密鍵付き(すべての拡張プロパティ)で pfx にエクスポートします。
certlm.msc で取り込んだ証明書を PKCS#12証明書(.pfx) にエクスポート
秘密鍵をエクスポート
全ての拡張プロパティをエクスポート
パスワードの設定
出力するファイル名
GUI ではなく、PowerShell で Export する場合はこんな感じ
PS C:\> Get-Item Cert:\LocalMachine\My\* PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\My Thumbprint Subject ---------- ------- BA244FEAAF99D3A2C23EFC4A8C3E8F4DF5715B63 CN=sts.contoso.com PS C:\> $Cert = Get-Item Cert:\LocalMachine\My\BA244FEAAF99D3A2C23EFC4A8C3E8F4DF5715B63 PS C:\> $Password = ConvertTo-SecureString -AsPlainText -Force "P@ssw0rd" PS C:\> Export-PfxCertificate -Cert $Cert -FilePath "C:\Cert\cert.pfx" -Password $Password ディレクトリ: C:\Cert Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 2017/09/29 18:21 5857 cert.pfx PS C:\> |
Copyright © MURA All rights reserved.