💦

curl で PFX ファイルを使う方法

2024/04/02に公開
curl -v --cert-type P12 --cert ./sample.pfx:<PFX ファイル生成時に設定したパスワード> https://example.com

ググると「.pfx はそのままでは使えず .pem に変換する必要あり」といった情報も出てくるがそんなことはない。

(おまけ)そもそも PFX ファイルって

拡張子についての RFC はたぶん RFC 5958

個人情報交換(PFX)構文標準[P12]は、より一般的にPKCS#12または単にP12と呼ばれ、プライベートキー、証明書、その他の秘密、拡張機能を含む個人ID情報の転送構文です。(略)現在の実装では、ファイル拡張子.pfxと.p12を同じ意味で使用できます。

とのこと。

簡単に言えば、公開鍵とか証明書とかをまとめて送るための規格が PKCS#12 で、そのファイルの拡張子が .pfx になる。クライアント認証などで利用される。

openssl コマンドでファイルの中身を確認できて、例えば sample.pfx というファイルの情報を表示すると以下のようになる。

$ openssl pkcs12 -in sample.pfx -noout -info
MAC: sha1, Iteration 2000
MAC length: 20, salt length: 8
PKCS7 Data
Shrouded Keybag: pbeWithSHA1And3-KeyTripleDES-CBC, Iteration 2000
PKCS7 Encrypted data: pbeWithSHA1And40BitRC2-CBC, Iteration 2000
Certificate bag

これは PKCS#7 形式のデータが2つ格納されていることや、暗号方式などを示している。

PKCS#7 について Wikipedia から抜粋。

RFC 2315 参照。PKI の下でメッセージを署名や暗号化するのに使用される。証明書の配布のためにも用いられる(例えば、PKCS #10メッセージの応答として)。

オプションはこんな感じ。(参考)

-noout
This option inhibits output of the keys and certificates to the output file version of the PKCS#12 file.

-info
Output additional information about the PKCS#12 file structure, algorithms used and iteration counts.

Discussion