1. ホーム
  2. encryption

[解決済み] .pem、.cer、.derの違いは何ですか?

2022-03-13 15:26:41

質問

とはどのような違いがあるのでしょうか? .pem , .cer.der ?

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

どのように解決するのですか?

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

.der エクステンション

DERは、証明書を構成するデータを符号化する方法です。DER自体は以下を表すことができます。 任意の のようなデータですが、通常はエンコードされた証明書やCMSコンテナを記述します。

証明書の構造は、ASN.1データ表現言語を用いて記述される。BERとDERは、ASN.1で記述されたデータのバイナリ符号化方式です。

は、その .pem エクステンション

PEMは、バイナリデータを文字列(ASCIIアーマー)としてエンコードする方法です。ヘッダーとフッター行(エンコードされるデータの種類を指定し、データが連結されている場合は開始/終了を示す)を含み、中間のデータがベース64データである。証明書をエンコードする場合は、単にDER証明書をbase64でエンコードしたものを格納することになる。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でエンコードされたデータも受け付ける場合があります。内容を確認する必要があります (例. file ユーティリティを使用して、ファイル内の内容を確認することができます。

その他のOpenSSLフォーマット

を見てみましょう。 この回答 には、OpenSSLでサポートされているものについてのより広範なリストがあります。


公開鍵を使用する場合 含まれる 証明書に含まれる(そして によって署名された の場合、X.509証明書を解析し、RSA暗号化を実行する任意のライブラリを使用する必要があります。PEMエンコーディングを検出/処理するツールを使うか、PEMエンコーディングを除去して証明書をDERに変換してください。

OpenSSL のコマンドラインには、PEM と DER の変換、ハイレベルな証明書情報の出力、ASN.1 のパースによる中身の低レベルな表示など、多くのオプションが用意されています。

詳細

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

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