You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

IIS下不带www站点SSL有效 带www站点SSL证书无效如何解决

问题根因

证书校验失败核心是SSL通配符匹配规则和你写的证书SAN配置不匹配,记住两个硬规则就行:

  • 通配符*只能匹配域名最左边、被两个点夹着的一整段字符(也就是一个标签),不能跨层级,更不能写在域名中间位置,写在中间的通配符浏览器直接不认。
  • 现在所有现代浏览器校验证书域名,根本不看证书的「使用者(CN)」字段,只认「使用者备用名称(SAN)」里列的条目。

你现在证书里的两个SAN条目问题很明确:

  • *.local.com:只能匹配类似example.local.com这种只有一级子域名的地址,这也是你访问不带www的地址正常的原因。但www.example.local.com比它多了一层,匹配不上。
  • www.*.local.com:通配符写在了第二个标签段,不是最左边,属于不符合规范的无效配置,浏览器直接忽略这个条目,自然不会拿它匹配www开头的地址。
解决方法

重新生成自签名证书就行,根据自己的需求选一种命令执行:

方案1:只给当前两个域名用(最稳,不会有兼容问题)

如果就用example.local.com和www.example.local.com这俩地址,完全没必要用通配符,直接把两个域名写进SAN,生成命令:

New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "example.local.com","www.example.local.com" -FriendlyName "local_iis_cert" -NotAfter (Get-Date).AddYears(10) -KeyAlgorithm RSA -KeyLength 2048

方案2:需要通配符覆盖多个同格式域名

如果后续还要加其他xxx.local.com、www.xxx.local.com类的测试域名,就写两个合法的通配符条目:*.local.com覆盖所有单级子域名,*.example.local.com覆盖example.local.com下的所有子域名(包括www.example.local.com),命令如下:

New-SelfSignedCertificate -CertStoreLocation Cert:\LocalMachine\My -DnsName "*.local.com","*.example.local.com" -FriendlyName "local_iis_cert" -NotAfter (Get-Date).AddYears(10) -KeyAlgorithm RSA -KeyLength 2048

提醒:没有能一次性匹配所有www.xxx.local.com格式域名的通配符写法,因为通配符只能放在最左段。如果有多个类似www.a.local.com、www.b.local.com的域名要支持,要么把具体域名逐个加到SAN列表里,要么给每个二级域名单独加对应*.xxx.local.com的通配符条目。

新证书生效操作
  1. 新证书生成后,从服务器的个人证书存储(Cert:\LocalMachine\My)导出,重新导入到你本地电脑的「受信任的根证书颁发机构」目录,删掉之前存的旧证书。
  2. 去IIS里把两个HTTPS绑定关联的证书换成新生成的,执行iisreset重启IIS服务。
  3. 清一下浏览器的SSL缓存(或者直接重启浏览器)再访问,两个地址就都能正常通过证书校验了。

内容的提问来源于stack exchange,提问作者TriedAtLeast

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 03:39:25