ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
要点
- PFX / P12 は PKCS#12 規格に基づくバイナリ証明書バンドル。証明書 + 中間 CA + 秘密鍵を 1 ファイルにまとめ、パスワードで暗号化する。
- Windows 系 (IIS、Authenticode コード署名、Azure App Service) で標準。macOS の Keychain も直接インポート可。
- 拡張子
.pfx(Microsoft 系) と.p12(PKCS#12 由来) は同じ形式の別名。 - OpenSSL の
pkcs12サブコマンドで PEM ⇔ PFX を相互変換できる。
概要
PEM や CRT 単体では証明書と秘密鍵を別ファイルで扱う必要があり、配布や移行で「片方だけ送ってしまった」「鍵が漏れた」といった事故が起きやすい。PKCS#12 (RFC 7292) はこの問題を解決するために、X.509 証明書チェーンと秘密鍵を一括バイナリ化し、パスフレーズで暗号化する形式として定められた。
Microsoft が早期から PFX として採用したため Windows ファミリーでは事実上の標準で、IIS の証明書バインドや Authenticode 署名鍵 (signtool の /f 引数) はほぼ PFX を要求する。Java の PKCS12 キーストアや Kubernetes Ingress Controller の一部、Citrix / F5 アプライアンスでも採用される。
内部構造
PKCS#12 は ASN.1 構造で、外側に MAC (Message Authentication Code) を伴う「AuthSafe」があり、その中に複数の SafeBag (CertBag / KeyBag / ShroudedKeyBag など) が並ぶ。秘密鍵を保持する KeyBag は PBE (Password-Based Encryption)で暗号化される。歴史的に使われた pbeWithSHAAnd3-KeyTripleDES-CBC + RC2 のレガシー暗号と、近年の AES-256-CBC + PBKDF2 の 2 系統があり、古い OS (Windows Server 2008 R2 等) との互換性で問題が起きやすい。
ファイル全体は冒頭から DER バイナリで、テキストで読むことはできない。中身を確認するには OpenSSL の -info オプションを使うのが定番。
主な用途
- IIS への証明書インストール: 「証明書のインポート」で .pfx を選び、パスワードを入れてバインドするのが基本フロー。
- コード署名証明書の保管: EV コード署名以外は PFX で配布されることが多い。
signtool sign /f mycode.pfx。 - ロードバランサ / WAF へのアップロード: Azure Application Gateway、AWS ALB の一部、F5 BIG-IP など。
- S/MIME メール鍵の個人エクスポート: Outlook や Apple Mail の鍵バックアップ。
関連形式との比較
- PEM: テキスト、複数ファイルに分けがち、パスワード保護は鍵のみ任意。
- JKS (Java KeyStore): Java 独自バイナリ。JDK 9 以降は PKCS12 がデフォルトに変更され、JKS は徐々に縮小。
- P7B (.p7b): 証明書チェーンのみで秘密鍵は含まない。PKCS#12 と混同しがちだが用途が異なる。
- BKS (Bouncy Castle): Android 旧版で使われた独自形式。最近はあまり見ない。
コマンド・ツール
# PEM 群 (証明書 + 秘密鍵 + 中間 CA) を PFX にまとめる
openssl pkcs12 -export \
-inkey key.pem \
-in cert.pem \
-certfile chain.pem \
-name "myserver" \
-out bundle.pfx
# PFX を分解 (証明書と鍵を別 PEM へ)
openssl pkcs12 -in bundle.pfx -clcerts -nokeys -out cert.pem
openssl pkcs12 -in bundle.pfx -nocerts -nodes -out key.pem
# 中身の確認 (パスフレーズ要求)
openssl pkcs12 -in bundle.pfx -info -nodes
# Windows (PowerShell) で証明書ストアへ
Import-PfxCertificate -FilePath bundle.pfx `
-CertStoreLocation Cert:\LocalMachine\My `
-Password (Read-Host -AsSecureString)
# Java keystore (PKCS12) に変換
keytool -importkeystore -srckeystore bundle.pfx \
-srcstoretype PKCS12 \
-destkeystore mykeystore.p12 \
-deststoretype PKCS12
注意点
- パスフレーズの強度: PFX は鍵入りなので漏洩リスクが大きい。8 文字未満や弱い辞書語は避け、配布もパスフレーズと別経路で。
- レガシー暗号互換性: OpenSSL 3.x はデフォルト暗号が AES に変わり、古い Windows / Java で読めない事故が頻発。互換性が要るときは
-legacyや-keypbe/-certpbeを明示。 - Authenticode の HSM 化: 2023 年以降の OV/EV コード署名は PFX 配布が原則禁止になり、トークン or クラウド HSM に移行。新規調達時は要確認。
- エクスポート可能フラグ: Windows で「秘密キーをエクスポート可能にする」を忘れると、後で PFX に戻せず鍵をロストする。
- バックアップ: PFX は単独でサーバ復旧の鍵そのもの。漏洩対策とロスト対策を両立する保管設計が必要。
関連リンク
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 Spring Frameworkのアノテーション一覧
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- PHP $_SERVERとは|DOCUMENT_ROOT・PHP_SELFなど主な要素 2026-08-07 17:15:57
- PHPでのファイルアップロード方法|multipart/form-dataと$_FILES 2026-08-07 17:15:57
- Scratchのアカウントの作り方|メールアドレスとユーザー名の登録手順 2026-08-07 17:15:57
- Bluetoothとは|仕組み・BLEとClassicの違い・用途 2026-08-07 17:15:57
- Spring Bootのテスト入門|@SpringBootTestとJUnitでの単体・結合テスト 2026-08-07 17:15:57
- djangoにおけるMVCアプリケーション実装例 2026-08-07 17:15:57
- Scratch 作品の公開方法 2026-08-07 17:15:56
- 【PHPフレームワーク】Laravelの使い方 2026-08-07 17:15:56
- Google OAuth 2.0 認証の実装方法 2026-08-07 17:15:56
- APIキー取得方法 2026-08-07 17:15:56
- インストール方法(Windows版) 2026-08-07 17:15:56
- Java とは?言語仕様・JVM・主要フレームワーク一覧 2026-08-07 17:15:56
- データベースとは?RDB / NoSQL / SQL の基礎 2026-08-07 17:15:56
- インストール(eclipseプラグイン) 2026-08-07 17:15:56
- Spring Frameworkの使い方 2026-08-07 17:15:56
コメントを削除してもよろしいでしょうか?