Erro intermitente Curl 35 ao usar certificado autoassinado no Tomcat

Erro intermitente Curl 35 ao usar certificado autoassinado no Tomcat

Estamos usando certificados autoassinados por trás de uma variedade de balanceadores de carga, os endpoints usam certificados autoassinados.

Ao testar os endpoints diretamente usando CURL, obtemos erros intermitentes de SSL Connect (Código 35)

Aqui está um exemplo de saída de uma tentativa fracassada:

curl --insecure exemplo.com/index.html

  • Tentando 9773...
  • Conjunto TCP_NODELAY
  • Conectado a example.com (10.8.49.98) porta 9773 (#0)
  • ALPN, oferecendo h2
  • ALPN, oferecendo http/1.1
  • definir com êxito os locais de verificação do certificado:
  • CAfile: /etc/ssl/cert.pem CApath: nenhum
  • TLSv1.2 (OUT), handshake TLS, Olá do cliente (1):
  • TLSv1.2 (IN), handshake TLS, Olá do servidor (2):
  • TLSv1.2 (IN), handshake TLS, certificado (11):
  • TLSv1.2 (IN), handshake TLS, troca de chaves do servidor (12):
  • TLSv1.2 (IN), handshake TLS, servidor finalizado (14):
  • TLSv1.2 (OUT), handshake TLS, troca de chaves do cliente (16):
  • TLSv1.2 (OUT), cifra de alteração TLS, especificação de alteração de cifra (1):
  • TLSv1.2 (OUT), handshake TLS, finalizado (20):
  • LibreSSL SSL_connect: SSL_ERROR_SYSCALL em conexão com example.com
  • Fechando conexão 0 curl: (35) LibreSSL SSL_connect: SSL_ERROR_SYSCALL em conexão com example.com:9773

Isso é devido a uma configuração incorreta? Problema de desempenho do servidor? Rede?

O servidor é Tomcat 8.

Comando usado para criar o certificado:

openssl req -x509 -newkey rsa:4096 -nodes -keyout private.pem -out public.crt -days 365 -subj '/CN=example.com'

A configuração SSL do Tomcat associada:

<Connector port="9773" protocol="org.apache.coyote.http11.Http11AprProtocol"
               maxThreads="150"
               SSLEnabled="true"
               scheme="https"
               secure="true"
               compression="on"
               address="0.0.0.0"
               >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
        <SSLHostConfig
                protocols="TLSv1.2"
                >
            <Certificate
                certificateFile="/ssl/certs/public.crt"
                certificateKeyFile="/ssl/certs/private.pem"
            />
        </SSLHostConfig>
    </Connector>

informação relacionada