P12 ファイル形式とは?
.p12ファイルは、1つ以上の X.509 証明書とそれに対応する秘密鍵を、パスワードで保護された単一のバイナリファイルにまとめた PKCS #12 アーカイブです。この形式はもともと RSA Laboratories によって定義され、現在は IETF RFC 7292 (2014) によって管理されています。TLS/SSL 証明書をあるサーバーからエクスポートして別のサーバーにインポートする場合や、コード署名やメール署名の識別情報を配布する場合など、システム間で資格情報を転送するために広く使用されています。
バイナリコンテンツは DER (Distinguished Encoding Rules) でエンコードされ、ネストされた ASN.1 オブジェクトとして構造化されています。ファイルは DER バイトの 30 82 で始まります。これは ASN.1 SEQUENCE を示しますが、これらのバイトだけでは PKCS #12 に固有のものではありません。パスワードベースの暗号化 (PBE) により、秘密鍵と(オプションで)証明書の両方が保護されます。現代の実装では AES-256-CBC または 3DES-CBC が好まれますが、古いソフトウェアでは依然として RC2 ベースのアーカイブが作成されることがあります。
.p12 と .pfx は互換性があります。どちらも同一の PKCS #12 構造を保持しており、.pfx という名称は RFC 以前の Microsoft に由来するものです。Windows では、.p12 ファイルをダブルクリックすると証明書インポートウィザードが開きます。macOS では、キーチェーンアクセスがネイティブにインポートを処理します。Linux では、openssl pkcs12 が標準的なコマンドラインツールです。
関連する形式には、.pem(テキストエンコードされた証明書、バンドルされていない)、.cer(証明書のみ、秘密鍵なし)、.jks(Java KeyStore - Java エコシステムにおける同等品)があります。
セキュリティと安全性
リスク: HIGH.p12 には「秘密鍵」が含まれているため、ユーザーが扱うファイルの中でも最も機密性の高いものの一つです。ファイルとパスワードを入手した第三者は、証明書の所有者になりすますことができます(コードやドキュメントへの署名、S/MIME メールの送信/復号、所有者としてのサーバー構築など)。.p12 を保護せずにメールで送信したり、ソース管理にコミットしたりしないでください(CI/CD リポジトリでの漏洩が多発しています)。強力なエクスポートパスワードを使用し、インポート後はファイルを削除してください。予期しない .p12 添付ファイルは疑わしいものとして扱ってください。.p12 ファイルは信頼できるツール(OS のウィザード、OpenSSL、キーチェーン)のみで扱い、鍵を盗み出す可能性がある出所不明の «証明書ビューア» サイトなどは決して利用しないでください。
形式の詳細
概要P12 ファイルを開くプログラム
技術的詳細
詳細仕様| コンテナタイプ | 証明書チェーンと秘密鍵を単一のファイルに保存する、暗号化されたマルチオブジェクトバンドル |
| バイナリエンコーディング | DER (Distinguished Encoding Rules)、ネストされた ASN.1 オブジェクトとして構造化 |
| MIMEタイプ | application/x-pkcs12 |
| マジックバイト | オフセット 0 に 30 82 - DER ASN.1 SEQUENCE タグとそれに続く 2 バイトの長さフィールド。 .p12 固有ではありません |
| パスワード保護 | 秘密鍵バッグには必須。証明書バッグにはオプションで個別に適用可能 |
| 対称暗号化 | AES-256-CBC (現代のデフォルト)、レガシーな実装では 3DES-CBC および RC2 |
| 鍵導出関数 | RFC 7292 に基づく PKCS #12 KDF (PBKDF1 バリアント)。RFC 9579 (2024) により PBKDF2 および PBMAC1 が追加 |
| MAC整合性 | AuthenticatedSafe 構造に対して計算された HMAC。SHA-1 (従来) または SHA-256 (現代) |
| 証明書ストレージ | エンドエンティティ証明書、中間 CA、ルート CA を含むフルチェーンを 1 つのアーカイブでサポート |
| サポートされる秘密鍵タイプ | RSA, DSA, ECDSA。実用的には RSA-2048 または ECDSA P-256/P-384 が一般的 |
| フレンドリーネーム | SafeBag の localKeyId または friendlyName 属性 (OID 1.2.840.113549.9.20) として保存されるエントリごとの表示名 |
| 互換形式 | .pfx は同じ PKCS #12 バイナリ構造に対する Microsoft 由来の名称であり、ファイル内容は同一 |
| プラットフォームサポート | Windows (certutil, MMC 証明書スナップイン), macOS (キーチェーンアクセス), iOS, Android でネイティブサポート |
| 典型的なユースケース | TLS/SSL 証明書のエクスポートとインポート、コード署名、S/MIME メール識別情報、クライアント認証 |
| 典型的なファイルサイズ | 単一の鍵と証明書で 1-10 KB。フル証明書チェーンが含まれる場合はより大きくなります |
| リリース日 | PKCS #12 v1.0 published 1999 by RSA Laboratories; now RFC 7292 (2014) |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | www.rfc-editor.org |
P12 の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。P12 ファイルについて最初の質問をしてみましょう。