curl --tlsv1.3,OpenSSL在构建时不支持TLS 1.3

ggazkfy8  于 2022-11-13  发布在  其他
关注(0)|答案(3)|浏览(1118)

关于TLSV1.3端点上的curl命令的小问题,以及错误“OpenSSL是在没有TLS 1.3支持的情况下构建的”。
该端点是我无法控制的第三方端点,但根据规范,它支持TLSv1.3。
因此,如果我像这样 curl :它将产生错误,这在某种程度上是意料之中的。

./curl -vik https://third-party.com:18090/health
*   Trying x:18090...
* Connected to third-party.com (x) port 18090 (#0)
* ALPN, offering http/1.1
* Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* successfully set certificate verify locations:
*  CAfile: /etc/pki/tls/certs/ca-bundle.crt
*  CApath: none
* TLSv1.2 (OUT), TLS header, Certificate Status (22):
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS header, Unknown (21):
* TLSv1.2 (IN), TLS alert, protocol version (582):
* error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
* Closing connection 0
curl: (35) error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version

但我也试过这个:(请注意--tlsv1.3,它将返回此错误。

curl --tlsv1.3 -vik https://third-party.com:18090/health
*   Trying x:18090...
* Connected to third-party.com (x) port 18090 (#0)
* OpenSSL was built without TLS 1.3 support
* Closing connection 0
curl: (4) OpenSSL was built without TLS 1.3 support

OpenSSL是在没有TLS 1.3支持的情况下构建的

问题是,我还没有构建openssl,我只是做了yum -y install -y openssl openssl-devel
我可以问一下如何让我的curl在tlsv1.3下工作吗?或者如何解决这个问题?
谢谢你

kfgdxczn

kfgdxczn1#

“OpenSSL是在没有TLS1.3支持的情况下构建的”这句话可能会引起误解。(不是其他几个选项中的一个)并且正在使用的OpenSSL版本不支持TLS1.3。查看您的错误消息,它显然来自低于1.1.0的OpenSSL版本(2016年发布),当然,这些版本不支持TLS1.3是正确的。现在只有OpenSSL 1.1.1(2018年)支持TLS1.3(目前处于alpha版本的3.0.0也将支持)。
您不能使curl执行TLS1.3。由于您显然使用某种类型的RedHat系列系统,根据系统的不同,可能在标准库或可选库中有其他curl构建版本。如果没有,您将需要获得OpenSSL 1.1.1,它也可能在库中可用,否则您将不得不从源代码构建。然后从源代码构建(足够新)curl以使用OpenSSL。
另一种方法是使用另一个系统,而不是直接在您的系统上运行:一个真实的系统,可能在云中;或系统上的虚拟机;、或基本上仅虚拟化OS而不虚拟化底层硬件的对接器或类似容器。

ilmyapht

ilmyapht2#

在macOS上,我成功地安装了brew install curl的新curl版本。
然后你可以运行一些东西,比如

/usr/local/opt/curl/bin/curl --version

/usr/local/opt/curl/bin/curl --tlsv1.3 --request GET \
     --url https://localhost:9200 \
     --cacert ca.crt \
     --key tls.key \
     --cert tls.crt \
     --header 'Content-Type: application/json' \
     --verbose
ffscu2ro

ffscu2ro3#

要在macOS下直接在brew install curl之后使用curl,您需要在您的PATH中通过
echo 'export PATH="/usr/local/opt/curl/bin:$PATH"' >> /Users/YOURNAME/.bash_profile
所以我们可以直接使用curl
curl --tlsv1.3 xxxxx
还有一件事,另一条建议放在你的.bash_profile(或.bashrc):
export HOMEBREW_FORCE_BREWED_CURL=1
但是,它无法使用由brew安装的最新curl

相关问题