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

Ssl 如何从.key和.crt文件中获取.pem文件?,ssl,openssl,pem,asn.1,der,Ssl,Openssl,Pem,Asn.1,Der,如何从SSL证书创建PEM文件 以下是我可用的文件: .crt server.csr server.key pem文件包含证书和私钥。这取决于证书/密钥的格式,但可能很简单: cat server.crt server.key > server.pem 您的密钥可能已经是PEM格式,但仅以.crt或.key命名 如果文件内容以----BEGIN开头,您可以在文本编辑器中阅读: 该文件使用base64,它是可读的ASCII格式,而不是二进制格式。证书已采用PEM格式。把分机换成.pem就

如何从SSL证书创建PEM文件

以下是我可用的文件:

  • .crt
  • server.csr
  • server.key

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

cat server.crt server.key > server.pem

您的密钥可能已经是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”命名文件,以帮助您管理此文件的权限。

此外,如果您不希望它要求密码,则需要运行以下命令:

openssl rsa -in server.key -out server.key

我需要为AWS ELB做这个。在多次被对话击败后,我终于明白了这一点:

openssl rsa -in server.key -text > private.pem
openssl x509 -inform PEM -in server.crt > public.pem
谢谢

编辑:正如@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/

我观察到的是:如果使用openssl生成证书,它会捕获crt文件中的文本部分和base64证书部分。严格的pem格式规定()文件应以BEGIN和end开头和结尾

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

因此,对于一些希望使用严格pem格式的库(我在java中遇到过这种情况),生成的crt将因“无效pem格式”而无法通过验证

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

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

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

  • 通过appleId从临时门户下载证书
  • 从密钥链导出证书并给出名称(Certificates.p12)
  • 打开保存上述Certificates.p12文件的terminal and goto文件夹
  • 运行以下命令:

    a)
    openssl pkcs12-in Certificates.p12-out CertificateName.pem-nodes

    b)
    openssl pkcs12-in Certificates.p12-out pushcert.pem-nodes-clcerts

  • 您的.pem文件已准备就绪“pushcert.pem”

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

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

    我试着从godaddy转到AppEngine。使用这句话的诀窍是什么:

    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
    
    然后我使用了来自的以下说明:

    openssl rsa -in privateKey.key -text > private.pem
    openssl x509 -inform PEM -in www_mydomain_com.crt > public.pem
    
    一模一样,除了我用name.unencrypted.priv.key代替privateKey.key外,我用name.crt代替www_mydomain_com.crt

    然后,我将public.pem上载到管理控制台以获取“pem编码的X.509证书”,并将private.pem上载到“未加密的pem编码的RSA私钥”


    。。这终于奏效了。

    尝试将GoDaddy证书上传到AWS时,我失败了好几次,但最终还是很简单。不需要将任何内容转换为.pem。您只需确保在chain参数中包含GoDaddy bundle证书,例如

    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-在您的_CERTIFICATE.p12中-在您的_CERTIFICATE.pem中-节点-clcerts

    • 希望它能起作用
    检查server.key的格式。我只是以为是RSA。但是阅读文件的第一行可能会告诉你这一点。只需一个提示,
    cat server.crt server.key>server.pem
    不会将打开的注释放在它自己的行上,这似乎是一个要求。快递邮件给了我很多麻烦,我花了好几个小时才弄清楚到底出了什么问题。谢谢格雷厄姆。不同的工具将以不同的方式生成文件,最终,一些验证是好的。例如,当我执行这些步骤时,文件以一个换行符结尾。只是说cat
    server.crt server.key>server.includesprivatekey.pem
    对于使用haproxy 1.5.Hi的SSL非常有用,我已经使用命令openssl req-x509-sha256-nodes-days 365-newkey rsa:2048-keyout a.key-out a.crt生成了自签名证书。a.key和a.crt都有------从开头开始,这意味着它们都是PEM格式吗?如果您想要一个以
    开头的文件------BEGIN rsa PRIVATE key------
    和一个以
    开头的文件------BEGIN加密私钥------
    ,这是您要使用的命令。另一个选项是通过
    openssl x509
    传递非严格证书。它将输出一个有效的PEM证书:
    cat certificate.crt | openssl x509>certificate.PEM
    ,如果您想获取从“开始”到结束的所有内容