访问https站点失败,无日志输出,TLS1.2密码套件不匹配问题定位及处理
1、问题描述
访问Https协议站点,返回网络连接失败,登录服务器查看,没有日志输出。
注意:现在服务器上用localhost或域名访问,确保TLS的服务端和客户端是同一台。
2、问题定位
(1)通过IIS日志,检查请求是否到达IIS
IIS日志一般是在【C:\inetpub\logs\LogFiles】文件夹下,通过IIS网站的ID,确认具体文件夹,比如ID是4,则路径为【C:\inetpub\logs\LogFiles\W3SVC4】。


找到日志文件,根据时间和请求的相对地址,确认请求是否到达IIS。如果没有请求日志,则说明请求未抵达IIS,应从网络层面排查。
注意,IIS日志不是按照北京时区,实际输出时间为当前中国时间-8,比如早上8点,日志文件内是0点。

(2)确认是否因为TLS密码账套问题产生异常。
打开事件查看器,查看Window日志,系统,如果存在错误,时间点与https请求时间点相同,且错误信息为【从远程客户端应用程序收到一个 TLS 1.2 连接请求,但没有任何受客户端应用程序支持的密码套件是受服务器支持的。TLS 连接请求失败。】,说明是因为TLS原因导致失败。


3、处理步骤
(1)打开PowerShell(以管理员身份运行)

(2)检查服务器端TLS 1.2配置,是否开启
使用下列命令:
Get-TlsCipherSuite |
Where-Object {$_.Protocol -match "Tls12"} |
Select-Object Name, Enabled, Protocol |
Format-Table -AutoSize
若无任何输出:系统未识别 TLS 1.2 协议(大概率是注册表中 TLS 1.2 配置缺失);
若有输出但 Enabled 列全为 False:TLS 1.2 套件全部被禁用;
若仅返回 PS 提示符:PowerShell 版本过低(如 Server 2012 R2 默认 PS4.0),需用兼容语法。
可尝试一下兼容语法:
<#
脚本功能:仅验证Windows Server 2016 TLS 1.2协议(服务端/客户端)启用状态
执行权限:管理员
核心逻辑:读取SCHANNEL注册表项,判断Enabled/DisabledByDefault值是否符合启用标准
#>
# 定义颜色常量
$colorSuccess = "Green"
$colorError = "Red"
$colorInfo = "Cyan"
Write-Host "===== Windows Server 2016 TLS 1.2 协议启用状态验证 =====" -ForegroundColor $colorInfo
Write-Host "执行时间:$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')`n" -ForegroundColor $colorInfo
# 定义TLS 1.2核心注册表路径
$tls12Paths = @{
Server = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Server"
Client = "HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2\Client"
}
# 验证逻辑:TLS 1.2启用的标准是 Enabled=1 且 DisabledByDefault=0
foreach ($type in $tls12Paths.Keys) {
$path = $tls12Paths[$type]
Write-Host "【验证 $type 端TLS 1.2】" -ForegroundColor $colorInfo
Write-Host "注册表路径:$path"
try {
# 读取注册表项
$tls12Config = Get-ItemProperty -Path $path -ErrorAction Stop
$enabled = $tls12Config.Enabled
$disabledByDefault = $tls12Config.DisabledByDefault
# 判断是否启用
if ($enabled -eq 1 -and $disabledByDefault -eq 0) {
Write-Host "✅ $type 端TLS 1.2 已启用(Enabled=$enabled, DisabledByDefault=$disabledByDefault)" -ForegroundColor $colorSuccess
} else {
Write-Host "❌ $type 端TLS 1.2 未启用(Enabled=$enabled, DisabledByDefault=$disabledByDefault)" -ForegroundColor $colorError
}
} catch {
# 注册表项缺失 = 未配置 = 未启用
Write-Host "❌ $type 端TLS 1.2 注册表项缺失(未配置,默认禁用)" -ForegroundColor $colorError
}
Write-Host ""
}
# 补充说明
Write-Host "===== 验证说明 =====" -ForegroundColor $colorInfo
Write-Host "1. Server端:影响IIS/远程桌面等服务对外提供TLS 1.2连接;"
Write-Host "2. Client端:影响本机作为客户端(如浏览器访问localhost)发起TLS 1.2连接;"
Write-Host "3. 启用标准:必须同时满足 Enabled=1 且 DisabledByDefault=0,缺一不可;"
Write-Host "4. 若需启用,执行下方修复命令即可。" -ForegroundColor $colorInfo
返回结果:

(3)启用浏览器通用的四个套件
Enable-TlsCipherSuite -Name "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"
Enable-TlsCipherSuite -Name "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"
Enable-TlsCipherSuite -Name "TLS_RSA_WITH_AES_256_GCM_SHA384"
Enable-TlsCipherSuite -Name "TLS_RSA_WITH_AES_128_GCM_SHA256"
(4)再次访问站点,可以正常访问
更多推荐
所有评论(0)