如何从.key和.crt文件获取.pem文件?

如何从SSL证书创buildPEM文件?

这些是我可用的文件:

  • .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服务器,并且您不能指定加载一个单独的私钥和公钥:

您可能需要连接两个文件。 为了这个用途:

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

我build议用“includesprivatekey”命名文件来帮助你pipe理你用这个文件保留的权限。

我需要为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 

这是创build.pem文件的最佳select

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

我观察到的是:如果您使用openssl生成证书,它将捕获文本部分和crt文件中的base64证书部分。 严格的pem格式说( wiki定义 )文件应该以BEGIN和END开始和结束。

.pem – (隐私增强邮件)Base64编码的DER证书,包含在“—– BEGIN CERTIFICATE —–”和“—– END CERTIFICATE —–”之间

所以对于一些需要严格的pem格式的库(我在java中遇到过这个),生成的crt会以“无效的pem格式”作为validation失败。

即使您使用BEGIN / END CERTIFICATE复制或grep行,并将其粘贴到cert.pem文件,它应该工作。

这是我做的,不是很干净,但为我工作,基本上它过滤从BEGIN行开始的文本:

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

我正试图从godaddy到应用程序引擎。 这条线使用了什么:

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

完全一样,但用我的域名取代了名字(不是说它真的甚至不重要)

我把所有关于通用名称/组织的问题作为www.name.com回答

然后我打开csr,复制它,粘贴到爸爸,然后下载它,解压缩,导航到与terminal解压缩的文件夹,并input:

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

然后,我使用了来自Google Apps自定义域SSL的Trouble的这些说明,这些说明是:

 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证书”的pipe理控制台,并上传了“未encryption的PEM编码的RSA私钥”的private.pem。

这最后工作。

尝试将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 
  1. 从appleId下载临时门户的证书,
  2. 从钥匙链输出证书并给出姓名(Certificates.p12),
  3. 打开terminal和goto文件夹,在上面保存Certificates.p12文件,
  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”。
  • 打开terminal。
  • 转到您的证书所在的文件夹。
  • 通过用您的证书replace名称来执行以下命令。

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

  • 希望它能工作!