PKCS#12証明書(pfx)への変換、分解方法

FQDNライセンスの証明書を、複数のサーバで利用される場合、証明書、中間証明書、秘密鍵をコピーして利用頂く必要がございますが、サーバOSが異なる場合、単純なコピーのみでは利用できない場合があります。

Windowsで利用されるIISに証明書をインストールされている場合、この証明書をエクスポートしてApacheでも利用するためには、

  • IISからPKCS#12証明書のエクスポート
  • ApacheなどのOpenSSLが利用可能な環境にPKCS#12証明書をアップロード
  • OpenSSLコマンドを利用してPKCS#12証明書から秘密鍵を取り出す

事が必要です。

また、その逆にApacheで秘密鍵とCSRを作成して証明書を発行している場合、この証明書をIISでも利用するためには、PKCS#12形式に変換する必要があります。

・PKCS#12証明書(pfx)の分解(秘密鍵の取り出し)方法

  1. PKCS#12証明書をエクスポートし、OpenSSLインストール済みのLinuxサーバにアップロードしてください。
    エクスポートする際、任意のパスワードを設定する必要がありますので、設定したパスワードを控えておきます。
  2. その後、OpenSSLがインストールされたLinux環境で下記コマンド実行します。
    ここでは下記の場合の設定例となります。
  3. 抽出対象ファイル

    PKCS#12証明書  : example.pfx
    パスワード  : examplepass

    出力後のファイル名

    秘密鍵  : example.key

    コマンド

    # openssl pkcs12 -in example.pfx -nocerts -nodes -out example.key -passin pass:examplepass

  4. 秘密鍵出力後、取り出した秘密鍵(example.key)を編集し、

    -----BEGIN PRIVATE KEY----- から
    -----END PRIVATE KEY----- まで

    の文字列のみが残るようにヘッダ部分を削除して保存します。

・PKCS#12証明書(pfx)への変換方法

OpenSSLがインストールされたLinux環境で下記コマンド実行します。
ここでは下記の場合の設定例となります。

変換対象ファイル

証明書  : example.crt
中間証明書  : exampleca.crt
秘密鍵  : example.key

変換後のファイル名・パスワード

PKCS#12証明書  : example.pfx
パスワード  : examplepass

IIS上の識別名

フレンドリ名  : 20190423_example

 フレンドリ名はIIS上の他のフレンドリ名と重複しないように設定してください。

コマンド

# openssl pkcs12 -export -in example.crt -inkey example.key -certfile exampleca.crt -out example.pfx -passout pass:examplepass -name "20190423_example"

 

 サーバ環境やアップデートにより利用出来ない場合がございます。

 記載内容につきましては免責とさせて頂きます。

PKCS#12証明書(pfx)への変換、分解方法

証明書の取得・導入について