用OpenSSL/CURL測試伺服器支援SSL/TLS版本

用OpenSSL/CURL測試伺服器支援SSL/TLS版本

OpenSSL測試

顯示當前OpenSSL版本 (Ubuntu 22.04)

$ openssl version
OpenSSL 3.0.2 15 Mar 2022 (Library: OpenSSL 3.0.2 15 Mar 2022)

OpenSSL測試伺服器是否支援加密協定

openssl s_client -connect vlog.xuite.net:443 -tls1  < /dev/null
openssl s_client -connect vlog.xuite.net:443 -tls1_1 < /dev/null
openssl s_client -connect vlog.xuite.net:443 -tls1_2 < /dev/null
openssl s_client -connect vlog.xuite.net:443 -tls1_3 < /dev/null

已無法測試sslv2/sslv3加密協定
openssl s_client -connect vlog.xuite.net:443 -ssl2 < /dev/null
openssl s_client -connect vlog.xuite.net:443 -ssl3 < /dev/null
會顯示找不到ssl2/sslv3這個選項

其他

OpenSSL 支援的 cipher 加解密器列表
$ openssl ciphers -V | column -t

ref:https://blog.helong.info/blog/2015/01/23/ssl_tls_ciphersuite_intro/

CURL測試


顯示當前CURL版本 (Ubuntu 22.04)

$ curl -V
curl 7.81.0 (x86_64-pc-linux-gnu) libcurl/7.81.0 OpenSSL/3.0.2 zlib/1.2.11 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.2 libpsl/0.21.0 (+libidn2/2.3.2) libssh/0.9.6/openssl/zlib nghttp2/1.43.0 librtmp/2.3 OpenLDAP/2.5.14
Release-Date: 2022-01-05
Protocols: dict file ftp ftps gopher gophers http https imap imaps ldap ldaps mqtt pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp 
Features: alt-svc AsynchDNS brotli GSS-API HSTS HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets zstd

OpenSSL測試伺服器是否支援加密協定

curl -I -v --tlsv1.3 --tls-max 1.3 https://vlog.xuite.net
curl -I -v --tlsv1.2 --tls-max 1.2 https://vlog.xuite.net
curl -I -v --tlsv1.1 --tls-max 1.1 https://vlog.xuite.net
curl -I -v --tlsv1.0 --tls-max 1.0 https://vlog.xuite.net

-I是只取header;-v顯示更多訊息;指定-tlsv後又加上--tls-max是因為TLS指定之後其實是這個版本以上都能夠連線,但是我們是想測特定版本

已無法測試sslv2/sslv3加密協定
curl -I -v --sslv3 https://vlog.xuite.net
curl -I -v --sslv2 https://vlog.xuite.net
curl -I -v -3 https://vlog.xuite.net
curl -I -v -2 https://vlog.xuite.net

實測:
tlsv1.3連線失敗
curl: (35) error:0A000410:SSL routines::sslv3 alert handshake failure

tlsv1,tlsv1.1則是無法使用
curl: (35) error:0A0000BF:SSL routines::no protocols available

sslv2,sslv3看起來有連線,但是細看就會發現第一行顯示了
Warning: Ignores instruction to use SSLv3
就算加上--insecure也是被一樣,所以實際上他是用預設協定來完成連線的。


留言