2009-06-13 127 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

  • 希望这将工作!