如何从SSL证书创建PEM文件?

这些是我有可用的文件:

.crt server.csr server.key


当前回答

通过appleId从临时门户下载证书, 从密钥链导出证书并给出名称(Certificates.p12), 打开终端和goto文件夹,你保存上述证书。p12文件, 执行以下命令: a) openssl pkcs12 -in证书。p12 -out CertificateName. p12pem节点, b) openssl pkcs12 -in证书。P12 -out pushcert。Pem -nodes -clcerts 您的。pem文件准备“pushcert.pem”。

其他回答

这是创建.pem文件的最佳选项

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

pem文件包含证书和私钥。这取决于你的证书/密钥的格式,但可能就像这样简单:

cat server.crt server.key > server.pem

我需要为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格式,但只是以.crt或.key命名。

如果文件的内容以-----BEGIN开头,你可以在文本编辑器中阅读它:

该文件使用base64,它在ASCII中可读,而不是二进制格式。证书已经是PEM格式。只需将扩展名更改为.pem。

如果文件是二进制文件:

对于服务器。Crt,你会用

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

为服务器。密钥,使用openssl rsa代替openssl x509。

服务器。Key可能是您的私钥,.crt文件是返回的、签名的x509证书。

如果这是针对Web服务器,并且您不能指定加载单独的私钥和公钥:

您可能需要连接这两个文件。对于这种用途:

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

我建议使用“inclesprivatekey”来命名文件,以帮助您管理与此文件保持的权限。

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

.pem -(隐私增强邮件)Base64编码DER证书, 附上证书”——开始——“和”——之间结束 证书——”

因此,对于一些库(我在java中遇到过这种情况),期望严格的pem格式,生成的crt会作为“无效的pem格式”验证失败。

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

以下是我所做的,不是很干净,但对我来说很有用,基本上它从BEGIN行开始过滤文本:

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