curl で PFX ファイルを使う方法
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