我一直在运行使用http.sys侦听器类型下的自签名ssl证书的开发和测试Service Fabric群集,没有任何问题。现在,我准备投入生产,我从DigiCert创建了一个真实的SSL证书,作为具有多个使用者备用名称的通配符证书。但是,当尝试在本地运行以验证配置时出现此错误时,它将失败并且诊断信息将报告
"Cannot find the certificate and private key to use for decryption".
发出一个:
netsh http show sslcert
表明它正在正确注册证书
IP:port : 0.0.0.0:8113
Certificate Hash : 9e324673476570cc51a8dff7789f6cf8436cec38
Application ID : {c5f2a686-3b30-4490-b86e-cb88b15fd92b}
Certificate Store Name : My
Verify Client Certificate Revocation : Disabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check : Enabled
Revocation Freshness Time : 0
URL Retrieval Timeout : 0
Ctl Identifier : (null)
Ctl Store Name : (null)
DS Mapper Usage : Disabled
Negotiate Client Certificate : Disabled
Reject Connections : Disabled
Disable HTTP2 : Not Set
Disable QUIC : Not Set
Disable TLS1.3 : Not Set
Disable OCSP Stapling : Not Set
我用指纹告诉在ApplicationManifest.xml的EndpointCertificate元素中使用它(9e324673476570570cc51a8dff7789f6cf8436cec38)。该证书与有效密钥一起有效。此证书与自签名开发者/测试者之间的唯一区别是“主题”和“主题备用名称”属性。开发者/测试者有一个虚拟域,如dev.sample.com,但真正的域是* .myrealdomain.com。
有什么主意,当明显有该指纹的有效证书存在并且正在netsh中正确注册时,为什么会引发此错误?
此外,此证书也用作放置在Azure Key Vault中的群集证书,并且可以在此处正常工作,并且可以毫无问题地用于应用程序服务下的另一个域。
答案 0 :(得分:0)
我设法弄清了这个问题,它实际上与SSL证书无关。在缩小范围并找出问题所在之后,我发现我有一个已加密的参数,需要使用新的加密证书(SecretsCertificate)对其进行加密。该错误信息具有误导性。它应该说的是...
"Cannot find the certificate and private key to use for decryption of an encrypted Parameter"
请注意使用SecretsCertificate的任何人。如果您在不同环境之间切换证书,请确保清单/云/本地xml文件中的所有加密设置都已使用您在SecretsCertificate中使用指纹所指的证书进行了加密。