ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- Wi-Fi とは|規格と世代(Wi-Fi 4〜7)・周波数帯・CSMA/CA・WPA3 NEW 2026-09-07 07:45:13
- set コマンドでシェルオプションと位置パラメータを操作 | bash 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- UE5 Get Overlapping Actorsで特定クラスだけ処理|Class Filter・Cast To 2026-09-07 07:45:13
- Linuxで特定拡張子のファイルを再帰削除|find -deleteの安全手順 2026-09-07 07:45:13
- Django CBVでテンプレートに値を渡す|get_context_data・extra_context 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
- Linux catコマンドの使い方|行番号表示・複数ファイル連結 2026-09-07 07:45:13
- unable to execute 'gcc': No such file or directory 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?