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

这些是我有可用的文件:

.crt server.csr server.key


当前回答

打开终端。 转到证书所在的文件夹。 执行以下命令,用证书替换名称。

openssl pkcs12 -in YOUR_CERTIFICATE. inp12 -out YOUR_CERTIFICATE. outPem -nodes -clcerts

希望它能奏效!!

其他回答

我需要为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 rsa -in server.key -out server.key

在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

所有文件(*.)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命令对转换后的文件进行校验

我试着从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私钥”。

.. 这最终奏效了。