ssl - 私钥与证书不匹配
问题描述
我在从中生成 CSR 和证书时遇到了一些奇怪的问题,我不完全理解。
这是我所做的:
生成私钥和 CSR(如果有任何意义,请在 WSL 上的 Ubuntu 上完成)
openssl req -newkey rsa:2048 -keyout PRIVATEKEY.key -out MYCSR.csr
将其上传到 CA 并取回一个-----BEGIN CERTIFICATE-----
以 PEM 编码证书开头的证书,对吗?
尝试将所有这些组合到 PFX 中以方便使用
openssl pkcs12 -export -out CERTIFICATE.pfx -inkey PRIVATEKEY.key -in CERTIFICATE.cer
然后它要求提供私钥,然后抛出错误No certificate matches private key
有人建议将证书从 DER 重新编码为 PEM,但这只会引发错误,表明证书已经是 X509
sudo openssl x509 -inform DER -outform PEM -in CERTIFICATE.cer -out CERTIFICATE.pem
unable to load certificate
140390322082240:error:0D0680A8:asn1 encoding routines:asn1_check_tlen:wrong tag:../crypto/asn1/tasn_dec.c:1130:
140390322082240:error:0D07803A:asn1 encoding routines:asn1_item_embed_d2i:nested asn1 error:../crypto/asn1/tasn_dec.c:290:Type=X509
以下命令生成相当合理的输出,因此证书在某种程度上似乎没问题
openssl x509 -in CERTIFICATE.cer -text -noout
如果这对任何人有任何用处,CA 就是 Telia。我过去曾遇到过一些问题,例如 Digicert 的证书实用程序由于某种原因无法识别他们的证书(但这当然可能是由于我使用了错误的文件扩展名或其他原因)。
解决方案
此问题是由于 Telia 用户界面中的续订过程造成的,它允许您在续订期间上传新的 CSR,但它实际上忽略了这一点,并在不告诉您的情况下使用旧的 CSR。
推荐阅读
- push-notification - 如何为 Progressive Web App 通知选择推送服务器?
- c++11 - 在 C++ 中删除表情
- python-3.x - 伙计们,我在尝试完成这项工作时遇到了很多麻烦,itemconfig 无法正常工作
- android - 如何检查Android设备中是否存在应用程序?
- android - 如何使用 Retrofit 2 POST 方法下载 PDF?
- c# - Xamarin.Forms - 将模型列表绑定到网格?
- python - 根据条件在数据框中查找值
- javascript - Java Servlet 返回错误数据?
- visual-studio-extensions - VSIX - 将项目添加到“文件”>“新建”菜单
- c# - .Net Core Impersonation 不适用于 Process.Start