Tls

X.509証明書とPKCS#7証明書の違いは何ですか?



Whats Difference Between X



解決:

あなたはほぼ正しい方向に進化しましたが、いくつかのポイントを追加し、@ CoverosGeneの回答を拡張して、編集で快適に感じる以上のことをしました。

X.509 ASN.1で証明書(およびここでは関係のない他のいくつかのもの)を定義します。これは、いくつかのエンコードが定義された(非常に!)一般的なデータ構造化メソッドです。 NS Distinguished Encoding Representationは非常に一般的であり、ここで使用されます。



NS format(証明書が1つしかないいくつかのタイプのデータの場合)は、base64でエンコードされたバイナリ(DER)データと同じです。 (編集) 通常は64文字ごとに行に分割されます(ただし、バリエーションがあります)。さらに、ダッシュ+ BEGINまたはEND +データのタイプ(この場合はCERTIFICATE +ダッシュ)で構成されるヘッダー行とトレーラー行。これらの行は人間には冗長に見えますが、ソフトウェアによって予期され、ほとんど必要とされます。 PEM(Privacy Enhanced Mail)は、実際には安全な電子メールの完全な標準でしたが、現在ではほとんど忘れられています(以下を参照)。 それ外 そのエンコード形式について。 (編集) 2015年の時点で、詳細に説明されているRFC7468があります 多くの 最新の暗号データ​​に「PEM」形式を使用する。

PKCS#7 RSA(アルゴリズムではなく会社)によって、暗号化および/または署名されたデータの多目的フォーマットとして定義されました。 IETFに引き渡され、 CMS暗号化メッセージの構文 RFC 2630、RFC 3369、RFC 3852、RFC 5652の順で、Windows(inetopt)プロンプトの文言。 「PKCS#7」はよく使用されます どちらも 元のRSAPKCS#7とIETF後継CMSは、同じように「SSL」が元のNetscapeプロトコルとIETF後継TLSトランスポートレベルセキュリティの両方によく使用されます。



NS .p7bまたは.p7c formatは、PKCS#7 / CMSの特殊なケースです。「content」とゼロのSignerInfoを含まないSignedData構造ですが、1つ以上の証明書(通常)やCRL(まれに)が含まれます。これが処理するための標準的な方法を提供したときの方法 (編集) を構成するために必要な証明書のセット (必ずしも順番どおりではありません)。

PKCS#7 / CMSもASN.1であり、状況に応じてDERまたは BER 、ほとんどのDERデコーダーが処理するいくつかの非常に小さな違いがある密接に関連したエンコーディング。

PKCS#7 / CMSは、他のDERまたはBERオブジェクトと同様です。 できる PEM形式であるため、openssl以外の実装は見たことがありません。 (編集) 証明書の場合はまれです。 (JavaCertificateFactoryはPKCS7 / CMS-certsを読み取ることができます-DERまたはPEMからのみですが、CertPath.getEncodedはそれをDERにのみ書き込みます。)対照的に、単一の証明書のDER形式とPEM形式の両方が一般的です。



PKCS#7 / CMSはの基礎としても使用されます S / MIME 安全な電子メール(5751以降の複数のRFC)。基本的に、PEMはPKCS#7をASCIIテキストにエンコードしました。これは1980年代の電子メールシステムで簡単に処理できますが、S / MIMEはCMSをでエンコードされたMIMEエンティティとして表します。 いくつかの 最新の電子メールシステムが処理できる方法。

OpenSSL 次の順序で実装することにより、混乱した問題:a pkcs7 証明書を処理するコマンド-CRLのみの場合は完全ではありませんPKCS#7; NS crl2pkcs7 実際にCRLと証明書を処理するコマンドですが、PKCS#7の残りの部分は処理しません。 NS smime 暗号化されたメッセージや署名されたメッセージのほとんどの場合、S / MIMEとPKCS#7 / CMSの両方を実際に処理するコマンド。と cms より完全なケースのセットのために、S / MIMEとPKCS#7 / CMSの両方を実際に処理するコマンド。

したがって、オプションを次のように説明します。PEMまたはDER形式の証明書。 PKCS#7コンテナ内の(単一の)証明書、または略してp7のみであり、PEMについて言及するのはまれなケースのみです。または 証明書チェーン PKCS#7またはp7で。単一の証明書と証明書チェーンのセマンティックの違いは、少なくとも、証明書自体またはコンテナー内の形式の違いと同じくらい重要です。

そして、これは、証明書自体(他のエンティティの場合、ほとんどの場合CAルートまたはアンカー)と、自分自身を証明するために使用する秘密鍵PLUS証明書(または通常はチェーン)の組み合わせとの間の広範な混乱にさえ達しません。たとえば、SSL / TLSサーバーとしてまたはS / MIME電子メールに署名するときのID。 それか 元々-MicrosoftPFX Personal Information Exchange形式、またはその標準化された形式PKCS#12または「p12」を使用します。


PKCS#7は、複数の証明書をDERエンコードまたはPEMエンコードのいずれかでバンドルできる形式と考えることができ、証明書と証明書失効リスト(CRL)を含めることができます。

RFC2315によると、PKCS#7は

デジタル署名やデジタルエンベロープなど、暗号化が適用される可能性のあるデータの一般的な構文。構文は再帰を許可するため、たとえば、あるエンベロープを別のエンベロープ内にネストしたり、一方のパーティが以前にエンベロープされたデジタルデータに署名したりできます。