如何使用PowerShell脚本检查浏览器是否启用了TLS 1.2
PowerShell 无注册表检查浏览器TLS 1.2启用状态方法
核心逻辑:绕过注册表读取,直接通过TLS 1.2握手有效性验证判断启用状态,只要能完成仅使用TLS 1.2的HTTPS连接,就说明对应浏览器依赖的加密模块已启用TLS 1.2。
1. 适用Edge/Chrome/IE等调用系统SCHANNEL的浏览器
这类浏览器默认使用Windows系统内置的SCHANNEL加密模块,直接运行如下脚本即可验证:
# 强制仅使用TLS 1.2协议发起连接 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 try { # 调用公网可访问的、确认支持TLS 1.2的服务端点验证握手 $testResult = Invoke-WebRequest -Uri "https://www.microsoft.com" -UseBasicParsing -TimeoutSec 8 Write-Host "检测完成:TLS 1.2 已启用,连接状态码为 $($testResult.StatusCode)" } catch { Write-Host "检测完成:TLS 1.2 未启用,握手失败原因:$($_.Exception.Message)" }
结果说明:
- 脚本返回连接成功,代表系统SCHANNEL已开启TLS 1.2,上述浏览器默认状态下均可正常使用TLS 1.2访问站点
- 脚本返回握手失败,排除网络不通的情况后即可确认TLS 1.2未启用
2. 适用Firefox浏览器
Firefox使用独立的NSS加密库,不依赖系统SCHANNEL配置,可通过Selenium PowerShell模块启动浏览器实例验证:
- 先安装Selenium模块:
Install-Module Selenium -Scope CurrentUser -Force - 运行验证脚本:
# 导入Selenium模块,启动Firefox实例 Import-Module Selenium $driver = Start-SeFirefox -Headless try { # 访问仅支持TLS 1.2的测试地址 $driver.Navigate().GoToUrl("https://tls-v1-2.badssl.com/") Start-Sleep -Seconds 3 if ($driver.Title -match "tls-v1-2.badssl.com") { Write-Host "检测完成:Firefox已启用TLS 1.2" } else { Write-Host "检测完成:Firefox未启用TLS 1.2" } } catch { Write-Host "检测完成:Firefox未启用TLS 1.2,握手失败" } finally { $driver.Quit() }
注意事项
- 测试前请确保网络正常,可访问测试用的公网地址,避免网络问题导致误判
- 如需更高准确率,可将测试地址替换为内网中确认仅开放TLS 1.2的服务地址
内容的提问来源于stack exchange,提问作者SmartestVEGA
相关产品推荐
相关产品推荐

