Windows10 Certreq.exe ユーティリティを使用してSANを含む証明書要求を作成する方法についての情報です。実は、WindowsでCSRを作成する際にはIISでしか実施したことがなく、IISが入っていないサーバ以外のWindowsサーバだったり、Windows10から証明書要求を作成する場合は、Certreq.exe ユーティリティが使用可能ですというのを最近知りました。
SAN形式の証明書を発行したい場合などは、これを使用してiniファイルに含めることが可能です。
ちなみに、別の記事でも何度も紹介していますが、ADCSにてSAN形式の証明書を発行する場合は、レジストリの変更が必要です。
certutil -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2
net stop certsvc
net start certsvc
実機は構築中なので、実際の証明書の発行は別の機会にということで、今回はマイクロソフトの公開情報からの手順の抜粋です。
「参考」
セキュリティで保護された LDAP 証明書にサブジェクトの別名を追加する方法
Certreq.exe ユーティリティを使用して証明書要求を作成および送信する方法の抜粋です。
①証明書要求の設定を指定する .inf ファイルを作成します。次のサンプル コードを使用して .inf ファイルを作成できます。
[Version]
Signature="$Windows NT$
[NewRequest]
Subject = "CN=corpdc1.fabrikam.com" ; must be the FQDN of domain controller
EncipherOnly = FALSE
Exportable = FALSE ; TRUE = Private key is exportable
KeyLength = 1024 ; Common key sizes: 512, 1024, 2048,
; 4096, 8192, 16384
KeySpec = 1 ; Key Exchange
KeyUsage = 0xA0 ; Digital Signature, Key Encipherment
MachineKeySet = True
ProviderName = "Microsoft RSA SChannel Cryptographic Provider"
ProviderType = 12
RequestType = CMC; Omit entire section if CA is an enterprise CA
[EnhancedKeyUsageExtension]
OID=1.3.6.1.5.5.7.3.1 ; Server Authentication[RequestAttributes]
CertificateTemplate = WebServer ;Omit line if CA is a stand-alone CA
SAN="dns=.fabrikam.com&dns=ldap.fabrikam.com"
Subject、テンプレート、SANおよびコメントの部分は箇所は変更が必要です。
②このファイルを Request.inf という名前で保存します。
③コマンド プロンプトを起動します。
④コマンド プロンプトで次のコマンドを入力し、Enter キーを押します。
certreq -new request.inf certnew.req
このコマンドは、Request.inf ファイルの情報を使用して、.inf ファイルの RequestType 値で指定されている形式で要求を作成します。要求が作成されると、公開キーと秘密キーの組が自動的に生成され、ローカル コンピュータの登録要求ストアの要求オブジェクトに格納されます。
⑤コマンド プロンプトで次のコマンドを入力し、Enter キーを押します。
certreq -submit certnew.req certnew.cer
このコマンドは、証明書要求を CA に送信します。複数の CA が環境内にある場合は、コマンド ラインで -config スイッチを使用して、要求を特定の CA に送信することができます。-config スイッチを使用しなかった場合は、要求の送信先の CA を選択するように求められます。
-config スイッチでは、次の形式を使用して特定の CA を参照します。
computername\Certification Authority Name
たとえば、CA の名前が Corporate Policy CA1 でドメイン名が corpca1.fabrikam.com の場合に、certreq コマンドを –config スイッチと一緒に使用して CA を指定するには、次のコマンドを入力します。
certreq -submit -config "corpca1.fabrikam.com\Corporate Policy CA1" certnew.req certnew.cer
この CA がエンタープライズ CA で、証明書要求を送信するユーザーがテンプレートに対する読み取りと登録のアクセス許可を持っている場合、要求は送信されます。発行された証明書は、Certnew.cer ファイルに格納されます。CA がスタンドアロン CA の場合、証明書要求は、CA 管理者により承認されるまで保留状態に置かれます。certreq -submit コマンドの出力には、送信した要求の要求 ID 番号が含まれます。証明書が承認されると直ちに、証明書は要求 ID 番号を使用して取得できるようになります。
⑥要求 ID 番号を使用して証明書を取得します。これを行うには、次のコマンドを入力し、Enter キーを押します。
certreq -retrieve RequestID certnew.cer
ここでも、-config スイッチを使用して、特定の CA から証明書要求を取得することができます。-config スイッチを使用しなかった場合は、証明書の取得元の CA を選択するように求められます。
⑦コマンド プロンプトで次のコマンドを入力し、Enter キーを押します。
certreq -accept certnew.cer
取得した証明書は、インストールする必要があります。このコマンドは、証明書を適切なストアにインポートし、手順 4. で作成された秘密キーにリンクします。
ちょっとわかりにくいので、次回は実機で一通り試してみたいと思います。