SSL証明書からPEMファイルを作成する方法
これらは私が利用できるファイルです:
.crt
server.csr
server.key
あなたの鍵はすでに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"という名前を付けることをお勧めします。
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
pem
ファイルには、証明書と秘密鍵が含まれています。証明書/キーの形式によって異なりますが、おそらくこれと同じくらい簡単です。
cat server.crt server.key > server.pem
さらに、パスフレーズを要求したくない場合は、次のコマンドを実行する必要があります。
openssl rsa -in server.key -out server.key
これは、.pemファイルを作成するための最良の選択肢です。
openssl pkcs12 -in MyPushApp.p12 -out MyPushApp.pem -nodes -clcerts
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
私はゴダディからアプリエンジンに行こうとしていました。トリックはこの行を使っていました:
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をアップロードしました。
..そしてそれはついにうまくいきました。
私が観察したことは、あなたが証明書を生成するために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
以下のコマンドを実行してください。
a)openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes
、
b)openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
openssl pkcs12 -in YOUR_CERTIFICATE.p12 -out YOUR_CERTIFICATE.pem -nodes -clcerts