Pemファイルとは何ですか?また、他のOpenSSL生成キーファイル形式とどのように違いますか?


1343

2台のDebianサーバーを保守する責任があります。セキュリティ証明書で何かをしなければならないときはいつでも、私はチュートリアルのためにGoogleを使い、最終的に機能するまで打ち負かします。

しかし、私の検索では、私は多くの場合、異なるファイル形式に遭遇(.key.csr.pem)私は、各ファイル形式の目的が何であるかの良い説明を見つけることができていたことがありません。

ここServerFaultの善良な人々がこの問題について何らかの説明を提供できるかどうか疑問に思っていましたか?


回答:


1655

SSLは十分に長い間存在しており、コンテナ形式については合意されると思われます。そして、あなたは正しい、あります。基準が多すぎます。だから、これは私が知っていることであり、他の人が鳴り響くと確信しています。

  • .csr-これは証明書署名要求です。一部のアプリケーションは、認証局に提出するためにこれらを生成できます。実際の形式は、RFC 2986で定義されいるPKCS10 です。サブジェクト、組織、状態、その他など、要求された証明書のキー詳細の一部/すべて、および署名される証明書の公開キーが含まれます。これらはCAによって署名され、証明書が返されます。返される証明書は公開証明書(公開鍵は含まれますが、秘密鍵は含まれません)であり、それ自体はいくつかの形式になります。
  • .pem -RFC 1421から1424で定義されているこれは、パブリック証明書のみ(Apacheインストール、CA証明書ファイルなど/etc/ssl/certs)、またはパブリックキー、プライベートキーを含む証明書チェーン全体を含むコンテナ形式です。ルート証明書。紛らわしいことに、PKCS10形式をPEMに変換できるため、CSRをエンコードする場合もあります(ここで使用する場合など)。名前は、Privacy Enhanced Mail(PEM)に由来します。これは、安全な電子メールの失敗した方法ですが、それが使用したコンテナ形式は存続し、x509 ASN.1キーのbase64変換です。
  • .key-これは、特定の証明書の秘密鍵のみを含むPEM形式のファイルであり、標準的な名前ではなく単なる従来の名前です。Apacheのインストールでは、これは頻繁に存在し/etc/ssl/privateます。これらのファイルに対する権限は非常に重要であり、一部のプログラムは、これらの証明書の設定が間違っているとロードを拒否します。
  • .pkcs12 .PFXた.p12 -もともとにおけるRSAによって定義された公開鍵暗号規格(略しPKCS)、「12」変異体は、もともとMicrosoftが強化され、以降として提出されたRFC 7292。これは、パブリック証明書とプライベート証明書のペアの両方を含むパスワード付きのコンテナ形式です。.pemファイルとは異なり、このコンテナは完全に暗号化されています。Opensslはこれを公開鍵と秘密鍵の両方を持つ.pemファイルに変換できます。openssl pkcs12 -in file-to-convert.p12 -out converted-file.pem -nodes

時々表示される他のいくつかの形式:

  • .der -ASN.1構文をバイナリでエンコードする方法。.pemファイルはBase64でエンコードされた.derファイルです。OpenSSLはこれらを.pem(openssl x509 -inform der -in to-convert.der -out converted.pem)に変換できます。Windowsはこれらを証明書ファイルと見なします。デフォルトでは、Windowsは証明書を異なる拡張子を持つ.DER形式のファイルとしてエクスポートします。好む...
  • .cert .cer .crt-拡張子が異なる.pem(またはまれに.der)形式のファイル。Windowsエクスプローラーによって証明書として認識されますが、.pemはそうではありません。
  • .p7b .keystore - RFC 2315でPKCS番号7として定義されています。これは、Windowsが証明書の交換に使用する形式です。Javaはこれらをネイティブに理解し、多くの場合.keystore、代わりに拡張機能として使用します。.pemスタイルの証明書とは異なり、この形式には、証明書パス証明書を含めるための定義された方法があります。
  • .crl-証明書失効リスト。認証局は、有効期限が切れる前に証明書を認証解除する方法としてこれらを作成します。CA Webサイトからダウンロードできる場合があります。

要約すると、証明書とそのコンポーネントを提示するには、4つの異なる方法があります。

  • PEM -RFCによって管理され、オープンソースソフトウェアによって優先的に使用されます。さまざまな拡張子(.pem、.key、.cer、.certなど)を持つことができます
  • PKCS7 -Javaで使用され、Windowsでサポートされているオープンスタンダード。秘密鍵の資料は含まれていません。
  • PKCS12-プレーンテキストPEM形式に対してセキュリティを強化するRFCで後に定義されたMicrosoftのプライベート標準。これには秘密鍵の資料を含めることができます。Windowsシステムで優先的に使用され、opensslを使用してPEM形式に自由に変換できます。
  • DER -PEMの親形式。base64でエンコードされたPEMファイルのバイナリバージョンと考えると便利です。Windows以外では日常的にあまり使用されていません。

これがお役に立てば幸いです。


297
標準の素晴らしい点は、選択できるものが非常に多いことです
...-squillman

36
.CRTは.certと.cerのための別の一般的な拡張である
デヴィッドPashley

44
PEMは、証明書(別名、公開キー)、秘密キー、または実際には両方が連結されたファイル形式です。ファイル拡張子にあまり注意を払わないでください。それはプライバシー強化メールを意味します。それはあまり使用されていませんが、ファイル形式は行き詰っています。
ダンキャリー

20
非常に便利な答えは、私はあなたがで作成された.pubファイル形式をカバーしてきたとは思いませんssh-keygen。それが他の要素とどのように結びついているかを知ることは有用でしょう。
ジェズ

24
「Privacy Enhanced Email」が「PEM」ではなく「PEE」という頭字語を与えることに気づかずにはいられません。RFCでは、「Privacy Enhanced Mail」というフレーズを使用する傾向があります
-aidan

141

PEM自体は証明書ではなく、単にデータをエンコードする方法です。X.509証明書は、PEMを使用して一般的にエンコードされるデータの一種です。

PEMはX.509証明書(構造はASN.1を使用して定義されます)、ASN.1 DER(区別されたエンコードルール)を使用してエンコードされ、Base64エンコードを実行し、プレーンテキストアンカー行(BEGIN CERTIFICATEおよびEND CERTIFICATE )。

PKCS#7またはPKCS#12表現を使用して同じデータを表すことができ、opensslコマンドラインユーティリティを使用してこれを行うことができます。

PEMの明らかな利点は、アンカーラインがあり、7ビットでクリーンであるため、電子メールメッセージの本文に安全に貼り付けることができることです。

RFC1422には、キーと証明書に関連するPEM標準に関する詳細があります。


1
「opensslコマンドラインを使用して」これをどのように行いますか?
サミクR

2
DERファイル(.crt .cer .der)をPEMに変換するには:openssl x509 -inform der -in cert.cer -out cert.pem。DERにPEMファイルを変換するには:openssl x509 -outform der -in cert.pem -out certi.der。秘密鍵と証明書を含むPKCS#12ファイル(.pfx .p12)をPEMに変換するには:openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes。PEM証明書ファイルと秘密キーをPKCS#12(.pfx .p12)に変換するには:ここopenssl pkcs12 -export -out cert.pfx -inkey privateKey.key -in cert.crt -certfile CACert.crtから
-mpeac

54

時には.crtファイルがすでにあります.pem。参照:https : //stackoverflow.com/questions/991758/openssl-pem-key


4
確かに、今日私はこれに気付いた。ラックスペースロードバランサーにPEM証明書を入力する必要があり、生成されたcrtがその形式かどうか疑問に思っていました。しかし、それはそのように働いたので、それも私の結論でした、これらの.crtのほとんどは、PEM形式であるようです。
グレンプラス14年

@GlennPlas は、名前や拡張子ではなく、ファイルのコンテンツではなくフォーカスします。これは、呼び出される可能性.foobar...それは重要すべてのために
パトリックMevzek
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.