如何从SSL证书创建PEM文件?
这些是我提供的文件:
.crt
server.csr
server.key
尝试将GoDaddy证书上传到AWS我失败了几次,但最后它非常简单 . 无需将任何内容转换为.pem . 您只需确保在链参数中包含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
pem 文件包含证书和私钥 . 这取决于你的证书/密钥所在的格式,但可能就像这样简单:
pem
cat server.crt server.key > server.pem
我观察到的是:如果使用openssl生成证书,它会捕获crt文件中的text部分和base64证书部分 . 严格的pem格式表示(wiki definition)文件应以BEGIN和END开头和结尾 .
.pem - (隐私增强邮件)Base64编码的DER证书,包含在“----- BEGIN CERTIFICATE -----”和“----- END CERTIFICATE -----”之间
因此对于一些期望严格的pem格式的库(我在java中遇到过这种情况),生成的crt会使验证失败为“无效的pem格式” .
即使您使用BEGIN / END CERTIFICATE复制或grep这些行,并将其粘贴到cert.pem文件中,它也应该有效 .
这是我做的,不是很干净,但对我有用,基本上它从BEGIN行开始过滤文本:
grep -A 1000 BEGIN cert.crt> cert.pem
您的密钥可能已经采用PEM格式,但只能使用.crt或.key命名 .
If the file's content begins with -----BEGIN and you can read it in a text editor:
该文件使用base64,它以ASCII格式读取,而不是二进制格式 . 证书已采用PEM格式 . 只需将扩展名更改为.pem即可 .
If the file is in binary:
对于server.crt,您可以使用
openssl x509 -inform DER -outform PEM -in server.crt -out server.crt.pem
对于server.key,使用 openssl rsa 代替 openssl x509 .
openssl rsa
openssl x509
server.key可能是您的私钥,.crt文件是返回的,签名的x509证书 .
If this is for a Web server and you cannot specify loading a separate private and public key:
您可能需要连接这两个文件 . 用于此用途:
cat server.crt server.key > server.includesprivatekey.pem
我建议使用“includesprivatekey”命名文件,以帮助您管理对此文件保留的权限 .
由appleId从临时门户下载证书,
从钥匙链中导出证书并给出名称(Certificates.p12),
打开终端和goto文件夹,保存上面的Certificates.p12文件,
运行以下命令:
a) openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes ,
openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes
b) openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
openssl pkcs12 -in Certificates.p12 -out pushcert.pem -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:// 前缀文件名 . 所以它看起来像:
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 pkcs12 -in YOUR_CERTIFICATE.p12 -out YOUR_CERTIFICATE.pem -nodes -clcerts
此外,如果您不希望它要求密码,则需要运行以下命令:
openssl rsa -in server.key -out server.key
我试图从godaddy转到app引擎 . 诀窍是使用这条线:
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
然后我使用了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私钥” .
..那最终奏效了 .
这是创建.pem文件的最佳选择
openssl pkcs12 -in MyPushApp.p12 -out MyPushApp.pem -nodes -clcerts
10 回答
尝试将GoDaddy证书上传到AWS我失败了几次,但最后它非常简单 . 无需将任何内容转换为.pem . 您只需确保在链参数中包含GoDaddy捆绑证书,例如
要删除以前失败的上传,您可以这样做
pem
文件包含证书和私钥 . 这取决于你的证书/密钥所在的格式,但可能就像这样简单:我观察到的是:如果使用openssl生成证书,它会捕获crt文件中的text部分和base64证书部分 . 严格的pem格式表示(wiki definition)文件应以BEGIN和END开头和结尾 .
因此对于一些期望严格的pem格式的库(我在java中遇到过这种情况),生成的crt会使验证失败为“无效的pem格式” .
即使您使用BEGIN / END CERTIFICATE复制或grep这些行,并将其粘贴到cert.pem文件中,它也应该有效 .
这是我做的,不是很干净,但对我有用,基本上它从BEGIN行开始过滤文本:
您的密钥可能已经采用PEM格式,但只能使用.crt或.key命名 .
If the file's content begins with -----BEGIN and you can read it in a text editor:
该文件使用base64,它以ASCII格式读取,而不是二进制格式 . 证书已采用PEM格式 . 只需将扩展名更改为.pem即可 .
If the file is in binary:
对于server.crt,您可以使用
对于server.key,使用
openssl rsa
代替openssl x509
.server.key可能是您的私钥,.crt文件是返回的,签名的x509证书 .
If this is for a Web server and you cannot specify loading a separate private and public key:
您可能需要连接这两个文件 . 用于此用途:
我建议使用“includesprivatekey”命名文件,以帮助您管理对此文件保留的权限 .
由appleId从临时门户下载证书,
从钥匙链中导出证书并给出名称(Certificates.p12),
打开终端和goto文件夹,保存上面的Certificates.p12文件,
运行以下命令:
a)
openssl pkcs12 -in Certificates.p12 -out CertificateName.pem -nodes
,b)
openssl pkcs12 -in Certificates.p12 -out pushcert.pem -nodes -clcerts
我需要为AWS ELB执行此操作 . 经过对话多次殴打后,最终这对我有用:
谢谢NCZ
编辑:正如@floatingrock所说
使用AWS,不要忘记使用
file://
前缀文件名 . 所以它看起来像:http://docs.aws.amazon.com/cli/latest/reference/iam/upload-server-certificate.html
打开终端 .
转到证书所在的文件夹 .
通过将名称替换为证书来执行以下命令 .
此外,如果您不希望它要求密码,则需要运行以下命令:
我试图从godaddy转到app引擎 . 诀窍是使用这条线:
完全一样,但用我的域名替换名称(不是它真的很重要)
我回答了有关通用名称/组织的所有问题,如www.name.com
然后我打开csr,复制它,粘贴在go daddy中,然后下载它,解压缩它,导航到终端的解压缩文件夹并输入:
然后我使用了Trouble with Google Apps Custom Domain SSL中的这些指令,它们是:
完全一样,除了privateKey.key,我使用name.unencrypted.priv.key,而不是www_mydomain_com.crt,我使用name.crt
然后我将public.pem上传到管理控制台以获取“PEM编码的X.509证书”,并将private.pem上传为“未加密的PEM编码的RSA私钥” .
..那最终奏效了 .
这是创建.pem文件的最佳选择