PFX ファイル形式とは?
.pfx ファイルは、もともとRSA Laboratoriesによって開発され、現在はRFC 7292で規定されている PKCS #12 暗号化標準に関連付けられています。
.pfx 拡張子を持つファイルは、バイナリのDERエンコードされたコンテナ内に、暗号化されデジタル署名された暗号オブジェクトを格納します。各 .pfx ファイルは「SafeBags」と呼ばれる単位に分割されており、これらは個別に暗号化や署名を行うことも可能です。PKCS #12標準では、SafeBagsを秘密鍵、X.509証明書、証明書チェーン、およびその他のセキュリティデータの保存に適したタイプにさらに分類しています。
.pfx は、秘密鍵とそれに対応する証明書チェーンを1つのパスワード保護されたファイルにまとめるために最も一般的に使用されます。典型的な用途には、サーバー間でのTLS/SSL証明書のエクスポート、コード署名用IDの配布、デバイス間でのS/MIME資格情報の転送などがあります。
.pfx と .p12 は機能的に同一です。Windowsのツールでは .pfx が使用される傾向にあり、macOSやLinuxでは .p12 が好まれます。どちらも openssl pkcs12 コマンドを使用して、テキスト形式の .pem に変換できます。スタンドアロンの .cer 証明書とは異なり、.pfx ファイルは証明書と共に秘密鍵を保持しているため、鍵を証明書と一緒に移動させる必要がある場合に最適な形式です。
セキュリティと安全性
リスク: HIGHPFXには「秘密鍵」が含まれているため、ユーザーが扱うファイルの中でも最も機密性の高いものの一つです。ファイルとパスワードを入手した第三者は、証明書の所有者になりすましてコードや文書に署名したり、その TLS ID でサーバーを立ち上げたりすることができてしまいます。PFXを保護せずにメールで送信したり、ソース管理にコミットしたりしないでください。強力なエクスポートパスワードを使用し、安全に保管してください(インポート後はファイルを削除するのが理想的です)。心当たりのない .pfx 添付ファイルは不審なものとして扱ってください。PFXの生成や操作には、信頼できるツール(OSのウィザードや OpenSSL)のみを使用し、鍵やパスワードを盗み取る可能性がある「証明書ビューア」などのWebサイトは利用しないでください。
形式の詳細
概要PFX ファイルを開くプログラム
.pfx をダブルクリックすると「証明書インポート ウィザード」が開きます。パスワードを入力し、ストア(個人/現在のユーザーまたはローカル コンピューター)を選択します。 certutil -dump file.pfx または PowerShell の Get-PfxData -FilePath file.pfx / Import-PfxCertificate を使用します。 .pfx を追加します。ファイルの内容を文書として表示することはありません。 .pfx をダブルクリックすると「キーチェーンアクセス」にインポートされます(ファイルのパスワードを入力)。その後、各アプリでそのIDが利用可能になります。 技術的詳細
詳細仕様| コンテナのエンコード | ASN.1上のバイナリ DER (Distinguished Encoding Rules)。専用のパーサーなしでは人間が読むことはできません |
| MIMEタイプ | application/x-pkcs12 |
| マジックバイト | オフセット0に 30 82 (2バイト長の ASN.1 DER SEQUENCE)。他のDERエンコード形式と共通しているため、バイト列だけでなく拡張子やMIMEタイプで識別します |
| 内部構造 | 階層構造:PFX → AuthenticatedSafe → SafeContents → SafeBags。各 SafeBag は1つの型定義された暗号オブジェクトを保持します |
| SafeBagのタイプ | KeyBag, PKCS8ShroudedKeyBag, CertBag, CRLBag, SecretBag, SafeContents - RFC 7292で定義された6つの公式タイプ |
| パスワード保護 | アーカイブ全体および個々の SafeBag は、パスワードベースの暗号化により、ユーザーが選択したパスフレーズで個別に暗号化できます |
| 暗号化アルゴリズム | 最新のスタックでは AES-256-CBC および 3DES-CBC。レガシーファイルでは RC2 や RC4 が見られることもあります(非推奨 - 新規作成時は避けてください) |
| MAC整合性 | 改ざんを検知するため、HMAC(レガシーでは SHA-1、現代の実装では SHA-256 または SHA-384)が AuthenticatedSafe 構造をカバーします |
| 鍵導出 | PBKDF1 (RFC 7292 付録B) または設定可能な反復回数を持つ PBKDF2 により、パスワードベースの暗号化をブルートフォース攻撃から保護します |
| Windows名 vs IETF名 | `.pfx` は Microsoft が作成した当初の拡張子、`.p12` は IETF 標準の名称です。両者はバイナリレベルで同一であり、完全に互換性があります |
| 複数オブジェクトの保存 | 1つの `.pfx` に複数の証明書と鍵を含めることができます。例えば、エンドエンティティ、中間、ルートCAのフルチェーンと秘密鍵を格納できます |
| 一般的なCLI変換 | `openssl pkcs12 -in file.pfx -out file.pem -nodes` で PEM テキストに抽出。`openssl pkcs12 -export -out file.pfx` で PEM 入力を新しいアーカイブにまとめます |
| プラットフォームのサポート | Windows(証明書インポート ウィザード, certutil, PowerShell)、macOS(キーチェーンアクセス)、iOS, Android, Java (keytool)、およびほとんどの TLS ライブラリでネイティブサポート |
| 典型的なユースケース | TLS/SSLサーバー証明書のデプロイ、コード署名用ID、S/MIMEメール鍵、VPNクライアント資格情報、スマートカードのプロビジョニング |
| リリース日 | PKCS #12 v1.0 published 1999 by RSA; Microsoft .pfx predates and feeds into it |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | www.rfc-editor.org |
PFX の変換
コミュニティ Q&A
ユーザーからの質問よくある質問
PFXファイルとは何ですか?
WindowsでPFXファイルを開くにはどうすればよいですか?
certutil -dump file.pfx または OpenSSL を使用してください。PFXは「読み取る」ものではなく「インポート」するものです。.pfx と .p12 の違いは何ですか?
.pfx は Microsoft による名称で、.p12 はより一般的な名称です。通常、拡張子を書き換えるだけで相互に利用可能です。PFXは CER/CRT 証明書とどう違うのですか?
.cer/.crt は公開証明書のみを保持し、共有しても安全です。一方、.pfx は秘密鍵も含んでおり、これは機密情報です。完全な身元を再現できるため、厳重に保護する必要があります。Apache/Nginx用にPFXから証明書と鍵を取り出すには?
openssl pkcs12 -in file.pfx -clcerts -nokeys -out cert.pem、秘密鍵の抽出には ... -nocerts -nodes -out key.pem を実行します。