目标使用过期的TLS1.0 版协议
文章目录
- 目标使用过期的TLS1.0 版协议
- 详细描述
- 解决办法
- 启用测试办法
- 注意事项
- 目标主机支持RSA密钥交换
- 详细描述
- 解决办法
目标使用过期的TLS1.0 版协议
详细描述
该插件连接到目标主机服务,检测到目标服务加密通信使用的SSL加密算法。
远程服务利用旧版 TLS 加密流量。
解决办法
启用 TLS 1.2 和/或 1.3 支持,禁用 TLS 1.0 支持
nginx样例配置如下:
server {listen 4433 ssl;server_name xxx.cn;ssl_certificate /etc/nginx/crt/server.crt;ssl_certificate_key /etc/nginx/crt/server.key;# 启用高版本TLSssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5:!RSA;# ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256;ssl_prefer_server_ciphers on;}
启用测试办法
- nginx支持tls1.2
# openssl s_client -connect xx:4433 -tls1_3
$ openssl s_client -connect xx:4433 -tls1_2
CONNECTED(00000003)
Can't use SSL_get_servername
depth=0 CN = xxxx
verify error:num=18:self signed certificate
verify return:1
depth=0 CN = xxx
verify return:1
---
Certificate chain0 s:CN = xxxi:CN = xxx
---
Server certificate
-----BEGIN CERTIFICATE-----
输出了服务端证书代表支持TLSv1.2
也可以通过curl测试,比如这段输出代表TLSv1.3协议被使用:
[root@node4 /data/nginx/conf.d]# curl -kv https://xxxx:4433
* Trying xxx...
* Connected to xx (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/pki/tls/certs/ca-bundle.crtCApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use http/1.1
* Server certificate:
* subject: CN=xxx
* start date: Jun 22 07:51:21 2023 GMT
* expire date: Jun 19 07:51:21 2033 GMT
* issuer: CN=xxx
* SSL certificate verify result: self signed certificate (18), continuing anyway.
> GET / HTTP/1.1
> Host: xx:4433
> User-Agent: curl/7.71.1
> Accept: */*
>
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
- nginx禁用tls1.1测试
$ openssl s_client -connect xx:4433 -tls1
CONNECTED(00000003)
281473151814288:error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version:ssl/record/rec_layer_s3.c:1544:SSL alert number 70
---
no peer certificate available
---
No client certificate CA names sent
---
注意事项
- Nginx 和 OpenSSL 版本:TLS 1.3 需要 Nginx ≥ 1.13.0 且 OpenSSL ≥ 1.1.1,若版本过低,需先升级(或仅启用 TLS 1.2)。
# 检查openssl版本$ openssl versionOpenSSL 1.1.1f 31 Mar 2020 - 兼容性影响:禁用 TLS 1.0 可能影响老旧设备(如 Windows XP、IE 8 及以下),需评估业务兼容性后操作。
目标主机支持RSA密钥交换
详细描述
目标主机支持 RSA 密钥交换意味着缺乏前向保密,存在历史流量解密风险,是过时且不推荐使用的配置,建议更新为 ECDHE 等临时密钥交换算法,以增强会话安全性和隐私保护。
解决办法
禁用 RSA key exchange:只支持临时密钥交换算法(如 ECDHE_RSA 或 ECDHE_ECDSA)。
强制 TLS 1.2 或 TLS 1.3,并优先选择支持前向保密的密码套件,比如:
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
增加nginx配置:
ssl_ciphers HIGH:!aNULL:!MD5:!RSA;# ssl_ciphers ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256;
具体在nginx.conf位置参考上面漏洞的配置文件。
