Как исправить "ssl handshake failed" с ApacheBench?
Когда я использую ApacheBench для тестирования https, возвращается ошибка, "ssl handshake failed".
Как я могу использовать ApacheBench для тестирования https?
Ответы
Ответ 1
ApacheBench, похоже, не способен игнорировать проблемы с сертификатами (по крайней мере некоторые из них), поэтому я написал этот script:
#!/bin/bash
K=200;
HTTPSA='https://192.168.1.103:443/'
date +%M-%S-%N>wgetres.txt
for (( c=1; c<=$K; c++ ))
do
wget --no-check-certificate --secure-protocol=SSLv3 --spider $HTTPSA
done
date +%M-%S-%N>>wgetres.txt
Это не так точно, как AB, но дает идею. Хорошо подходит для сравнительных тестов.
Ответ 2
httperf также однопоточный, но на сегодняшний день (31 августа 2012 г.) он корректно обрабатывает SSL и даже имеет некоторые полезные дополнительные функции, связанные с SSL:
--ssl Specifies that all communication between httperf and the server
should utilize the Secure Sockets Layer (SSL) protocol. This
option is available only if httperf was compiled with SSL supâ€
port enabled.
--ssl-ciphers=L
This option is only meaningful if SSL is in use (see --ssl
option). This option specifies the list L of cipher suites that
httperf may use in negotiating a secure connection with the
server. If the list contains more than one cipher suite, the
ciphers must be separated by a colon. If the server does not
accept any of the listed cipher suites, the connection estabâ€
lishment will fail and httperf will exit immediately. If this
option is not specified when the --ssl option is present then
httperf will use all of the SSLv3 cipher suites provided by the
underlying SSL library.
--ssl-no-reuse
This option is only meaningful if SSL and sessions are in use
(see --ssl, --wsess, --wsesslog). When an SSL connection is
established the client receives a session identifier (session
id) from the server. On subsequent SSL connections, the client
normally reuses this session id in order to avoid the expense of
repeating the (slow) SSL handshake to establish a new SSL sesâ€
sion and obtain another session id (even if the client attempts
to re-use a session id, the server may force the client to reneâ€
gotiate a session). By default httperf reuses the session id
across all connections in a session. If the --ssl-no-reuse
option is in effect, then httperf will not reuse the session id,
and the entire SSL handshake will be performed for each new conâ€
nection in a session.
Ответ 3
Мне пришлось протестировать сайт, на котором есть самозаверяющие сертификаты, и ни один из вышеперечисленных инструментов не помог. В поисках лучшей альтернативы я наткнулся на vegeta, который написан в golang. Это довольно аккуратно, вы также можете делать сюжеты и прочее. Кроме того, он поддерживает небезопасное использование. Вы можете скачать двоичные файлы здесь