1、背景:
应用对外提供API服务,需要上线到服务商店,为保证接口安全,需要多支持的协议版本进行确认,TLS>1.2的安全。
2、查询的方法:
2.1 使用命令行工具
OpenSSL是一个强大的工具,可以用来测试和诊断TLS连接。
openssl s_client -connect example.com:443
这将显示与服务器建立的连接的详细信息,包括TLS版本。
PS C:\Users\XX> openssl s_client -connect yy.cc.com:443
WARNING: can't open config file: C:\Program Files (x86)\VMware\OpenSSL/openssl.cnf
CONNECTED(000004B8)
depth=0 C = CN, ST = BJ, L = BJ, O = CC, OU = IT, CN = yy.cc.com
verify error:num=20:unable to get local issuer certificate
verify return:1
depth=0 C = CN, ST = BJ, L = BJ, O = CC, OU = IT, CN = yy.cc.com
verify error:num=21:unable to verify the first certificate
verify return:1
---
Certificate chain
0 s:/C=CN/ST=BJ/L=BJ/O=CC/OU=IT/CN=yy.cc.com
i:/C=CN/O=CC/CN=CC RSACA
---
Server certificate
-----BEGIN CERTIFICATE-----
MIID2zCCAsOgAwIBAgIIXu1RBjVi4yQwDQYJKoZIhvcNAQELBQAwMzELMAkGA1UE
BhMCQ04xDjAMBgNVBAoMBUNOT09DMRQwEgYDVQQDDAtDTk9PQyBSU0FDQTAeFw0y
MTA5MjkxMTIxMDhaFw0zMTA5MjcxMTIxMDhaMFsxCzAJBgNVBAYTAkNOMQswCQYD
VQQIDAJCSjELMAkGA1UEBwwCQkoxDjAMBgNVBAoMBUNOT09DMQswCQYDVQQLDAJJ
VDEVMBMGA1UEAwwMbWRtZGV2LmNub29jMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAnj0K6cnm61kbwt4dCOeovrAVZ7AAFoto1l9K6TtTLc4GrmAlqNjF
63DMWZeqTBH+W/A1UdDgQWBBScsKZvMy6bPAwVy6xhBxkO4BgNVHREEcTBvggxtZ
bW9jay5jbm9vY4IMbWRtdHJuLmNub29jgg0xMC42OC4xNTYuMTI5ggsxMC42My4x
MC40NYILMTAuNjMuMTAuNTWCCzEwLjcyLjc2LjI5MAsGA1UdDwQEAwIGwDANBgkq
hkiG9w0BAQsFAAOCAQEATvFaotw+yf22EjEfbArAojh7MRc8xaZujUNxuzkBfGrN
8H3KXp7z7hvip1MxnET2ZZkx5NowHznl748peccsYZpbZP4gW8S6dViDoSEGLevJ
pBOm+gotu7P59s2Pe7FRmBKy0tBal8i3mgqKvmNA/G9mVwy42B6LiKQip9cLTx3F
Fhl8zqavJL17fuOeCu9R+kk2j3xcBHdDMVYO4FjenE+efiZRC9Q+5FdXZ7Nl1iAN
GOCul+XqZUQm3RRJ4U879lUMOOl4ISqf3GTG2GctnHFG+/lQ29kIR/sbgckkWSCK
rp3bWmKZh86xUo6x09WMT0rN1cG7tGzk1BEBGrBDNA==
-----END CERTIFICATE-----
subject=/C=CN/ST=BJ/L=BJ/O=CC/OU=IT/CN=yy.cc.com
---
No client certificate CA names sent
Peer signing digest: SHA256
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 1661 bytes and written 431 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES256-GCM-SHA384
Session-ID: D8A0F9987488C3B18E8E8FB4D71CAD6FA5BAF6C959161E53EE51B8
Session-ID-ctx:
Master-Key: 0EA27E3ACC96BEEF6EDF696A98276E5745F697FD813D8205326F61C1F1EAC
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 300 (seconds)
TLS session ticket:
0000 - fb f3 eb 20 09 27-1b cf dd 91 b9 11 24 dc ... .. '......$.
0010 - 43 d1 36 f5 68 3d 5a a3 5f 85 cc 7a 1c d4 C.6.h=ZK.._..z..
0020 - 1c b9 ad 04 a7 98 15 39-1f fe ec 19 0a c9 .......9..w.....
0030 - a9 01 0a 6b 3f e0 c3 8e 23 7a b2 6f da 6d ...k?...,.#z.o.m
0040 - a8 94 79 98 fb 54 e3 0a-2b 9d 83 09 3b 57 ..y..T..+..f..;W
0050 - 92 21 1d 4f cb 3f ac c4-06 ef 8c 45 38 76 .!.O.?.....m7E8v
0060 - ce 37 41 8c af b4 9a c2-06 68 72 4e c8 90 .7A......hrOkN..
0070 - 28 99 73 f6 eb 29 01 21-c3 ab 1f 3b 2a 4d (.s..).!...;*J,M
0080 - c0 1f e8 bb ed 22 fb 4f-61 d1 29 5f 70 21 .....".Oa.)_p..!
0090 - f9 37 f6 e5 b0 48 2a 2a-e4 77 b2 d0 a2 c4 .7...H**...w....
00a0 - 47 ad 4d 6b 6d 7d 85 f9-a7 6b 83 e4 65 24 G.Mkm}...k..e.e$
Start Time: 1748311478
Timeout : 300 (sec)
Verify return code: 21 (unable to verify the first certificate)
---
read:errno=10093
-
2.2 测试特定TLS版本:
openssl s_client -connect example.com:443 -tls1_2
将 `-tls1_2` 替换为 `-tls1`、`-tls1_1` 或 `-tls1_3`,可以测试不同版本的支持情况。
不支持1.3
2.3 检查服务器配置文件
如果您有访问服务器的权限,可以直接查看服务器的配置文件:
Nginx:
在配置文件中搜索关键字 ssl_protocols
,例如
ssl_protocols TLSv1.2 TLSv1.3;
- 这表示服务器支持TLS 1.0 TLS 1.1和TLS 1.2。
Apache:
-
在配置文件中搜索关键字
SSLProtocol
,例如:
SSLProtocol all -SSLv2 -SSLv3
- 这表示服务器支持所有TLS版本,但不支持SSL 2.0和SSL 3.0。
3、注意事项
- 多版本支持:服务器可能同时支持多个TLS版本,但客户端(如浏览器或工具)会选择优先级最高的版本进行连接。
- 安全性:建议优先使用TLS 1.3,因为它提供了更高的安全性和性能。TLS 1.0和TLS 1.1已被认为不够安全,建议停用。
- 测试环境:在实际操作中,请确保在测试环境中进行,避免对生产环境造成影响。
通过以上方法,您可以轻松查看接口配置的TLS协议版本,并根据需求选择最适合的工具。