pfx形式のSSL証明書をpem形式に変換する
AmazonLinux_CentOS,OperatingSystem,Ubuntu(WSL),セキュリティ関連
Contents
概要
- 今回はなぜかSSL証明書がpfx形式で提供されたため、pem形式に変換して使用した経験を元に記事をまとめます。
- pfx形式とは、秘密鍵(パスワード保護)と証明書が単一のファイルとして格納されているSSL証明書のアーカイブとなります。ルート証明書や中間証明書も一緒に格納できます。標準仕様としては「PKCS #12」に相当。
- pfx形式のSSL証明書は、主にMicrosoftのサービス(AzureやIIS、SQL Serverなど)で使用することが多い。一方、pem形式のSSL証明書は、AWSのACMにインポートする場合やLinuxのApache、NginxなどのWebサーバーで使用します。
pfxファイルからpem形式のサーバー証明書を取り出す
- 下記opensslコマンドを使用して、サーバー証明書を取り出します。
- openssl pkcs12 -in <pfxファイル名> -clcerts -nokeys -out <任意のサーバー証明書ファイル名>
- コマンド入力時に、パスフレーズの入力が必要となります。pfxファイルをエクスポートする際に設定したパスフレーズを入力します。
- pem形式の証明書は、
-----BEGIN CERTIFICATE-----
から始まり、-----END CERTIFICATE-----
で終わります。
niikawa@niikawa1:~$ openssl pkcs12 -in sample.com.pfx -clcerts -nokeys -out sample.com_servercert.pem.cer
Enter Import Password:
pfxファイルからpem形式のCA証明書を取り出す
- 下記opensslコマンドを使用します。
- openssl pkcs12 -in <pfxファイル名> -cacerts -nokeys -out <任意のCA証明書ファイル名>
- コマンド入力時に、パスフレーズの入力が必要となります。pfxファイルをエクスポートする際に設定したパスフレーズを入力します。
- pem形式の証明書は、
-----BEGIN CERTIFICATE-----
から始まり、-----END CERTIFICATE-----
で終わります。
niikawa@niikawa1:~$ openssl pkcs12 -in sample.com.pfx -cacerts -nokeys -out sample.com_cacert.pem.cer
Enter Import Password:
証明書の見方
- 下記opensslコマンドを使用して、サーバー証明書 or CA証明書を確認します。
- openssl x509 -text -noout -in <証明書ファイル名>
- 証明書を確認する際の基本的なポイントは、下記の通りです。
- Version(バージョン)
- Serial Number(シリアル番号)
- Issuer(発行者)
- Validity(有効期間の開始と満了)
- Subject(主体者)
- Subject Public Key Info(主体者の公開鍵アルゴリズム、主体者の公開鍵)
- また、X509v3 extensionsセクションのBasic ConstraintsにあるCA属性を確認することで、サーバー証明書かCA証明書かを判断します。CA属性は、下記の通り。
- CA:FALSE → サーバー証明書
- CA:TRUE → CA証明書
- opensslコマンドのサンプルはこちらを参照。
pfxファイルからpem形式の秘密鍵を取り出す
- 下記opensslコマンドを使用します。(秘密鍵ファイルの暗号化あり)
- openssl pkcs12 -in <pfxファイル名> -nocerts -out <任意の秘密鍵ファイル名>
- コマンド入力時に、パスフレーズの入力が必要となります。pfxファイルをエクスポートする際に設定したパスフレーズを入力します。
- 暗号化されている秘密鍵ファイルは、
-----BEGIN ENCRYPTED PRIVATE KEY-----
から始まり、-----END ENCRYPTED PRIVATE KEY-----
で終わります。
niikawa@niikawa1:~$ openssl pkcs12 -in sample.com.pfx -nocerts -out sample.com.key
Enter Import Password:
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
- 下記opensslコマンドを使用します。(秘密鍵ファイルの暗号化なし)
- openssl pkcs12 -in <pfxファイル名> -nocerts -nodes -out <任意の秘密鍵ファイル名>
- コマンド入力時に、パスフレーズの入力が必要となります。pfxファイルをエクスポートする際に設定したパスフレーズを入力します。
- 暗号化されていない秘密鍵ファイルは、
-----BEGIN PRIVATE KEY-----
から始まり、-----END PRIVATE KEY-----
で終わります。
niikawa@niikawa1:~$ openssl pkcs12 -in sample.com.pfx -nocerts -nodes -out sample.com.key
Enter Import Password:
関連情報
AmazonLinux_CentOS,OperatingSystem,Ubuntu(WSL),セキュリティ関連
Posted by takaaki