curl --tlsv1.3,OpenSSL 是在没有 TLS 1.3 支持的情况下构建的
curl --tlsv1.3, OpenSSL was built without TLS 1.3 support
关于 TLSV1.3 端点上的 curl 命令的小问题,以及错误“OpenSSL 是在没有 TLS 1.3 支持的情况下构建的”。
端点是我无法控制的第三方端点,但从规范来看,启用了 TLSv1.3。
因此,如果我这样卷曲:它会产生错误,这在某种程度上是预料之中的。
./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,或者如何解决这个问题?
谢谢
“OpenSSL 是在没有 TLS 1.3 支持的情况下构建的”这一措辞可能具有误导性。 It actually means 这个特定的 curl 是为了将 OpenSSL 用于 SSL/TLS 协议(不是其他几个选项之一)而构建的,并且所使用的 OpenSSL 版本不支持 TLS1.3。
查看您的错误消息,它显然来自 1.1.0(2016 年发布)以下的 OpenSSL 版本,并且这些版本不支持 TLS1.3 当然是正确的。现在只有 OpenSSL 1.1.1 (2018) 支持 TLS1.3(3.0.0,目前处于 alpha 阶段,也将支持)。
你不能让 curl 执行 TLS1.3。由于您显然使用的是某种 RedHat 系列系统,因此根据它所在的系统,标准存储库或可选存储库中可能还有其他 curl 构建可用。如果没有,您将需要获取 OpenSSL 1.1.1,它可能再次在存储库中可用,否则您将不得不从源代码构建,然后从源代码构建(足够新的)curl 以使用该 OpenSSL。
另一种方法不是让它直接在您的系统上运行,而是使用另一个系统:一个真实的系统,可能在云端;或您系统上的虚拟机;或 docker 或类似的容器,基本上只虚拟化 OS 而不是底层硬件。
在 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
关于 TLSV1.3 端点上的 curl 命令的小问题,以及错误“OpenSSL 是在没有 TLS 1.3 支持的情况下构建的”。
端点是我无法控制的第三方端点,但从规范来看,启用了 TLSv1.3。
因此,如果我这样卷曲:它会产生错误,这在某种程度上是预料之中的。
./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,或者如何解决这个问题?
谢谢
“OpenSSL 是在没有 TLS 1.3 支持的情况下构建的”这一措辞可能具有误导性。 It actually means 这个特定的 curl 是为了将 OpenSSL 用于 SSL/TLS 协议(不是其他几个选项之一)而构建的,并且所使用的 OpenSSL 版本不支持 TLS1.3。 查看您的错误消息,它显然来自 1.1.0(2016 年发布)以下的 OpenSSL 版本,并且这些版本不支持 TLS1.3 当然是正确的。现在只有 OpenSSL 1.1.1 (2018) 支持 TLS1.3(3.0.0,目前处于 alpha 阶段,也将支持)。
你不能让 curl 执行 TLS1.3。由于您显然使用的是某种 RedHat 系列系统,因此根据它所在的系统,标准存储库或可选存储库中可能还有其他 curl 构建可用。如果没有,您将需要获取 OpenSSL 1.1.1,它可能再次在存储库中可用,否则您将不得不从源代码构建,然后从源代码构建(足够新的)curl 以使用该 OpenSSL。
另一种方法不是让它直接在您的系统上运行,而是使用另一个系统:一个真实的系统,可能在云端;或您系统上的虚拟机;或 docker 或类似的容器,基本上只虚拟化 OS 而不是底层硬件。
在 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