在 ApacheBench (ab) 上使用 TLSv1.3 密码套件时 SSL 握手失败

在 ApacheBench (ab) 上使用 TLSv1.3 密码套件时 SSL 握手失败

我试图使用Apache Bench(ab)在我的本地服务器上运行Apache HTTP 服务器,与安全套接字模块启用,使用TLS1.3作为通信中使用的协议,但每次我尝试使用它时,我都会遇到SSL 握手失败消息出现在我的命令行终端上。

我所做的只是安装阿帕奇2在我的本地电脑上(运行 Zorin OS 15.2),并在ssl.conf文件,我指定了SSL 协议使用:

SSLProtocol -all +TLSv1.2 +TLSv1.3

并在站点配置文件中激活 SSL 引擎、指定所有证书文件、分配服务器名称等。

完成所有这些后,我只需运行命令 ab 进行测试,如果我运行以下命令:

ab -n 100 -c 10 https://myhostname/

一切正常,但如果我尝试指定协议 TLS1.3,使用用于 TLS1.3 的一个密码,它会给出以下错误消息:

ab -n 1000 -c 50 -Z TLS_AES_256_GCM_SHA384 https://myhostname:443/
This is ApacheBench, Version 2.3 <$Revision: 1807734 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking hostname (be patient)
SSL handshake failed (1).
139632751683456:error:141A90B5:SSL routines:ssl_cipher_list_to_bytes:no ciphers available:../ssl/statem/statem_clnt.c:3786:No ciphers enabled for max supported SSL/TLS version

奇怪的是,如果我使用 TLS1.2 支持的一些密码运行相同的命令,一切都会正常工作,但如果我使用 TLS1.3 支持的任何密码,就会出现该错误。

我甚至尝试使用openssl s_client选择 -tls1_3使用 TLS1.3 作为协议连接到我的服务器,并且连接工作正常。

以下是我正在使用的软件列表:

  • Apache HTTP 服务器(版本 2.4.29)
  • ApacheBench(版本 2.3)
  • OpenSSL(版本 1.1.1)

我想要的只是运行相同的命令,但使用协议 TLS1.3 支持的密码。

答案1

文档ab - Apache HTTP 服务器基准测试工具有:

-f 协议

指定 SSL/TLS 协议(SSL2、SSL3、TLS1、TLS1.1、TLS1.2 或 ALL)。2.4.4 及更高版本支持 TLS1.1 和 TLS1.2。

这也提到了变更日志

Apache 2.4.4 的变化

  • ab:添加 TLS1.1/TLS1.2 选项以进行-f切换,并调整输出以更准确地报告协商协议。PR 53916。[Nicolás Pernas Maradei、Kaspar Brand]

由于 TLS 1.3 没有类似的提及,因此可以假设ab它尚不支持它(尽管 Apache 2.4 支持 TLS 1.3)。

答案2

最新版本现已支持 TLS1.3

[root@5b2407a280df /]# ab -V
This is ApacheBench, Version 2.3 <$Revision: 1903618 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

[root@5b2407a280df /]# ab -h
Usage: ab [options] [http[s]://]hostname[:port]/path
Options are:
 ...
    -f protocol     Specify SSL/TLS protocol
                    (SSL2, TLS1, TLS1.1, TLS1.2, TLS1.3 or ALL)
 ...

相关内容