2009-06-13 71 views

回答

587

你的鑰匙可能已經在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 x509使用openssl rsa

server.key可能是您的私鑰,.crt文件是返回的,已簽名的x509證書。

如果這是一個Web服務器,你不能指定加載一個獨立的私人和公共密鑰:

您可能需要連接的兩個文件。對於這一點:

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

我會建議用「includesprivatekey」來幫助你管理你跟上這個文件的權限命名文件。

68

一個pem文件包含證書和私鑰。這取決於格式的證書/密鑰都在,但可能是這樣簡單:

cat server.crt server.key > server.pem 
+0

i繼續得到`-bash:server.key.pem:權限被拒絕' – 2014-03-25 00:42:35

+2

@tq:這意味着你不能讀取或寫入該文件。 – sth 2014-03-25 01:29:41

+0

謝謝@sth會尋找權限。但我正在用sudo命令執行此操作 – 2014-03-25 02:37:19

18

此外,如果你不希望它要求一個密碼,然後需要運行下面的命令:

openssl rsa -in server.key -out server.key 
178

我需要一個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

3

我所觀察到的是:如果你使用OpenSSL生成證書,它抓住了這兩個文本組成部分,在CRT文件中的Base64證書的一部分。嚴格的pem格式表示(wiki definition)該文件應以BEGIN和END開始和結束。

.PEM - (增強保密郵件)Base64編碼DER證書, 之間 「----- BEGIN CERTIFICATE -----」 和「----- END CERTIFICATE封閉---- - 「

因此對於一些需要嚴格pem格式的庫(我在java中遇到過這種情況),生成的crt將無法將驗證視爲」無效的pem格式「。

即使您使用BEGIN/END CERTIFICATE複製或grep行,並將其粘貼到cert.pem文件中,它也應該可以工作。

這是我做的,不是很乾淨,但對我的作品,基本上它過濾的文本從BEGIN行開始:

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

從臨時的AppleID門戶
2
  1. 下載證書,從鑰匙扣
  2. 導出證書,並給予名稱(Certificates.p12)
  3. 打開終端和其保存上述文件Certificates.p12轉到文件夾,下面的命令
  4. 運行:

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

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

  5. 您的.pem文件準備好 「pushcert.pem」。
13

這是創建的.pem文件

openssl pkcs12 -in MyPushApp.p12 -out MyPushApp.pem -nodes -clcerts 
2

我試圖從GoDaddy的去應用程序引擎的最佳選擇。訣竅是用什麼做這一行:

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

究竟原樣,但我的域名(其實不是真的連要緊)

更換名字和我回答關於通用名稱的所有問題/組織爲www.name。COM

然後我打開了CSR,複製它,在去爸爸粘貼,然後下載下來,解壓縮它,導航到與終端解壓後的文件夾,然後進入:

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

然後我用這些指令從Trouble with Google Apps Custom Domain 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

然後我上傳的public.pem到管理控制檯的「PEM編碼的X.509證書」,並上傳了private.pem爲「未加密的PEM編碼的RSA私鑰」 ..

..這終於工作了。

3

嘗試將GoDaddy證書上傳到AWS我失敗了幾次,但最後它非常簡單。無需將任何內容轉換爲.pem。您只需確保在鏈參數中包含GoDaddy軟件包證書,例如

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 
0
  • 打開終端。
  • 轉到您的證書所在的文件夾。
  • 通過用您的證書替換名稱來執行以下命令。

OpenSSL的PKCS12 -in YOUR_CERTIFICATE.p12退房手續YOUR_CERTIFICATE.pem -nodes -clcerts

  • 希望這將工作!
相關問題