使用Http.sys和服务结构的asp.net核心上的通配符证书问题

时间:2019-02-13 05:41:05

标签: asp.net-core ssl-certificate azure-service-fabric

我一直在运行使用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中的群集证书,并且可以在此处正常工作,并且可以毫无问题地用于应用程序服务下的另一个域。

1 个答案:

答案 0 :(得分:0)

我设法弄清了这个问题,它实际上与SSL证书无关。在缩小范围并找出问题所在之后,我发现我有一个已加密的参数,需要使用新的加密证书(SecretsCertificate)对其进行加密。该错误信息具有误导性。它应该说的是...

"Cannot find the certificate and private key to use for decryption of an encrypted Parameter"

请注意使用SecretsCertificate的任何人。如果您在不同环境之间切换证书,请确保清单/云/本地xml文件中的所有加密设置都已使用您在SecretsCertificate中使用指纹所指的证书进行了加密。