拡張子 pfx の証明書・秘密鍵の情報を確認する方法

経緯

拡張子が pfx 形式のSSL証明書の情報を確認しようとしたのですが、ググった情報で引っかかったのでメモ。

現象

自分の確認が甘かったのですが、経緯としては OpenSSL を使用して当該 pfx ファイルから情報取得をした際に、コマンドを打つ度に秘密鍵が変化しているっぽく見えたことから違和感を覚えたのが始まりでした。

# openssl pkcs12 -info -in Messerschmitt-Me509.pfx 
Enter Import Password:

## 略

Verifying - Enter PEM pass phrase:
-----BEGIN ENCRYPTED PRIVATE KEY-----

## 略

-----END ENCRYPTED PRIVATE KEY-----
PKCS7 Data
Certificate bag
Bag Attributes

## 略

-----BEGIN CERTIFICATE-----

## 略

-----END CERTIFICATE-----
Certificate bag
Bag Attributes: <Empty Attributes>

## 略

-----BEGIN CERTIFICATE-----

## 略

-----END CERTIFICATE-----

openssl pkcs12 -info -in {pfxファイル} で確認したところ、秘密鍵・公開鍵証明書・中間証明書の3つ共情報を確認できた……ように見えました。

が、比較のため他のファイル (中身は同一を想定) を同コマンドで確認すると、公開鍵証明書・中間証明書は一致したのですが秘密鍵が一致しません。

そんなバカな、と思ってもう一度最初のファイルに対してコマンドを打つと、これも秘密鍵が変化していました。

原因

上述の結果に記載があるのですが、 ENCRYPTED PRIVATE KEY なのですよね。そう、暗号化された秘密鍵なので、平文ではないのです。

詳しく追いかけていないですが、コマンドを実行する度に秘密鍵のみ暗号化の処理をしているため、都度変化しているように見えたようです。

対処

別オプション指定で一度秘密鍵をファイルにエクスポートし、そのファイルを cat 等で参照すれば変化せず、平文の秘密鍵を確認することができました。

# openssl pkcs12 -in Messerschmitt-Me509.pfx -nocerts -nodes -out Messerschmitt-Me509-key.pem
Enter Import Password:

# cat Messerschmitt-Me509-key.pem
Bag Attributes

## 略

Key Attributes

## 略

-----BEGIN PRIVATE KEY-----

## 略

-----END PRIVATE KEY-----

ということで、 ENCRYPTED の一文を見逃していたためにプチ嵌まりをしてしまったのでした……。

参考

この記事を書いた人

アルム=バンド

フロントエンド・バックエンド・サーバエンジニア。LAMPやNodeからWP、Gulpを使ってejs,Scss,JSのコーディングまで一通り。たまにRasPiで遊んだり、趣味で開発したり。