.pem
、.cer
、および.der
の違いは何ですか?
私の知る限り、.cer
には公開鍵が含まれています。この公開鍵を使用してデータを暗号化するために使用できるオープンフレームワークはありますか?
.pem
、.cer
、および.der
はすべて、X.509 v3証明書を含むファイルのファイル拡張子です。
DERは、証明書を構成するデータをエンコードする方法です。 DER自体は任意の種類のデータを表すことができますが、通常はエンコードされた証明書またはCMSコンテナを表します。
証明書の構造は、ASN.1データ表現言語を使用して記述されます。 BERとDERは、ASN.1で記述されたデータのバイナリエンコード方式です。
.pem
拡張PEMは、バイナリデータを文字列(ASCIIアーマー)としてエンコードする方法です。ヘッダーとフッターの行(エンコードされるデータのタイプを指定し、データがチェーンされている場合に開始/終了を表示)が含まれ、中央のデータはベース64データです。証明書をエンコードする場合、DER証明書のベース64エンコードが含まれます。 PEMはPrivacy Enhanced Mailの略です。メールには、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でエンコードされたデータも受け入れる場合があります。ファイル内の内容を完全に確認するには、コンテンツを確認する必要があります(たとえば、posixシステムでfile
ユーティリティを使用する)。
OpenSSLでサポートされているもののより広範なリストについては、 この回答 をご覧ください。
証明書で公開鍵containedを使用するには(およびsigned by証明書の署名)X.509証明書を解析してRSA暗号化を実行するライブラリを使用する必要があります。 PEMエンコーディングを検出/処理するツールを使用するか、最初にPEMエンコーディングを削除して証明書をDERに変換できます。
OpenSSLコマンドラインには、PEMとDER間の変換、高レベルの証明書情報の出力、またはASN.1の解析による低レベルビューの取得のための多くのオプションが含まれています。
ほとんどのASN.1構造と同様に、DERエンコードされた証明書は常に、ASN.1 SEQUENCE
のタグエンコードであるバイト30
で始まります。ファイルに多くの繰り返しがある場合は、これで問題ありません。厳密に定義されているのはstructureだけです。
同様に、PEMエンコードファイル内のベース64は常にASN.1としての文字M
で始まりますSEQUENCE
はバイト30
で始まるため、最初の6ビットは001100
は、アルファベットの13番目の文字M
のインデックスである12に変換されます。