.pem、.cer、.derの違いは何ですか?


84

.pem.cerとの違いは何.derですか?

私の知る限り、.cer公開鍵が含まれています。この公開鍵を使用してデータを暗号化するために使用できるオープンフレームワークはありますか?


2
それらはすべて、任意のキーを格納できる単なるファイル形式だと思います。それらの間で自由に変換できるツールがあります。
IMSoP 2014年

1
@IMSoPその通りですが、.cerから.derのcp場合、コマンドで実行できます:)
Maarten Bodewes 2014年

私は、次のようなそこにたくさんの例、があるように思われる、iOS版の特定の部分を削除した、この1、この他の1の.pemを使用します。
Maarten Bodewes 2016年

回答:


88

.pem.cerおよび.derはすべて、X.509v3証明書を含む可能性のあるファイルのファイル拡張子です。

.der拡張

DERは、証明書を構成するデータをエンコードする方法です。DER自体はあらゆる種類のデータを表すことができますが、通常はエンコードされた証明書またはCMSコンテナを記述します。

証明書の構造は、ASN.1データ表現言語を使用して記述されます。BERとDERは、ASN.1で記述されたデータのバイナリエンコード方式です。

.pem拡張

PEMは、バイナリデータを文字列(ASCIIアーマー)としてエンコードする方法です。ヘッダーとフッターの行(エンコードされるデータのタイプを指定し、データがチェーンされている場合は開始/終了を示します)が含まれ、中央のデータはbase64データです。証明書をエンコードする場合は、DER証明書のbase64エンコードが含まれているだけです。PEMはPrivacyEnhancedMailの略です。メールには、DERなどのエンコードされていないバイナリ値を直接含めることはできません。

PEMは、公開鍵/秘密鍵、証明書要求など、証明書に関連する他の種類のデータをエンコード/保護する場合もあります。コンテンツが一般的なX509v3証明書の場合、PEMは次のようにエンコードされます。

-----BEGIN CERTIFICATE-----
... base 64 encoding of the DER encoded certificate
    with line endings and padding with equals signs ...
-----END CERTIFICATE-----

PEMファイルには、完全な証明書チェーンが含まれている場合もあります。チェーンは、サービスのリーフ/エンド証明書で始まり、それに署名した証明書が続きます。通常は、信頼されたルート証明書までです。したがって、証明書が不足している場合は、最初の証明書の背後を確認することをお勧めします。

.cerまたは.crt拡張

.cer単に証明書の略です。通常はDERでエンコードされたデータですが、WindowsはPEMでエンコードされたデータも受け入れる場合があります。file100%確実であるためには、ファイル内に何があるかを確認するために、コンテンツを調べる必要があります(たとえば、posixシステムでユーティリティを使用する)。

その他のOpenSSL形式

OpenSSLでサポートされているもののより広範なリストについては、この回答を参照してください。


証明書に含まれている(および証明書の署名によって署名されている)公開鍵を使用するには、X.509証明書を解析してRSA暗号化を実行するライブラリを使用する必要があります。PEMエンコーディングを検出/処理するツールを使用するか、最初にPEMエンコーディングを取り除いて証明書をDERに変換することができます。

OpenSSLコマンドラインには、PEMとDERの間で変換したり、高レベルの証明書情報を印刷したり、ASN.1を解析して、そこにあるものの低レベルのビューを取得したりするための多くのオプションが含まれています。

詳細

ほとんどのASN.1構造と同様に、DERでエンコードされた証明書は、常に30ASN.1のタグエンコードであるバイトで始まりSEQUENCEます。ファイルに多くの繰り返しが見られる場合は、これで問題ありません。厳密に定義されているのは構造だけです。

同様に、PEMエンコードされたファイル内のベース64は、常に文字で始まるMASN.1としてSEQUENCEバイトから始まり30、第1の6ビットが001100、文字のインデックスであり、数12に変換されM、アルファベットの13番目の文字。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.