curl がサポートする TLS バージョンの確認

curl がサポートする TLS バージョンの確認

curlPATHの実行可能ファイルが最新バージョンをサポートしてtlsv1.0いるかどうかをBashスクリプトで確認する方法は?tlsv1.1

デフォルトでは、TLS v1.2がサポートされていない場合は、ユーザーに通知して必要なcurlアクションを実行したいと思います。入るよ組み込みシステムBusyboxとカスタムLinux環境(特にNAS)があるため、Linuxディストリビューションに頼ることはできません。

以下は2つの例です(システム1そしてシステム2);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

答え1

努力する:

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

関連情報