web-dev-qa-db-ja.com

.keyファイルと.crtファイルから.pemファイルを入手する方法?

SSL証明書からPEMファイルを作成する方法

これらは私が利用できるファイルです:

  • .crt
  • server.csr
  • server.key
524

あなたの鍵はすでにPEMフォーマットになっているかもしれませんが、.crtまたは.keyで命名されるだけです。

ファイルの内容が-----BEGINで始まり、テキストエディタで読むことができる場合:

このファイルはbase64を使用します。これは、バイナリ形式ではなく、ASCII形式で読み取り可能です。証明書はすでにPEM形式です。拡張子を.pemに変更するだけです。

ファイルがバイナリ形式の場合:

Server.crtには、

openssl x509 -inform DER -outform PEM -in server.crt -out server.crt.pem

Server.keyには、openssl rsaの代わりにopenssl x509を使用します。

Server.keyはおそらくあなたの秘密鍵であり、.crtファイルは返された署名付きのx509証明書です。

これがWebサーバー用であり、プライベートキーとパブリックキーを別々にロードするように指定できない場合:

2つのファイルを連結する必要があるかもしれません。この用途のために:

cat server.crt server.key > server.includesprivatekey.pem

このファイルで保持している権限を管理しやすいように、ファイルに "includesprivatekey"という名前を付けることをお勧めします。

698
maxwellb

AWS ELBに対してこれを行う必要がありました。ダイアログに何度も殴られた後、ついにこれが私にとってうまくいったものです。

openssl rsa -in server.key -text > private.pem
openssl x509 -inform PEM -in server.crt > public.pem

ありがとう _ ncz _

編集:@floatingrockが言うように

AWSでは、ファイル名の前にfile://を付けることを忘れないでください。だからそれはようになります:

 aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://path/to/server.crt --private-key file://path/to/private.key --path /cloudfront/static/

http://docs.aws.Amazon.com/cli/latest/reference/iam/upload-server-certificate.html

202
slf

pemファイルには、証明書と秘密鍵が含まれています。証明書/キーの形式によって異なりますが、おそらくこれと同じくらい簡単です。

cat server.crt server.key > server.pem
76
sth

さらに、パスフレーズを要求したくない場合は、次のコマンドを実行する必要があります。

openssl rsa -in server.key -out server.key
21
rahul

これは、.pemファイルを作成するための最良の選択肢です。

openssl pkcs12 -in MyPushApp.p12 -out MyPushApp.pem -nodes -clcerts
15
GOrozco58

GoDaddy証明書をAWSにアップロードしようとすると何度か失敗しましたが、結局それは非常に簡単でした。何も.pemに変換する必要はありません。 GoDaddyバンドル証明書をchainパラメータに必ず含めるようにしてください。

aws iam upload-server-certificate
    --server-certificate-name mycert
    --certificate-body file://try2/40271b1b25236fd1.crt
    --private-key file://server.key
    --path /cloudfront/production/
    --certificate-chain file://try2/gdig2_bundle.crt

前回の失敗したアップロードを削除するには、次のようにします。

aws iam delete-server-certificate --server-certificate-name mypreviouscert
3
skensell

私はゴダディからアプリエンジンに行こうとしていました。トリックはこの行を使っていました:

openssl req -new -newkey rsa:2048 -nodes -keyout name.unencrypted.priv.key -out name.csr

まさにその通りですが、名前を私のドメイン名に置き換えます(それが本当に重要なことではありません)。

そして、私はwww.name.comとして共通の名前/組織に関するすべての質問に答えました

それから私はcsrを開き、それをコピーし、Go Daddyにそれを貼り付け、そしてそれをダウンロードし、それを解凍し、ターミナルで解凍されたフォルダーにナビゲートし、そして入力しました:

cat otherfilegodaddygivesyou.crt Gd_bundle-g2-g1.crt > name.crt

それから私はこれらの指示を Google AppsカスタムドメインSSLに関するトラブル から使いました。

openssl rsa -in privateKey.key -text > private.pem
openssl x509 -inform PEM -in www_mydomain_com.crt > public.pem

privateKey.keyの代わりにname.unencrypted.priv.keyを使用し、www_mydomain_com.crtの代わりにname.crtを使用したことを除けば、まったく同じです。

次に、「PEMエンコードX.509証明書」のpublic.pemを管理コンソールにアップロードし、「非暗号化PEMエンコードRSA秘密鍵」のprivate.pemをアップロードしました。

..そしてそれはついにうまくいきました。

3
user2738183

私が観察したことは、あなたが証明書を生成するためにopensslを使うなら、それはcrtファイルのテキスト部分とbase64証明書部分の両方を捕らえます。厳密なpemフォーマットは、( wiki定義 )ファイルはBEGINとENDで始まりそして終わるべきであると言います。

.pem - (Privacy Enhanced Mail) "----- BEGIN CERTIFICATE -----"と "----- END CERTIFICATE -----"で囲まれたBase64エンコードDER証明書

そのため、厳密なpem形式を必要とするライブラリ(私はこれをJavaで遭遇しました)では、生成されたcrtは「無効なpem形式」として検証に失敗するでしょう。

BEGIN/END CERTIFICATEを使用して行をコピーまたはgrepし、cert.pemファイルに貼り付けても機能します。

これは私がしたことで、あまりきれいではありませんが、私のために機能します。基本的にはBEGIN行から始まるテキストをフィルタリングします。

grep -A 1000 BEGIN cert.crt> cert.pem

3
adityalad
  1. AppleIdによって暫定ポータルから証明書をダウンロードします。
  2. キーチェーンから証明書をエクスポートし、名前(Certificates.p12)を付けます。
  3. 上記のCertificates.p12ファイルを保存した端末とgotoフォルダを開きます。
  4. 以下のコマンドを実行してください。

    a)openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes

    b)openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts

  5. あなたの.pemファイルの準備が整いました "pushcert.pem"。
3
Ashvin Ajadiya
  • ターミナルを開きます。
  • 証明書が置かれているフォルダに移動します。
  • 下記のコマンドをあなたの証明書で名前を置き換えて実行してください。

openssl pkcs12 -in YOUR_CERTIFICATE.p12 -out YOUR_CERTIFICATE.pem -nodes -clcerts

  • それがうまくいくことを願っています!
0
Dhaval H. Nena