pfxファイルから秘密鍵情報を取り出し、パスワードを解除

今回は、nginxで port#443(ssl) で通信をする際に必要となる証明書についてご説明をさせて頂きます。

 

nginxで クライアントからのport#443(ssl)  のリクエストに対しては、サーバ証明書と中間証明書、秘密鍵(プライベートキー)が必要となります。

※中間証明局CAから署名されていない証明書の場合は中間証明書の必要がありません。

 

一方、windowsサーバで利用されているのがpfxファイルの証明書です。

pfxとは、KCS#12 の旧称でPersonal Information Exchangeの略です。

サーバ証明書・中間証明書・秘密鍵を共に1つのファイルで格納できる形式を指します。

その為、nginx や apache では取り扱いできないのでそのpfxファイルからサーバ証明書・中間証明書・秘密鍵を取り出す必要があります。

 

その取り出し方法が以下となります。

 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ファイルからサーバ証明書・中間証明書・秘密鍵を取り出す場合はパスワードが必要となりますのでご注意下さい。