.pfx、.p12、.cer、.crtの違いを詳しく説明します

最終更新: 13/01/2026
  • .cer および .crt 形式には通常、PEM または DER 形式の公開 X.509 証明書が含まれますが、.pfx および .p12 は証明書、チェーン、およびパスワードで保護された秘密キーを含む PKCS#12 コンテナーです。
  • PEM と PKCS#7 (.p7b) は Base64 ASCII エンコーディングを使用し、DER と PKCS#12 はバイナリです。これらはすべて、異なるコンテナーと用途を持つ同じ暗号化情報を表します。
  • 秘密キーは .key ファイル内または .pfx/.p12 内で移動し、.p7b 内では移動しません。キーが配置されている場所を区別することは、証明書をインストール、エクスポート、または更新する際に不可欠です。
  • OpenSSL では、PEM、DER、PKCS#7、PKCS#12 間の変換が可能なので、証明書を各サーバーまたはシステムに必要な形式に簡単に適合させることができます。

デジタル証明書の形式

もしあなたがここに来て、 .pfx、.p12、.cer、.crt の違いサーバーにデジタル証明書やSSL証明書をインストールする際、おそらく複数の見慣れないファイルに遭遇したことがあるでしょう。頭字語、拡張子、形式などが複雑に絡み合って混乱し、それぞれのファイルが何をするものなのか、どのファイルが必要なのか分からなくなってしまうのは、あなただけではありません。

良いニュースは、名前は威圧的に見えるかもしれないが、これらのファイルはすべて以下のものであることを理解すれば、すべて非常に簡単に説明できるということだ。 証明書と鍵のコンテナ 異なるフォーマット(テキストまたはバイナリ)で、異なるシステム向けに設計されています(Windows, Linux(Java、ブラウザなど)。これらを一つずつ落ち着いて見ながら、相互に関連付けて、それぞれの内容、用途、必要に応じて使用方法や変換方法を正確に理解できるようにします。

デジタル証明書とは何ですか? .pfx、.p12、.cer、.crt はどのように組み合わされるのですか?

デジタル証明書は、 認証局によって署名された電子文書 (CA、またはeIDAS規則では認定サービスプロバイダー)は、アイデンティティと公開鍵をリンクします。このアイデンティティは、個人、企業、ウェブサーバー、ドメインなどです。

この接続を実現するには、以下を使用します。 公開鍵暗号または非対称暗号公開鍵(誰でも知ることができる)と秘密鍵(所有者のみが持つべき)という2つの鍵があります。公開鍵で暗号化されたものは秘密鍵でのみ復号化でき、その逆も同様です。これにより、認証、暗号化、電子署名が可能になります。

これらの証明書の裏には 公開鍵インフラストラクチャまたはPKIこれには、認証局、登録局、証明書リポジトリ、証明書失効リスト (CRL)、および多くの環境では署名された日時を記録するタイムスタンプ局 (TSA) が含まれます。

汎用証明書の大部分の内部構造は標準に従っている。 X.509ITU によって定義され、RFC 5280 で詳細に説明されています。この標準では、バージョン、シリアル番号、署名アルゴリズム、発行者、有効期間、サブジェクト、所有者の公開鍵、および可能な追加拡張機能などのフィールドが定義されています。

アルゴリズムに関しては、証明書は通常、非対称暗号を使用します。 RSA、DSA、またはECDSARSA と ECDSA は署名と暗号化の両方に使用されますが、DSA はデジタル署名の署名と検証に重点を置いています。

内部フォーマットと拡張子: PEM、DER、CER、CRT、その他

次のような拡張機能について話すとき .cer、.crt、.pem、.der、.pfx、.p12、または .p7b実際には、証明書のエンコード形式 (Base64 テキストまたはバイナリ) とファイルの機能 (証明書のみ、証明書 + 秘密キー、証明書チェーンなど) という 2 つの概念が混在しています。

内部フォーマットレベルでは、X.509証明書は次のように表現されます。 ASN.1 そして通常はDER(バイナリ)またはそのテキスト版PEM(DERをBase64に変換し、次のようなヘッダーで囲んだもの)でエンコードされます。 開始/終了そこから、さまざまなシステムや標準が定義されてきました。 特定のコンテナ PKCS#7 (.p7b) や PKCS#12 (.pfx、.p12) など。

混乱を避けるための鍵は、ファイル拡張子は多くの場合1つだけであることを覚えておくことです。 命名規則.cer ファイルまたは .crt ファイルには、まったく同じ内容を含めることができますが、たとえば、一方は Windows で多く使用され、もう一方は Unix/Linux 環境で多く使用されます。

この一般的なグループの中には、 キーフォーマット これらは、SSL/TLS または個人証明書を扱うときに常に遭遇するものなので、明確に理解することが重要です。

PEM形式: 証明書の「読み取り可能なテキスト」

PEM形式は、ApacheやNginxなどのサーバーや、ほとんどのセキュリティツールにおけるSSL/TLS証明書で最も一般的な形式です。PEMファイルは、 DERはBase64で再コード化され、テキストヘッダーで囲まれているこれにより、任意のエディター (メモ帳、nano、vim など) で開いてコピーできるようになります。

PEMは、その内容が次のような行で区切られているため認識されます。 -証​​明書の開始- y -証​​明書の終了- 証明書が含まれている場合、または —–秘密鍵開始—– y —–秘密鍵終了—– 秘密鍵が含まれている場合。その間にあるものはすべて、元のバイナリデータを表すBase64文字列です。

一つのPEMファイルで、 証明書のみ証明書と中間CAチェーン、秘密鍵のみ、あるいはパッケージ全体(秘密鍵、サーバー証明書、中間証明書、ルート証明書)を提供できます。証明書署名要求(CDR)はPEM形式でも提供されます。 社会貢献活動これらは、PKCS#10 構造をテキストに再コード化したものにすぎません。

このフォーマットは、元々はプライバシー強化電子メールプロジェクトの一環としてRFC 1421-1424で定義されましたが、電子メールには採用されませんでしたが、 暗号データ​​の転送 快適で読みやすく、コピー/貼り付けが簡単な形式で提供されます。

  偽情報とフェイクニュース:理解と自己防衛の鍵

実際には、拡張子が .pem、.crt、.cer、または.key Unix/Linuxシステムでは、通常はPEMファイルです。通常、.keyファイルには秘密鍵が、.crtファイルまたは.cerファイルにはサーバー証明書が含まれ、場合によっては追加のPEMファイルに中間CAチェーンが含まれます。

DER形式: 純粋でシンプルなバイナリ

DER(識別符号化規則)は バイナリエンコード形式 X.509証明書を記述するASN.1構造のことです。テキストではないため、エディタで開くと、典型的なBase64文字列ではなく、奇妙な文字が表示されます。

DERファイルには、 あらゆる種類の証明書または秘密鍵特にWindows環境やJavaプラットフォームでは、通常、.derまたは.cer拡張子で識別されます。Windowsでは、.derファイルは証明書ファイルとして直接認識され、ダブルクリックするとネイティブビューアで開きます。

PEMとの実際的な違いは、PEMは簡単にコピーしてメール送信したり、ウェブフォームに貼り付けたりできるのに対し、DERは 閉じたバイナリBLOB アプリケーションが直接使用できるように設計されています。ただし、内部的には情報は同じです。PEMはDERをBase64テキストに再エンコードしたものにすぎません。

OpenSSL などのツールを使用すると、証明書の論理的な内容はまったく変更されず、表現形式のみが変更され、DER から PEM へ、またはその逆へ 1 つのコマンドで切り替えることができます。

.cer と .crt 拡張子: 同じ犬だが首輪が違う

.cerおよび.crt拡張子は、 公開証明書を含むファイル通常は、生成またはインストールされるシステムに応じて、PEM または DER 形式になります。

場合によっては、Apacheサーバー上の.crtファイルは PEM認定 BEGIN/END CERTIFICATEヘッダーで囲まれており、構成ブロックに貼り付ける準備ができています。Windowsでは、.cerファイルはPEMまたはDERのいずれかになりますが、通常は生成ツールに応じてどちらかのカテゴリに分類されます。

重要なのは、拡張子が内部フォーマットを厳密に定義するわけではないということです。.cerファイルはPEMテキストまたはDERバイナリであり、OpenSSLなどのビューアやユーティリティが読み取り方法を決定します。ブラウザやWindowsシステムでは、ダブルクリックすると… 証明書ビューア発行者、件名、有効期限、キーの使用法などを確認できます。

ブラウザまたはWindows証明書ストアから秘密鍵なしで証明書をエクスポートすると、通常は.cerファイルが取得されます。これは、 署名、信頼チェーンを検証したり、情報を暗号化したりするただし、所有者に代わって署名することは絶対にしないでください (そのためには、別の、または保護されたコンテナー内にある秘密キーが必要です)。

CSR、KEY、CA、中間ファイル:証明書に付随するその他のファイル

SSL証明書や個人証明書を処理する際、.pfx、.p12、.cerファイルだけでなく、以下のようなファイルも処理されます。 .csr、.key、またはCA証明書 (ルートと中間体)、これらはすべてが機能するために等しく重要です。

署名の依頼または CSR (.csr) これは通常、SSL証明書がインストールされるサーバー上で生成されるファイルです。このファイルには、公開鍵、ドメイン名、組織名、国名など、認証局が証明書の発行に使用するその他の情報が含まれています。PKCS#10規格に準拠しており、通常はPEM形式でエンコードされているため、プロバイダーのフォームにコピー&ペーストできます。

秘密鍵または キー (.key) これは、証明書に関連付けられた秘密鍵が保存されているファイルです。通常はPEM形式で、「BEGIN PRIVATE KEY」と「END PRIVATE KEY」で区切られています。これは非常に機密性の高いファイルであるため、共有したり、公開リポジトリにアップロードしたりしないでください。また、多くの場合、パスワードで保護されています。

のファイル CAまたは権限証明書 証明書を発行または仲介する機関の公開鍵が含まれています。ブラウザと OSの 信頼できる CA のデフォルト リストが付属していますが、クライアントがエラーなしでサーバーの証明書を検証できるように、信頼チェーンを完了するために中間証明書をインストールする必要がある場合もあります。

これらの中間証明書は、PEMファイル(.pem、.crt、.cer)として、または次のようなコンテナ内で提供できます。 .p7bホスティング構成では、SSL を適切にインストールするために、CRT (ドメイン証明書)、KEY (秘密キー)、および CA または中間証明書ファイルが求められることがよくあります。

PKCS#7 / P7B: 秘密鍵なしの証明書チェーン

PKCS#7(通常は拡張子で表されます) .p7b または .p7cこれは、秘密鍵を含まずに、1つまたは複数の証明書を構造化されたコンテナにまとめるためのフォーマットです。一般的には、 証明書チェーンを配布する (サーバー証明書と中間証明書) を Windows または Java 環境 (Tomcat、キーストアなど) で使用します。

.p7bファイルは通常、PEMファイルと同様にBase64 ASCIIでエンコードされ、元々は公開鍵暗号規格の一部としてRFC 2315で定義されました。現在では、後継規格はCMS(Cryptographic Message Syntax)ですが、SSL証明書の世界ではPKCS#7という名称が依然として広く使用されています。

  Windows 11からNASにアクセスする方法:ハウツーガイドとソリューション

このフォーマットは、 信頼チェーン全体をインストールする サーバー上、またはストア(Javaキーストアなど)を介して証明書を管理するシステム内。通常、SSLプロバイダーは、サーバー証明書とCAチェーン全体を格納した.p7bファイルを、あるいはすべてを格納した単一の.p7bファイルを配信します。

.p7b ファイルを PEM に変換する場合、OpenSSL などのツールを使用すると、1 つのコマンドで証明書を抽出し、1 つまたは複数のテキストファイルに保存できます。その後、サーバーに個別にアップロードする必要がある場合は、BEGIN/END CERTIFICATE ブロックを分離できます。

PKCS#7ファイルは 秘密鍵は含まれないしたがって、それ自体は署名や復号化には役立ちません。信頼性を検証するために証明書チェーンの公開部分のみを提供します。

PKCS#12: .pfx と .p12 とは何ですか?

PKCS#12規格は、パスワードで保護されたバイナリコンテナを定義し、その中には以下が含まれます。 公開証明書、完全なCAチェーン、秘密鍵 関連付けられています。この形式の最も一般的な拡張子は.pfxと.p12で、実質的に同等です。

歴史的に、PKCS#12はマイクロソフトと密接に結びついたフォーマットとして始まりましたが、 時間 これはRFC 7292で標準化されており、今日ではあらゆるタイプのシステムで使用されています。 証明書と秘密鍵のペアを安全に転送する あるチームから別のチームへ。

Windows では、ユーザーまたはマシンの証明書ストアから「秘密キー」証明書をエクスポートすると、ウィザードによって、別のシステムにインポートするために必要なすべてのもの (秘密キー、証明書所有者、通常は中間チェーン) を含む .pfx (または .p12) ファイルが生成されます。

PKCS#12ファイルの作成またはエクスポート中に、システムは パスワード保護このパスワードは、後で別のブラウザ、IIS、メールクライアント、あるいは別のオペレーティングシステムにファイルをインポートする際に必要になります。こうすることで、誰かが.pfxファイルを盗んだとしても、パスワードを知らない限り使用できなくなります。

OpenSSL などのツールを使用すると、.pfx または .p12 ファイルを PEM に変換できるため、秘密キー ブロック、サーバー証明書、中間証明書を簡単に見つけることができるテキスト ファイルを取得し、適切な場所にコピーできます (たとえば、CRT、KEY、および CA のみを個別に受け入れるホスティング パネル内)。

.pfx および .p12 証明書の更新、エクスポート、インポート

個人証明書(例えば、FNMTやその他の当局が身分証明のために発行したもの)の分野では、それらをバックアップして更新する方法は、 .pfx または .p12 ファイル暗号カードやトークンで移動する USB または、コンピューター上の保護されたファイルとして直接保存します。

個人証明書の有効期限がまだ切れていない場合、多くの機関では オンラインで更新する: 更新は登録ポイント(専門協会、会社、認証サービスプロバイダーなど)から有効になり、自分のコンピューターからプロセスを完了するためのリンクが電子メールで送信されます。

ただし、証明書の有効期限がすでに切れている場合は、通常、 直接出席する 期限切れの証明書が保存されている暗号化カードまたはデバイスを持って同じ登録ポイントに行き、身元を確認して新しい発行をリクエストします。この新しい発行は、.pfx または .p12 形式で再度エクスポートして、必要な場所にインポートできます。

次のようなブラウザでは EdgeまたはChromeインポートプロセスは、 Windows証明書ストアプライバシーとセキュリティ設定から証明書マネージャーを開き、「個人」タブを選択して、.pfxまたは.p12ファイルをインポートできます。ウィザードはコンテナのパスワードを要求し、将来のバックアップのためにキーをエクスポート可能としてマークすることを提案します。

.pfxファイルの代わりに秘密鍵のない.cerファイル(鍵のない証明書アイコン)がある場合、そのファイルは 公開証明書をインストールする (「その他のユーザー」の下に表示されます)が、署名や認証には利用できません。その場合、そこから秘密鍵を取得することはできません。また、有効な別のコピーをお持ちでない場合は、新しい証明書をリクエストするしかありません。

これらの形式がサーバーSSL証明書でどのように使用されるか

ウェブサーバーでの日常的な作業では、 VPNプロキシを使用する場合でもJavaアプリケーションを使用する場合でも、使用される証明書の形式はシステムとインストールの種類によって異なります。LinuxでのApacheの設定は、WindowsでのIISの設定やJavaでのTomcatの設定とは異なります。

Unix/Linux環境(Apache、Nginx、HAProxyなど)では、 PEMファイル 別々のファイルがあります。1つは秘密鍵(.key)用、もう1つはサーバー証明書(.crtまたは.cer)用、そして場合によっては中間CA文字列を格納する別のファイルです。これらすべてがサーバー設定で参照され、TLSを確立します。

Windowsプラットフォーム(IIS、リモートデスクトップサービスなど)では、 .pfxまたは.p12 証明書と秘密鍵、そしてチェーンの両方が含まれています。インポートウィザードが各要素を対応するストアに配置するので、内部の詳細を心配する必要はありません。

Java環境(Tomcat、独自のキーストアを持つアプリケーション)では、次のタイプのストアが存在します。 JKS または PKCS#12多くの場合、ツールと Java バージョンに応じて、.pfx ファイルが直接インポートされるか、.p7b 証明書を使用してキーストア内の信頼チェーンが構成されます。

  ルーブル美術館の強盗事件は、安易なパスワードと時代遅れのシステムという脆弱性を露呈した。

サードパーティプロバイダーからSSL証明書を購入すると、PEM形式のCRT + CAファイル、文字列を含む.p7bファイル、あるいは事前に用意された.pfxファイルなど、さまざまなファイルの組み合わせが提供される場合があります。重要なのは、正しいファイルタイプを識別することです。 秘密鍵はどこにありますか? (証明書が付属しており、サーバーによって生成されたものではない場合)、また、どのファイルにサーバー証明書と中間チェーンが含まれているか。

ホスティングのコントロールパネルでは、通常、CRT、KEY、そしてオプションでCA証明書または中間証明書のフィールドへの入力を求められます。.pfxファイルしかない場合は、OpenSSLを使用してPEMファイルに変換し、そこから各ブロックを抽出し、各タイプのBEGINからENDまでを注意深くコピーしてください。

OpenSSL による証明書形式の変換

各ファイルが何であるかを理解したら、次の論理的なステップは 変換方法 サーバーまたはアプリケーションが ISP または CA によって提供されたものとは異なる形式を要求する場合、そのための標準ツールは OpenSSL です。これはほとんどの Linux ディストリビューションで使用可能であり、Windows にもインストール可能です。

例えば、 DER (.der、.cer) PEM に変換する必要がある場合は、バイナリを適切なヘッダーを付けて Base64 に再エンコードするコマンド 1 つで十分です。同様に、システムがバイナリしか受け付けない場合は、PEM を DER に変換することもできます。

PKCS#7 (.p7b) ファイルを使用すると、OpenSSL を使用して 証明書を抽出する PEM形式では、含まれる証明書を出力し、テキストファイルに保存する簡単なコマンドを使用します。個別のファイルが必要な場合は、そこからBEGIN/END CERTIFICATEブロックを区切ってください。

PKCS#12 (.pfx、.p12) の場合、OpenSSL はコンテナを秘密鍵とすべての証明書を含む PEM ファイルに変換できます。変換処理中にコンテナのパスワードの入力が求められ、秘密鍵を暗号化したまま PEM ファイルに保存するか、プレーンテキストのまま PEM ファイルに保存するかを選択できます。これは、使用目的によって異なります。

これらのタイプの変換により、.pfxファイルをLinuxサーバーにアップロードし、それをPEMに変換し、 CRTとKEYを分離 PKCS#12 コンテナーを直接サポートしない SSL インストール フォームに入力します。

DER↔PEM、PEM↔PKCS#7、PKCS#7↔PKCS#12、PKCS#12↔PEM の直接変換に加えて、同じユーティリティで CSR を生成し、キーを管理し、証明書を検査し、有効期限をチェックできるため、証明書を使用するあらゆる環境で基本的なツールになります。

デジタル証明書の種類と利用分野

ファイル形式以外にも、 証明書の種類 バックアップ、更新、およびインストールの管理方法に影響するため、使用方法や表すエンティティの種類に応じて異なります。

欧州の規制レベル(eIDAS規制)では、 「シンプルな」電子証明書と認定証明書前者は基本的な本人確認と発行要件を満たしていますが、後者はより厳格な本人確認プロセスと、発行機関によるより厳格な技術的および組織的条件を要求します。スペインにおける明確な例としては、電子IDカード(DNIe)が挙げられます。

所有者が誰であるかを確認すれば、次のような証明書を取得できます。 自然人、法人または法人格を持たない団体それぞれ、個人的な手続き、会社に代わっての取引、納税義務など、さまざまな分野で署名または認証するために使用されます。

ウェブサーバーの世界で最もよく知られている証明書ファミリーは SSL/TLS証明書これらの証明書は、ユーザーとの通信チャネルを暗号化するためにサーバーにインストールされます。証明書には、シングルドメイン証明書、ワイルドカード証明書、マルチドメイン証明書(SAN)などの種類があり、それぞれ対象となるドメイン名の数や検証レベルが異なります。

種類に関係なく、これらの証明書はすべて、使用されるシステムと、証明書を転送またはバックアップするために選択した方法に応じて、.cer、.crt、.pem、.p7b ファイル、または .pfx/.p12 コンテナーという同じ形式で保存および配布されることになります。

デジタル証明書の有用性は非常に大きいです。 機密性と信頼性を保証します 通信の暗号化により、法的に有効な電子署名が可能になり、管理および商業手続きが簡素化され、ユーザーが暗号化の詳細を気にすることなく複数のネットワーク サービスが安全に機能できるようになります。

この時点で、.pfx、.p12、.cer、.crt などの拡張子は、単に同じものをパッケージ化する異なる方法であることは明らかです。つまり、X.509 証明書、秘密キー、および該当する場合は信頼チェーンであり、環境に応じて、インストールと展開を容易にするために Base64 テキスト、DER バイナリ、または PKCS コンテナーとして表されます。 システム間の輸送.

さまざまなウェブブラウザでデジタル証明書を管理する方法
関連記事:
さまざまなウェブブラウザでデジタル証明書を管理する方法