How do I fix “ssl handshake failed” with ApacheBench?

后端 未结 3 410
陌清茗
陌清茗 2021-01-01 11:16

When I use ApacheBench to test https, the error is returned, \"ssl handshake failed\".

How can I use ApacheBench to test https?

相关标签:
3条回答
  • 2021-01-01 11:21

    httperf is also single threaded, but as of today (Aug 31, 2012), it correctly handles SSL and even has a some useful additional features surrounding 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.
    
    0 讨论(0)
  • 2021-01-01 11:26

    ApacheBench doesn't seem to be capable of ignoring certificate problems (at least some of them) so I wrote this 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
    

    It's not as precise as AB, but gives the idea. Does well in comparison tests.

    0 讨论(0)
  • 2021-01-01 11:38

    I ran into this problem recently. As a work around I used the loadtest npm package, which has similar options as ab:

    https://www.npmjs.com/package/loadtest

    0 讨论(0)
提交回复
热议问题