繁体   English   中英

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

[英]How to get .pem file from .key and .crt files?

如何从 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”命名文件,以帮助您管理您对该文件保留的权限。

我需要为 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

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

cat server.crt server.key > server.pem

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

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

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

openssl pkcs12 -in MyPushApp.p12 -out MyPushApp.pem -nodes -clcerts
  1. 通过appleId从临时门户下载证书,
  2. 从钥匙链导出证书并给出名称(Certificates.p12),
  3. 打开终端并转到保存上述 Certificates.p12 文件的文件夹,
  4. 运行以下命令:

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

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

  5. 你的 .pem 文件准备好了“pushcert.pem”。

我试图从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

然后我使用了 Google Apps Custom Domain SSL 中的这些说明,它们是:

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,而不是 www_mydomain_com.crt,我用 name.crt

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

..这终于奏效了。

我观察到的是:如果您使用 openssl 生成证书,它会同时捕获 crt 文件中的文本部分和 base64 证书部分。 严格的 pem 格式说( wiki 定义)文件应该以 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

尝试将 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
  • 打开终端。
  • 转到您的证书所在的文件夹。
  • 通过用您的证书替换名称来执行以下命令。

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

  • 希望它会起作用!!

在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、server.csr、server.key)可能已经是 PEM 格式,接下来如何处理这些文件取决于您要如何使用它们,或者使用什么工具以及以何种格式使用它们这个需要。

我将在这里进一步解释用于存储密码学材料的不同格式以及如何识别它们以及将它们转换为另一种格式。

标准

标准 内容格式 文件编码 可能的内容
X509 X 证书
PKCS#1 X RSA 密钥(公共/私有)
PKCS#7 X 证书、CRL
PKCS#8 X 私钥、加密私钥
PKCS#12 X 证书、CRL、私钥
JKS X 证书、私钥
PEM X
DER X

常见组合

内容\\编码 PEM (*) 德 (**) 二进制
X509 X X
PKCS#1 X X
PKCS#7 (***) X X
PKCS#8 X X
PKCS#12 (***) X
JKS (***) X

这是一个要点,解释了相同的事情 + 用于转换/验证/检查的命令。

总之,使用密码学/PKI 材料的典型步骤:

  • 了解它们的格式(使用验证/检查命令)
  • 了解它们需要哪种格式(阅读文档)
  • 使用转换命令转换文件
  • 可选:使用验证/检查命令来验证转换后的文件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM