IIS8托管应用内网HTTPS正常,外网访问报400错误求助
外网访问IIS8 HTTPS报400 Bad Request的排查方案
环境:IIS8托管的Web应用,内网中
http://subdomain.domain.com/myapp/Pages/Login.aspx和https://subdomain.domain.com/myapp/Pages/Login.aspx均可正常访问,SSL证书(Sectigo RSA通配符证书)显示正常;外网仅HTTP可访问,HTTPS连接返回400 Bad Request。已执行操作:
- 为
subdomain.domain.com创建A记录指向IIS服务器IP- 路由器配置443端口转发至IIS服务器
- Windows防火墙允许443端口入站流量
- 重启IIS服务器
排查步骤
1. 验证外网443端口连通性
在外网机器上用命令行执行端口连通测试:
telnet subdomain.domain.com 443
或PowerShell命令:
Test-NetConnection subdomain.domain.com -Port 443
若不通,优先排查路由器转发规则有效性或运营商443端口封禁;若能连通,继续下一步。
2. 检查IIS站点HTTPS绑定配置
- 打开IIS管理器,找到目标站点,右键选择编辑绑定
- 确认HTTPS绑定的主机名为
subdomain.domain.com,且选择了包含*.domain.com的通配符证书 - 必须勾选要求服务器名称指示(SNI):IIS8中指定主机名的HTTPS绑定依赖SNI,未开启会导致绑定失效
3. 核查IIS SSL设置
- 进入站点的SSL设置,暂时取消要求SSL选项测试,排除强制SSL配置导致的拦截
- 确认客户端证书设置为"忽略",避免因强制要求客户端证书引发400错误
4. 分析IIS日志定位错误细节
- 打开IIS管理器,查看站点的日志文件,找到HTTPS请求对应的400错误记录,重点关注子状态码:
- 400.1:请求语法无效
- 400.3:请求内容长度异常
- 400.7:请求头格式错误
子状态码可直接定位具体问题,比如400.7可能是SSL握手时证书匹配失败或请求头超限
5. 检查路由器NAT转发规则细节
- 确认443端口转发规则为TCP协议(HTTPS基于TCP),而非UDP
- 临时关闭路由器的**SSL深度检测(SSL Inspection)**功能:该功能会篡改证书链,导致客户端验证失败返回400
- 可临时配置DMZ主机指向IIS服务器,排查是否是路由器转发规则的高级限制导致
6. 验证通配符证书完整性
- 在IIS服务器证书界面,查看通配符证书的**主题备用名称(SAN)**是否包含
*.domain.com - 检查证书链是否完整:展开证书路径,确认中间证书(Sectigo RSA Domain Validation Secure Server CA)已正确安装
7. 排查IIS请求筛选规则
- 进入站点的请求筛选,检查请求头大小、请求长度等限制,是否拦截了HTTPS请求的头信息
- 临时禁用请求筛选功能测试,确认是否是规则拦截导致的400错误
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

