如何在IIS/Windows Server中拦截HTTPS形式的IP地址访问请求
IIS/Windows Server 环境下拦截IP直连HTTPS请求配置方法
直接通过服务器IP访问HTTPS站点时出现证书不安全提示、资源报错,本质是TLS握手阶段服务器默认返回了业务站点的证书,而证书未绑定IP地址,且请求未匹配到对应业务站点路由。要实现这类请求完全不返回业务响应,按以下两种方案配置即可:
方案1:SNI兜底站点拦截(配置最简单,兼容性最好)
核心逻辑是开启IIS的SNI(服务器名称指示)功能后,只有请求携带的SNI值和业务站点绑定的域名完全匹配时,才会把请求路由到对应业务站点,直连IP的HTTPS请求会全部落到专门的拦截站点,直接返回拒绝响应。
- 打开IIS管理器,右键站点列表新建一个拦截专用站点,名称可自定义为
HTTPS_IP_Block,物理路径指向服务器上任意空文件夹即可 - 给这个拦截站点添加HTTPS绑定:类型选
https,端口填443,IP地址选「全部未分配」,主机名留空,SSL证书可选择服务器上任意已存在的证书,必须勾选「需要服务器名称指示(SNI)」 - 选中该拦截站点,打开「SSL设置」功能,勾选「拒绝」客户端连接,保存配置;也可以打开「请求筛选」功能,配置拒绝所有请求路径,访问者请求到这个站点时会直接收到连接重置,不会看到业务站点的证书和内容
- 逐一检查所有正常业务站点的HTTPS绑定,确认都勾选了「需要服务器名称指示(SNI)」,且主机名填写为实际对外服务的域名,配置完成后以管理员身份打开命令提示符执行
iisreset重启IIS生效
方案2:全局规则+防火墙拦截(拦截更彻底,无任何响应)
如果需要做到直连IP的HTTPS请求完全不返回任何TCP响应,可在方案1的基础上叠加以下配置:
- 安装IIS官方URL Rewrite组件,在服务器全局层级添加入站规则:匹配条件设置为
{HTTP_HOST}匹配IP地址正则规则^(\d{1,3}\.){3}\d{1,3}$,操作类型选择「中止请求」,命中规则的请求会被IIS直接断开,不返回任何内容 - 如需在网络层直接丢包,可在Windows Defender防火墙配置入站规则,针对443端口的异常SNI请求直接拦截,管理员身份执行以下命令即可添加对应规则:
netsh advfirewall firewall add rule name="Block direct IP HTTPS access" dir=in action=drop protocol=tcp localport=443 enable=yes
配置注意事项:开启SNI后,直连IP的HTTPS请求不会命中业务站点的证书绑定,因此不会弹出业务域名对应的证书不安全提示,配合拦截规则后客户端只会显示连接失败,不会出现资源未找到的报错。
内容的提问来源于stack exchange,提问作者Mike Flynn
相关产品推荐
相关产品推荐

