如何从SSL证书创建PEM文件?
这些是我有可用的文件:
.crt server.csr server.key
如何从SSL证书创建PEM文件?
这些是我有可用的文件:
.crt server.csr server.key
您的密钥可能已经是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”来命名文件,以帮助您管理与此文件保持的权限。
我需要为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
我观察到的是:如果您使用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
通过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
我试着从godaddy转到应用引擎。诀窍是用这句话:
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
然后我使用了来自谷歌应用自定义域SSL的麻烦的这些说明,它们是:
openssl rsa -in privateKey.key -text > private.pem
openssl x509 -inform PEM -in www_mydomain_com.crt > public.pem
完全一样,只是不是privateKey。我使用的密钥name.unencrypted.priv。键,而不是www_mydomain_com。我用的是name。crt
然后我上传了公众。pem到管理控制台获取“pem编码的X.509证书”,并上传私有文件。pem为“未加密的pem编码的RSA私钥”。
.. 这最终奏效了。
我尝试上传GoDaddy证书到AWS失败了几次,但最后还是很简单。不需要将任何东西转换为.pem。你只需要确保在chain参数中包含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
打开终端。 转到证书所在的文件夹。 执行以下命令,用证书替换名称。
openssl pkcs12 -in YOUR_CERTIFICATE. inp12 -out YOUR_CERTIFICATE. outPem -nodes -clcerts
希望它能奏效!!
所有文件(*.)crt,服务器。csr, server.key)可能已经是PEM格式的,接下来如何处理这些文件取决于您想如何使用它们,或者什么工具正在使用它们以及需要哪种格式。
在这里,我将进一步解释用于存储加密材料的不同格式,以及如何识别它们以及将它们转换为/从另一个格式。
标准
Standards | Content format | File encoding | Possible content |
---|---|---|---|
X509 | X | Certificates | |
PKCS#1 | X | RSA keys (public/private) | |
PKCS#7 | X | Certificates, CRLs | |
PKCS#8 | X | Private keys, encrypted private keys | |
PKCS#12 | X | Certificates, CRLs, private keys | |
JKS | X | Certificates, private keys | |
PEM | X | ||
DER | X |
常见的组合
Content \ Encoding | PEM (*) | DER (**) | Binary |
---|---|---|---|
X509 | X | X | |
PKCS#1 | X | X | |
PKCS#7 (***) | X | X | |
PKCS#8 | X | X | |
PKCS#12 (***) | X | ||
JKS (***) | X |
这是一个要点,解释了同样的事情+转换/验证/检查的命令。
总之,使用密码学/PKI材料的典型步骤:
了解它们的格式(使用验证/检查命令) 了解它们需要哪种格式(阅读文档) 使用转换命令转换文件 可选:使用verification/inspection命令对转换后的文件进行校验
在Windows上,你可以使用certutil工具:
certutil -encode server.crt cert.pem
certutil -encode server.key key.pem
你可以在PowerShell中将两个文件合并为一个文件,如下所示:
Get-Content cert.pem, key.pem | Set-Content cert-and-key.pem
在CMD中,像这样:
copy cert.pem+key.pem cert-and-key.pem /b