web-dev-qa-db-ja.com

Pemファイルとは何ですか?それは他のOpenSSL生成キーファイル形式とどう違うのですか?

私は2つのDebianサーバーの保守を担当しています。セキュリティ証明書で何かをする必要があるときはいつでも、私はチュートリアルのためにグーグルして、それが最終的に機能するまで打ちのめします。

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

ここServerFaultの優れたスタッフがこの問題について説明を提供できるかどうか疑問に思っていましたか?

1413
Noah Goodrich

SSLは十分に長い間使用されてきたので、コンテナー形式については合意が得られると考えられます。そして、あなたは正しいです。規格が多すぎます。これは私が知っていることであり、他の人がチャイムを鳴らすと確信しています。

  • 。csr-これは証明書署名要求です。一部のアプリケーションは、認証局に提出するためにこれらを生成できます。実際の形式はPKCS10で、 RFC 2986 で定義されています。これには、サブジェクト、組織、状態、その他など、要求された証明書の一部またはすべてのキーの詳細と、署名される証明書の公開キーが含まれます。これらは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によって Public-Key Cryptography Standards (省略されたPKCS)で定義され、 12インチバリアントは元々マイクロソフトによって拡張され、後に 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以外ではあまり使用されていません。

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

1730
sysadmin1138

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標準が鍵と証明書に関連しているため、PEM標準に関する詳細が記載されています。

146
James F

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

57
mgold