本文へスキップ
ecdsa.com

PKCS #12(PFX)

秘密鍵とその証明書チェーンをまとめて、ブラウザー、Windows、macOS、Java、Android にインポートできるようにする、RFC 7292 のパスワード保護されたアーカイブ形式で、通常は .p12 または .pfx として保存されます。
別表記PFXP12.p12.pfxPKCS#12

PKCS #12 ファイルは PFX 構造です。フレンドリ名とローカル鍵 ID が付いたバッグ(keyBag、pkcs8ShroudedKeyBag、certBag、crlBag、secretBag)を格納する認証された SafeContents と、パスワードから導出される完全性のための MAC で構成されます。RFC 9579(2024年)は PBMAC1 を追加し、PKCS #12 固有の旧来の MAC 鍵導出を PBKDF2 に置き換えています。

互換性を左右するのは、アルゴリズムのデフォルト設定です。OpenSSL 3.6.5 の pkcs12 -export は、証明書と鍵の両方に PBKDF2(反復回数 2,048 回)を使った AES-256-CBC を、MAC に HMAC-SHA-256 を使って書き出します。-legacy を指定すると、証明書に RC2-40、鍵に 3DES、MAC に HMAC-SHA-1 を使って書き出し、古いバージョンの Windows、macOS、Java ではこちらが必要です。Java は JDK 9 以降、PKCS #12 をデフォルトのキーストアタイプとしています。

「mac verify failure」のようなエラーは通常パスワードの誤りを意味し、「unsupported algorithm RC2-40-CBC」は、旧形式のファイルを OpenSSL のレガシープロバイダーなしで開いたことを意味します。PFX インスペクターは、鍵をエクスポートせずに、バッグとアルゴリズムをローカルで一覧表示します。

規格と参考文献

すべての用語