CSR:提取 PKCS#7 中包含的 PKCS#10

CSR:提取 PKCS#7 中包含的 PKCS#10

大家好:让我们看看是否有人可以帮助我 ;) 我在这个领域还很菜鸟,所以请温柔一点。在我的工作中,有人给我发了一个 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 以何种格式颁发新证书。这应该可以消除不兼容性。

与往常一样,在尝试任何操作之前请先备份您已有的内容。

相关内容