apache httpd ProxyPass com desempenho de certificado de cliente

1

Temos aqui um WebService em execução no wildfly 9. O serviço da web está disponível somente em ssl (https) e precisa de certificados de cliente.

Se alterarmos a configuração do wildfly que o wildfly se comunicará diretamente com o cliente (significa que o wildfly irá lidar com as conexões https e também verificará os certificados do cliente) em nosso testcase, um cliente pode fazer entre 12 e 15 solicitações por segundo (incluindo recebendo as respostas do servidor).

Mas se colocarmos na frente do wildfly um proxy do apache httpd (V2.2 no CentOS6) (que então manipulará o material SSL do https e verificará os certificados do cliente), o cliente só poderá (no mesmo testcase) 2 até 5 solicitações por segundo.

A configuração do proxy httpd é:

Listen 58443
NameVirtualHost *:58443

<VirtualHost *:58443>
  # server SSL settings
  SSLEngine on
  SSLProtocol all -SSLv2 -SSLv3
  SSLHonorCipherOrder On
  SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AES:RSA+3DES:!ADH:!AECDH:!MD5:!DSS
  #   Server Certificate:
  SSLCertificateFile /etc/letsencrypt/live/mydomain.de/cert.pem
  #   Server Private Key:
  SSLCertificateKeyFile /etc/letsencrypt/live/mydomain.de/privkey.pem
  #   Server Certificate Chain:
  SSLCertificateChainFile /etc/letsencrypt/live/mydomain.de/chain.pem

  Header always set Strict-Transport-Security "max-age=315360000"

  # Client certifacte authentication
  #   Certificate Authority (CA):
  SSLCACertificateFile /etc/pki/webapp/cacert.pem
  SSLVerifyClient require
  SSLVerifyDepth  2

  # proxy stuff
  <Proxy *>
    AddDefaultCharset Off
    Order Allow,Deny
    Allow from all
  </Proxy>

  # proxy to wildfly instance
  ProxyPass /myappSrv http://localhost:58080/myappSrv min=3 smax=5 ttl=600 iobuffersize=163840
  # ProxyPass /myappSrv http://localhost:58080/myappSrv disablereuse=on
  #  ProxyPassReverse /myappSrv http://localhost:58080/myappSrv
</VirtualHost>

Já brincamos com vários valores de configuração do httpd:

  • HostnameLookups está definido como off
  • Mudando para "trabalhador MPM" e brincando com várias configurações para isso ( MinSpareServers , MaxSpareServers , ThreadsPerChild , ...)
  • AllowOverride está definido como none
  • Também temos brincadeiras com os parâmetros ProxyPass (veja também comente as linhas ProxyPass)

Tudo o que fizemos não trouxe nenhuma melhoria significativa. Mas eu não posso acreditar que o desempenho é tão ruim quando usamos um proxy httpd. Também não sei o que é a garrafa leck: o proxy httpd? Ou a verificação do certificado do cliente do httpd?

    
por Steffen 06.11.2016 / 14:09

0 respostas