问题描述
使用以下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中的域与通配符证书不匹配,但是我们不确定如何解决此问题。
解决方法
事实证明,该问题与域级别以及通配符*
的位置有关。
*.host.com
仅匹配单个级别的子域,而不匹配“子子域”。
因此testmy.host.com
有效,但test.my.host.com
无效。为了使后者起作用,需要另一个通配符证书*.my.host.com
。