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)再次访问站点,可以正常访问

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐