验证OpenSSL特定报错是否表明端口已禁用TLS1.0及相关排查
问题:Qualys漏洞QID:38628处理后仍显示存在的验证问题
已执行的修复操作
针对Qualys检测到的**QID:38628(SSL/TLS服务器支持TLSv1.0)**漏洞,已完成以下修复步骤:
- 在注册表路径
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0及TLS 1.1下,设置DisabledByDefault=1、Enabled=0; - 在Diffie-Hellman及PKCS密钥交换算法对应的注册表路径下配置密钥长度;
- 在SSL配置路径中移除所有DES、Triple DES条目;
- 在Internet选项的高级标签中禁用TLS1.0和TLS1.1。
端口检测结果与疑问
修复后逐个检测活跃端口,部分端口执行命令openssl s_client -connect ip:port -tls1时出现如下报错:
CONNECTED(00000178) 70010000:error:0A0000BF:SSL routines:tls_setup_handshake:no protocols available:ssl\statem\statem_lib.c:104: no peer certificate available No client certificate CA names sent SSL handshake has read 0 bytes and written 7 bytes Verification: OK New, (NONE), Cipher is (NONE) This TLS version forbids renegotiation. Compression: NONE Expansion: NONE No ALPN negotiated Early data was not sent Verify return code: 0 (ok)
我判断该报错表示对应端口已不支持TLS1.0,但需要确切验证这一结论。
批量检测端口的PowerShell脚本(中文注释)
# 需先安装OpenSSL # 在待检测服务器上打开CMD,执行:netstat -aon > c:\list.txt # 导出list.txt后,用Notepad++或其他文本编辑器提取本地地址中的所有端口 # 将提取的端口列表导入Excel,点击「数据」选项卡 > 「数据工具」 > 「删除重复值」,可按需排序 # 将去重后的端口列表复制到新的文本文件,命名为Portlist.txt,放置在$path变量指定的路径 $path="C:\path\to\file\PortList.txt" # 请修改为实际路径 $openssl="C:\Program Files\OpenSSL-Win64\bin\openssl.exe" $Result="C:\path\to\file\Result.txt" # 请修改为实际结果文件路径 function portcheck($port){ add-content -path $Result -value `n add-content -path $Result -value "正在检测端口 $port" add-content -path $Result -value `n & "$openssl" s_client -connect Server_IP_address:$port -tls1 2>&1 | add-content $Result # 将Server_IP_address替换为服务器实际IP,例如:127.0.0.1 add-content -path $Result -value "=================================================================================" } $data = get-content $path foreach($row in $data){ portcheck $row }
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

