web-dev-qa-db-ja.com

.cerとpfxファイルの違いは何ですか

かつて言った人々-

cer-X.509標準形式で保存された証明書。この証明書には、公開鍵と秘密鍵に加えて、証明書の所有者に関する情報が含まれています。

pfx-個人交換フォーマットの略。単一のファイルでパブリックオブジェクトとプライベートオブジェクトを交換するために使用されます。 PFXファイルは、.cerファイルから作成できます。ソフトウェア発行者証明書の作成にも使用できます。

**このリンクからrefを取得 cer、pvk、pfxファイルの違いは何ですか? **

しかし、CERTファイルを使用する必要がある場合とPFXファイルを使用する必要がある場合は誰も言っていません。可能であれば、CERTファイルに行くべき状況とPFXファイルに行くべき状況について話し合ってください。ありがとう。

69
Thomas

.pfxには、関連付けられた証明書の公開キーと秘密キーの両方が含まれます(組織外でこれを共有しないでください)。 WebサイトのTLS/SSL、メッセージまたは認証トークンのデジタル署名、またはパートナーシステムの認証に使用できます。 .cerファイルには公開鍵のみがあります(これは通常、統合パートナーと交換するものです)。トークンまたはクライアント認証要求の検証に使用でき、SSLハンドシェイクでサーバーからHTTPクライアントが受信するものです。

78
PeterB

わずかに異なる動作をする2つのシナリオ:

シナリオ1:
SSLを使用してHTTPS経由でWebページ(サーバー)にアクセスするWebブラウザー(クライアント)

サーバーには、両方のキーを含む.PFXファイルがあります。クライアントはサーバー上のWebサイトに接続し、サーバーはSSLハンドシェイクの一部としてその公開鍵(.CERファイル)のコピーをクライアントに送信します。次に、クライアントは「SESSION-Key」を生成し、サーバーから受信した公開鍵を使用してそれを暗号化します。次に、セッションキーがサーバーに送り返され、その真正性を確認するために解読されます。成功した場合、クライアントとサーバーの両方がsymmetric暗号化を使用して通信するために「セッションキー」を共有します(つまり、クライアントとサーバーの両方が、同じセッションを使用して、このすべては、アドレスバーにURLを入力してからWebページが表示されるまでの間、Webブラウザのバックグラウンドでバックグラウンドで実行されています。

シナリオ2:
アプリケーション(クライアント)はFTPサイト(サーバー)に接続します
または
SSHを使用したリモートデスクトップ(クライアントからサーバー)
(両方の例が適用されます)

このシナリオでは、両方クライアントとサーバー独自の秘密鍵と公開鍵のペアを持ちます
(このスレッドで言及した他の例とは対照的に、サーバーに両方のキーがあり、クライアントに公開キーのみがある場合のみを説明します)

次に、説明のために、キーペアに次のようなラベルを付けます。
A1およびA2 =サーバーの秘密鍵と公開鍵としてそれぞれ
B1およびB2 =クライアントの秘密鍵と公開鍵としてそれぞれ

このモデルを使用して、このスレッドの以前の投稿は、サーバーにA1およびA2。PFX file)がある場合について話していました、およびA2。CER)のコピーのみをクライアントと共有します

FTPまたはSSH接続(他の例もあります)は、A1A2B1、およびB2で構成されます。 =クライアント/サーバー間通信全体のキー。例えば、
-クライアントはFTPサーバーに接続します。
-サーバーは、公開キー(A2)のコピーをクライアントに送信します。
-クライアントは自身の公開鍵(B2)をサーバーに送り返し、ハンドシェイクを完了します。
-これは、今ではasymmetric Encryptionを使用しています

サーバーは現在、A1、(its Private)、A2its public)、およびB2Client's Public)のコピー
クライアントは現在、B1、(its Private)、B2自身のパブリック)、およびA1サーバーのパブリック)のコピー

クライアントからサーバーへの通信:
クライアントはA2(サーバー公開鍵)を使用してサーバーにバインドされたメッセージを暗号化し、サーバーはA1(サーバー秘密鍵)を使用してそれらを解読します。

サーバーからクライアントへの通信:
サーバーはB2(クライアント公開鍵)を使用してクライアントにバインドされたメッセージを暗号化し、クライアントはB1(クライアント秘密鍵)を使用してそれらを復号化します

。CERおよび.PFXファイルタイプに関して、サーバーには独自の.PFXがあり、組織外に配布することはできません。代わりに、.CERファイルをクライアント。

詳細はこちらをご覧ください:
https://www.digicert.com/ssl-cryptography.htm

そしてここ:
https://serverfault.com/questions/107433/why-does-a-ssh-public-key-sit-on-the-server-and-not-with-with-the-client

3
TurnerOC

私の経験では(私が望むほど広大ではありません)IISサーバーでhttpsバインディングを構成するときにpfxファイルを使用します(これには公開鍵と秘密鍵の両方が含まれているため、大丈夫ですそのファイルだけで)、cerファイルはキーペアの公開部分(ほとんどの場合)であり、nginxまたはApacheサーバーでsslトラフィックを構成するときに.keyファイルと組み合わせて使用​​する必要があります。

私が理解している限り、どちらか一方を使用する理由はこれ以上ありません。

0
Juan Sebastian

前述のように、cerファイルは単なる公開キーですが、pfxファイルには公開キーと秘密キーの両方が含まれているため、質問は少しばかりのリンゴとオレンジです。

したがって、より公平な質問は、pemファイルではなくpfxファイルをいつ使用するかです。 pfxファイルが過度に複雑であると批判されていることを考えると、2番目の質問に対する公正な答えは次のようになります。IISを実行していて、他のものを使用します。

出典: https://en.wikipedia.org/wiki/PKCS_12 (参照されている脚注はPeter Gutmannの記事です。)

0
chaosmind