今回は、nginxで port#443(ssl) で通信をする際に必要となる証明書についてご説明をさせて頂きます。
nginxで クライアントからのport#443(ssl) のリクエストに対しては、サーバ証明書と中間証明書、秘密鍵(プライベートキー)が必要となります。
※中間証明局CAから署名されていない証明書の場合は中間証明書の必要がありません。
一方、windowsサーバで利用されているのがpfxファイルの証明書です。
pfxとは、KCS#12 の旧称でPersonal Information Exchangeの略です。
サーバ証明書・中間証明書・秘密鍵を共に1つのファイルで格納できる形式を指します。
その為、nginx や apache では取り扱いできないのでそのpfxファイルからサーバ証明書・中間証明書・秘密鍵を取り出す必要があります。
その取り出し方法が以下となります。
openssl pkcs12 -in ./20191203.pfx -clcerts -nokeys -out severcerts.crt
Pfxファイルから中間CA証明書情報を取り出す
openssl pkcs12 -in ./20191203.pfx -cacerts -nokeys -out cyukanCA.crt
SSLサーバー証明書と中間証明書を結合
cat severcerts.crt cyukanCA.crt > sercertCA_combined.cer
Pfxファイルから秘密鍵情報を取り出す。
openssl pkcs12 -in ./20191203.pfx -nocerts -nodes -out himitsu.rsa
秘密鍵情報からパスワードを解除。
openssl rsa -in himitsu.rsa -out himitsu_nopass.key
オプション | 内容 |
-clcerts | クライアントの証明書のみを出力する (CA 証明書は出力しない)。 |
-cacerts | CA 証明書のみを出力する (クライアント証明書は出力しない) 。 |
-nokeys | 秘密鍵情報は一切出力されない。 |
-nocerts | 証明書は一切出力されない。 |
-nodes | desで暗号化しない |
このpfxファイルからサーバ証明書・中間証明書・秘密鍵を取り出す場合はパスワードが必要となりますのでご注意下さい。