![CSR:提取 PKCS#7 中包含的 PKCS#10](https://linux22.com/image/671348/CSR%EF%BC%9A%E6%8F%90%E5%8F%96%20PKCS%237%20%E4%B8%AD%E5%8C%85%E5%90%AB%E7%9A%84%20PKCS%2310.png)
大家好:让我们看看是否有人可以帮助我 ;) 我在这个领域还很菜鸟,所以请温柔一点。在我的工作中,有人给我发了一个 CSR。此 CSR 是一个 PKCS#10 请求,包含在 PKC#7 请求中。我的任务是提取此 PKCS#10 请求。我找到了这个页面“CSR 分析失败“。我读了名为”的段落将 IIS7 证书请求 #PKCS7 - DER 生成的续订请求转换为 #PKCS10 格式的 CSR - PEM“它告诉你如何去做。
我按照他们的解释做了,但在运行最后一个命令(用我自己的名字)之后:
openssl req -inform der -in csr.der -out mynewcsr.csr
我收到此错误:
unable to load X509 request
9288:error:0D0680A8:asn1 encoding routines:ASN1_CHECK_TLEN:wrong tag:.\crypto\asn1\tasn_dec.c:1198:
9288:error:0D07803A:asn1 encoding routines:ASN1_ITEM_EX_D2I:nested asn1 error:.\crypto\asn1\tasn_dec.c:372:Type=X509_REQ_INFO
9288:error:0D08303A:asn1 encoding routines:ASN1_TEMPLATE_NOEXP_D2I:nested asn1 error:.\crypto\asn1\tasn_dec.c:694:Field=req_info, Type=X509_REQ
我一直在研究,这似乎是格式错误。一些文件(初始文件.csr一个或多个中间体企业社会责任其中一个)肯定是无效格式,所以我使用的其中一个命令无法处理它。
我确信从 ASN1 格式的 pkcs#7 解析出的字符串是正确的。
我无法向您展示原始文件,但它是 Base64 编码的,其开头和结尾如下:
-----BEGIN CERTIFICATE REQUEST-----
(...)
-----END CERTIFICATE REQUEST-----
任何想法?
答案1
我过去遇到过类似的问题,并使用 openssl 将证书转换为我需要的证书。
该网站似乎相当好地涵盖了这些命令,但我对他们的自动化工具一无所知,因此如果您选择这种方式,请谨慎使用。
https://www.sslshopper.com/ssl-converter.html
您也可以尝试 digicert 的网站,他们为初学者提供了许多有用的文档和工具。我曾经频繁使用它们一段时间,直到我习惯了 Linux 上的 openssl 工具。
也可能相关:
https://stackoverflow.com/questions/4691699/how-to-convert-crt-to-pem
作为参考,我在这里添加了命令:
将 PEM 转换为 DER
openssl x509 -outform der -in certificate.pem -out certificate.der
将 PEM 转换为 P7B
openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer
转换 PEM 到 PFX
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
将 DER 转换为 PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
将 P7B 转换为 PEM
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
将 P7B 转换为 PFX
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer
openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
转换 PFX 到 PEM
openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes
更深入地说,CSR 是使用私钥生成的。如果 CSR 格式错误,并且您需要使用现有私钥(例如无法生成新私钥),您可能需要尝试转换私钥,然后创建新的 CSR。然后告诉 CA 以何种格式颁发新证书。这应该可以消除不兼容性。
与往常一样,在尝试任何操作之前请先备份您已有的内容。