带有通配符证书的Kestrel HTTPS端点

问题描述

使用以下appsettings.json文件为Kestrel ASP.NET Web API主机加载通配符证书时,我们面临一个问题:

"Kestrel": {
  "EndPoints": {
    "HttpsInlineCertStore": {
      "Url": "https://test.my.host.com:443","Certificate": {
        "Subject": "*.host.com","Store": "My","Location": "LocalMachine","AllowInvalid": "true"
      }
    }
  }
}

在Chrome中,我们收到NET::ERR_CERT_COMMON_NAME_INVALID错误,在Firefox SSL_ERROR_BAD_CERT_DOMAIN中。

自然,URL中的域与通配符证书不匹配,但是我们不确定如何解决此问题。

enter image description here

解决方法

事实证明,该问题与域级别以及通配符*的位置有关。

*.host.com仅匹配单个级别的子域,而不匹配“子子域”。

因此testmy.host.com有效,但test.my.host.com无效。为了使后者起作用,需要另一个通配符证书*.my.host.com