我如何从SSL证书创建PEM文件?
我有以下文件可用:
.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
我建议将文件命名为“includesprivatekey”,以帮助您管理保留此文件的权限。
cat server.crt server.key > server.pem
命令不会将开放注释置于单独的一行,而这似乎是必需的。Courier 邮件系统让我很苦恼,我花了数小时才弄清楚问题出在哪里。 - Graham Walterscat server.crt server.key > server.includesprivatekey.pem
可以方便地为haproxy 1.5配置SSL。 - jimm101我需要为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
file://
。这样它会看起来像这样:aws iam upload-server-certificate --server-certificate-name blah --certificate-body file://~/Desktop/server.crt --private-key file://~/Desktop/private.key --path /cloudfront/static/
- FloatingRockpem
文件包含证书和私钥。它取决于您的证书/密钥的格式,但可能只是这么简单:
cat server.crt server.key > server.pem
此外,如果您不想让它要求输入密码,则需要运行以下命令:
openssl rsa -in server.key -out server.key
-----BEGIN RSA PRIVATE KEY-----
开头的文件,但只有一个以 -----BEGIN ENCRYPTED PRIVATE KEY-----
开头的文件,那么您需要使用这个命令。 - Philippe Gerber这是创建 .pem 文件的最佳选项。
openssl pkcs12 -in MyPushApp.p12 -out MyPushApp.pem -nodes -clcerts
这是一个Gist,它解释了相同的内容并提供了转换/验证/检查命令。
总之,处理加密/PKI材料的典型步骤如下:
我想从godaddy转移到app engine。关键在于使用了以下这行代码:
openssl req -new -newkey rsa:2048 -nodes -keyout name.unencrypted.priv.key -out name.csr
将名称替换为我的域名(实际上并不重要)。
我回答了所有与通用名称/组织相关的问题,如www.name.com。
然后我打开了csr,复制了它,在GoDaddy中粘贴了它,然后下载了它,解压缩了它,使用终端导航到未压缩的文件夹,并输入:
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私钥”。最终,这样做可以解决问题。
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
openssl x509
传递非严格证书。它将输出有效的PEM证书:cat certificate.crt | openssl x509 > certificate.pem
- T0xicCodesed -n '/--BEGIN/,$p' cert.crt
。解释一下:"-n"告诉sed默认不打印任何东西,然后范围表达式/--BEGIN/,$
使得p
命令(打印)适用于包含"--BEGIN"的第一行和文件末尾($
)之间的行。 - dannysaueraws 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
.pem
转换为.crt
和.key
。 - kenorb