求助:如何仅针对IIS或特定站点禁用TLS 1.0和TLS 1.1?
嗨,这个问题我之前帮客户处理过,全局禁用TLS 1.0/1.1确实会牵连到服务器上的其他服务(比如SQL Server),毕竟SQL Server 2012默认依赖这些旧协议。下面给你两个精准的解决方案,既能满足网站禁用旧TLS的需求,又不影响SQL Server的正常运行:
方法1:针对单个IIS站点配置(适合只需要限制特定站点的场景)
如果你只需要让某一个网站禁用TLS 1.0和TLS 1.1,推荐用这个方式:
图形界面操作步骤
- 打开IIS管理器,找到目标站点,右键选择【编辑绑定】
- 选中该站点的HTTPS绑定,点击【编辑】按钮
- 回到站点主页,找到【SSL设置】功能,点击进入
- 点击页面右侧的【高级】按钮
- 在协议列表中,只勾选TLS 1.2,取消勾选TLS 1.0、TLS 1.1以及旧的SSL协议
- 点击确定保存配置,重启站点生效
PowerShell命令操作(更高效)
如果你习惯用命令行,直接运行以下命令替换站点名称即可:
# 替换为你的目标站点名称 $siteName = "你的网站名称" # 配置站点仅允许TLS 1.2 Set-WebConfigurationProperty -Filter "system.webServer/security/access" -Name "sslFlags" -Value "Ssl, Tls12" -PSPath "IIS:\Sites\$siteName" # 重启站点使配置生效 Restart-WebItem -PSPath "IIS:\Sites\$siteName"
方法2:全局配置所有IIS站点(适合服务器上所有网站都需要禁用旧TLS的场景)
如果服务器上的所有网站都需要禁用TLS 1.0/1.1,可以直接给IIS服务器全局设置,新建站点会自动继承这个配置:
# 全局配置IIS仅允许TLS 1.2 Set-WebConfigurationProperty -Filter "system.webServer/security/access" -Name "sslFlags" -Value "Ssl, Tls12" -PSPath "IIS:\" # 重启IIS服务生效 Restart-Service W3SVC
关键注意事项
- 保持系统层面的TLS 1.0/1.1启用:不要修改系统注册表中
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols下的TLS 1.0/1.1开关,这样SQL Server 2012就能正常使用这些协议了 - 验证配置效果:可以用
openssl命令测试站点的协议支持,比如运行openssl s_client -connect yourdomain.com:443 -tls1,如果连接失败,说明TLS 1.0已经被成功禁用 - 证书兼容性:确保你的网站SSL证书支持TLS 1.2(绝大多数现代证书都支持,老旧证书可能需要更换)
内容的提问来源于stack exchange,提问作者Steen




