Windows Server 2008 R2中Let's Encrypt SSL证书绑定及访问异常排查
解决Let's Encrypt SSL证书在IIS和外部访问的问题
咱们拆解你遇到的两个核心问题:IIS内部提示证书不匹配,外部访问跳FRITZ!Box且未加密,一步步来排查解决:
一、搞定IIS里证书不匹配的问题
- 确认证书的SAN字段包含站点主机名:Let's Encrypt证书依赖SAN(Subject Alternative Name)字段识别域名,你可以打开服务器的「证书管理器」(运行
certlm.msc),找到Certify The Web生成的证书,查看「详细信息」里的「Subject Alternative Name」,确保里面包含你站点绑定的所有主机名(比如yourdomain.com和www.yourdomain.com都要在列)。如果缺了,重新用Certify The Web申请包含全部所需域名的证书。 - 检查IIS绑定的证书是否选对:服务器上可能存着旧证书或其他站点的证书,打开IIS管理器→你的站点→「绑定」→编辑HTTPS绑定,仔细选中Certify The Web刚生成的那一张(通常名称是你的域名,有效期90天左右),别选错了同名或类似的证书。
- 验证证书私钥的权限:IIS必须能读取证书的私钥才能正常工作。在证书管理器里右键证书→「所有任务」→「管理私钥」,确保
IIS_IUSRS组或者站点应用池对应的账户有「读取」权限,缺权限的话添加后重启IIS试试。
二、解决外部访问跳转FRITZ!Box且未加密的问题
- 检查FRITZ!Box的端口转发配置:这是最可能的根源。登录FRITZ!Box管理界面,找到「端口转发」(或「网络设置」→「端口共享」):
- 确保外部端口
443(HTTPS)转发到服务器内网IP的443端口; - 外部端口
80(HTTP)转发到服务器内网IP的80端口; - 如果你的FRITZ!Box开启了自身的HTTPS管理(默认可能用443),务必把路由器的管理端口改成其他(比如
8443),否则外部访问443时会优先跳转到路由器主页,而不是你的服务器。
- 确保外部端口
- 配置HTTP到HTTPS的自动跳转:如果用户访问的是未加密的HTTP链接,需要在IIS里设置重定向,把所有HTTP请求转到HTTPS。可以通过站点的「URL重写」模块添加规则,或者直接用Certify The Web的「自动配置HTTP重定向」功能(它自带这个选项)。
- 确认路由器DDNS和IP绑定:如果你的域名用的是动态IP,检查FRITZ!Box的DDNS服务是否正确更新了当前公网IP,确保域名解析指向的是路由器现在的公网地址。
- 排查防火墙规则:服务器的Windows防火墙要开启「HTTPS(443)」和「HTTP(80)」的入站规则;FRITZ!Box的防火墙也要允许这两个端口的外部访问请求通过。
三、通用排查小技巧
- 先在服务器本地访问
https://localhost或https://服务器内网IP,如果本地访问正常,说明问题出在外部路由配置;如果本地也有证书错误,先优先解决IIS的证书绑定问题。 - 用Certify The Web的「测试」功能,它会自动检测证书有效性、主机名解析、端口可用性等,帮你快速定位配置漏洞。
- 清除浏览器缓存和Cookie,有时候旧的证书缓存或路由器主页的缓存会导致奇怪的跳转问题。
内容的提问来源于stack exchange,提问作者user763539




