Shell-Script
確定 curl 支持的 TLS 版本
curl
如果PATH 中的執行檔支持tlsv1.0
或更新版本,我如何從 Bash 腳本中檢查tlsv1.1
?基本上我想通知使用者它
curl
是否不支持 TLS v1.2 並採取必要的措施。我將在具有 Busybox 和自定義 Linux 環境(特別是 NAS)的嵌入式系統中執行腳本,因此我不能依賴 Linux 發行版。下面有兩個例子(system1和system2);我可以
grep
使用命令行開關,但這是一個好習慣嗎?[system1:~] # curl --version curl 7.21.0 (i686-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8e zlib/1.2.3.3 libidn/1.0 Protocols: dict file ftp ftps http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp Features: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz [system1:~] # curl --help all | grep -- --tlsv -1/--tlsv1 Use TLSv1 (SSL) [system2:~] # curl --version curl 7.76.0 (x86_64-openwrt-linux-gnu) libcurl/7.76.0 OpenSSL/1.1.1h zlib/1.2.11 Release-Date: 2021-03-31 Protocols: file ftp ftps http https imap imaps mqtt pop3 pop3s rtsp smtp smtps tftp Features: alt-svc HTTPS-proxy IPv6 Largefile libz SSL [system2:~] # curl --help all | grep -- --tlsv -1, --tlsv1 Use TLSv1.0 or greater --tlsv1.0 Use TLSv1.0 or greater --tlsv1.1 Use TLSv1.1 or greater --tlsv1.2 Use TLSv1.2 or greater --tlsv1.3 Use TLSv1.3 or greater
嘗試:
curl --tlsv1.2 --silent --connect-timeout 1 --url 'http://localhost:1' 2>/dev/null if [[ $? -eq 2 ]]; then # 2 == CURLE_FAILED_INIT echo "TLS 1.2 protocol not supported by this cURL version" fi