-----BEGIN CERTIFICATE----- [...]Many letters and digits[...] -----END CERTIFICATE-----
.cer
我正在尝试从中创建一个文件text
使用此处的说明。除了证书文本,我还需要传递私钥文本 (如果错了请纠正我)就像这样OpenSSL命令行:
openssl pkcs12 -export -out mycertkey.p12 -in certificate.txt -inkey key.txt
更新:这创建 PKCS#12 (PFX) 文件StartSSL 网站上的选项也需要文本形式的私钥。已尝试迈克尔的 评论
根据最近与 StartSSL 人员的对话,我尝试在转换器网站但没有生成 .cer 文件的选项
根据我与 StartSSL 人员的讨论电子邮件,我相信私钥在我的 CSR 中,但是当我使用pkcs
OpenSSL 工具上的实用程序将其作为密钥提供时,并没有得到很好的结果:
问题:我如何提供私钥文本?我的意思是 StartSSL 工具箱上的私钥文本在哪里?或者我如何从证书中提取它作为文本?
答案1
你说你想创建一个.cer
文件,但你链接的说明并没有这样做。.cer
文件通常包含仅有的一个证书,或者很少是多个证书,而一个.p12
或一个.pfx
文件(它们基本上是同一个东西)的全部目的是包含一个私钥和证书。如果您尝试运行 SSL/TLS 服务器(例如 HTTPS,但也包括 LDAPS SMTPS FTPS 等),则您确实需要私钥和证书,否则通常不需要。
私钥用于生成CSR,但不在其中;CSR 已发送给其他人,因此它不是私有的。它不在 StartSSL 中,因为那不是私有的。它不在您的证书中,因为那不是私有的。
看看你的.pfx
with中有什么openssl pkcs12 -in whatever.pfx -nodes
。如果输出至少包含一个以一行开头的块,后面跟着几行全部或几乎全部字母和数字,那么你就有-----BEGIN PRIVATE KEY-----
一行-----END PRIVATE KEY-----
一些私钥。(如果使用版本低于 1.0.0 的 OpenSSL,它将显示RSA PRIVATE KEY
而不是PRIVATE KEY
。)如果是这样,请执行以下操作:
openssl pkcs12 -in whatever.pfx -nocerts -nodes -out key.txt
。
现在尝试openssl pkcs12 -export
在你的问题中。如果它没有给出错误,并且没有说“没有证书与私钥匹配”,您有正确的密钥。此时,结果可以导入到 Windows 存储并由 IIS 等程序使用,或由 Tomcat 等程序直接使用。
但是,SSL/TLS 服务器还应具有链证书。如今,CA 大多使用一个链证书(以及根证书,但这里不需要);有些使用两个或更多。哪个链证书是正确的,取决于您获得的证书类型(验证和类别);StartSSL 网站应该可以告诉您。如果您没有获取和配置正确的链证书,您的服务器将运行,但客户端有时会无法连接到它,可能几乎总是如此,也可能很少如此。获取 PEM 格式的正确链证书(您已经看到的格式,通过-----BEGIN CERTIFICATE-----
)-----END CERTIFICATE-----
,并将它们放在文件中,例如chain.txt
,然后添加-certfile chain.txt
到您的pkcs12 -export
命令中。
PS- 大多数人和示例都使用.pem
not.txt
作为这些 PEM 格式文件的扩展名。openssl
无论哪种方式,软件都可以使用,但这种方式对人们来说更有意义、更有帮助。