如何验证 TLS 是否生效?
美国、香港服务器
如何验证 TLS 是否生效?
10-24 来源:
## 1. 第一步:检查注册表(静态检查,先确认配置写进去了)
Win+R 输入 `regedit`,检查两处:
1)SCHANNEL 底层(系统 SSL 通道)
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client
DisabledByDefault = 0
Enabled = 1
2)**WinHTTP(宝塔最关键!)**
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp
DefaultSecureProtocols = 800 (十六进制,等于2048十进制,代表TLS1.2)
HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\WinHttp
DefaultSecureProtocols = 800
注册表改完**必须重启服务器**才会生效!只导入不重启 = 无效
## 2. 第二步:测试 WinHTTP(最重要,模拟宝塔的下载组件)
WinHTTP 没有简单原生 PowerShell 直接测试脚本,下面这个是调用 WinHTTP 的 C# 代码,直接在服务器 CMD 运行,专门验证宝塔依赖的组件!
新建 `testwinhttp.cs`,粘贴:
using System;
using System.Runtime.InteropServices;
class Test
{
[DllImport("winhttp.dll")]
static extern IntPtr WinHttpOpen(string a, uint b, string c, string d, uint e);
[DllImport("winhttp.dll")]
static extern bool WinHttpConnect(IntPtr h, string host, ushort port, uint r);
[DllImport("winhttp.dll")]
static extern IntPtr WinHttpOpenRequest(IntPtr h, string m, string p, null, null, null, uint flag);
[DllImport("winhttp.dll")]
static extern bool WinHttpSendRequest(IntPtr h, null, 0, null,0,0,0);
static void Main()
{
IntPtr s = WinHttpOpen("test",0,null,null,0);
IntPtr c = WinHttpConnect(s,"dg1.bt.cn",443,0);
IntPtr req = WinHttpOpenRequest(c,"GET","/win/panel/python.7z",null,null,null,0x00800000);
bool ok = WinHttpSendRequest(req,null,0,null,0,0,0);
Console.WriteLine(ok ? "✅ WinHTTP TLS握手成功!" : "❌ WinHTTP TLS失败");
}
}
然后编译运行(服务器有.NET 即可)
csc testwinhttp.cs
testwinhttp.exe
输出 `WinHTTP TLS握手成功`:WinHTTP 的 TLS1.2 正常,宝塔下载组件底层握手没问题
失败:还是 WinHTTP 配置、证书、密码套件问题
### 简易替代测试(PowerShell,注意:这个是.NET,≠WinHTTP,只能辅助参考)
管理员打开 PowerShell:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest -Uri "https://dg1.bt.cn" -UseBasicParsing
不报错 = .NET 的 TLS1.2 通了,**但不等于 WinHTTP 通**(很多人这里成功,宝塔依旧报错)
## 3. 第三步:IE 浏览器测试(WinINet,辅助参考)
Win+R → `inetcpl.cpl` → 高级,勾选 **使用 TLS1.2**
IE 访问:`https://dg1.bt.cn/win/panel/python.7z`
能打开下载 = IE 的 TLS1.2 正常,**但和宝塔的 WinHTTP 互不影响**
## 4. 第四步:事件日志查看 Schannel 报错(定位底层握手失败)
事件查看器 → Windows 日志 → 系统
筛选来源:**Schannel**
- 出现 `36871 / 36874 / 36888` 错误:TLS 握手失败、密码套件不匹配
- 没有 Schannel 报错:握手层面正常,问题大概率是证书不信任
## 5. 在线 TLS 测试网页(IE 打开)
用 IE 访问:
`https://www.ssllabs.com/ssltest/viewMyClient.html`
页面会显示当前客户端支持哪些 TLS 版本,看是否有 TLS1.2
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快