Erro durante o handshake SSL com servidor remoto


118

Eu tenho Apache2(ouvindo em 443) e um aplicativo da web em execução Tomcat7(ouvindo em 8443) em Ubuntu.

Defino apache2 como proxy reverso para acessar o aplicativo da web pela porta 443 em vez de 8443. Além disso, preciso ter comunicação SSL não apenas entre o navegador e o apache2, mas também entre o apache2 e o tomcat7, portanto, defino o SSL no apache2 e tomcat7 . Se eu tentar acessar o aplicativo da web entrando em contato diretamente com tomcat7, está tudo bem. O problema é que quando tento acessar o app web do tomcat através do apache2 (proxy reverso), no navegador aparece o erro:

Proxy Error
The proxy server could not handle the request GET /web_app.
Reason: Error during SSL Handshake with remote server

O Apache não confirma o certificado que você instalou no tomcat. É um certificado autoassinado? Ou é feito por um CA interno?
MK.

2
Ele é autoassinado com este comando: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
user2791481

3
serverfault.com/questions/356678/… Acho que é isso que você quer: SSLProxyVerify nenhum SSLProxyCheckPeerCN off
MK.

9
Melhor definir SSLProxyCACertificateFileo certificado de CA privado, em vez de apenas desligar a verificação.
ndbroadbent

conforme explicado neste blog, você pode desativar as verificações de SSL.
HybrisHelp de

Respostas:


265

O comentário de MK me apontou na direção certa.

No caso do Apache 2.4 e superior, existem diferentes padrões e uma nova diretiva.

Estou executando o Apache 2.4.6 e precisei adicionar as seguintes diretivas para fazê-lo funcionar:

SSLProxyEngine on
SSLProxyVerify none 
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off

Portanto, isso desativa a proteção, mas contanto que o tráfego seja local (ou seja, 127.0.0.1:8443 ) não deve ser um problema, certo?
bgStack15

5
Bem, ele não desativa a proteção no que diz respeito à criptografia. O tráfego ainda está criptografado. Isso apenas desativa a verificação do certificado para ter certeza de que é por uma autoridade confiável. Portanto, se você confiar no servidor, não deverá ter problemas. Mas sim, para o tráfego local, acho que você também está bem.
mydoghasworms

1
Obrigado mydoghasworms. Suas diretivas funcionam na versão do servidor: Apache / 2.4.6. Se alguém precisa saber a versão do httpd, use: httpd -V
JRichardsz

3

Eu tenho 2 servidores configurados no docker, proxy reverso e servidor web. Este erro começou a acontecer para todos os meus sites de repente após 1 ano. Ao configurar anteriormente, gerei um certificado autoassinado no servidor da web.

Então, eu tive que gerar o certificado SSL novamente e ele começou a funcionar ...

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ssl.key -out ssl.crt


1

Enfrentou o mesmo problema que OP:

  • O Tomcat retornou uma resposta ao acessar diretamente pela IU SOAP
  • Não carregou arquivos html
  • Quando usado as propriedades Apache mencionadas pela resposta anterior, a página da web apareceu, mas AngularJS não conseguiu obter a resposta HTTP

O certificado SSL do Tomcat expirou enquanto um navegador o mostrava como seguro - o certificado Apache estava longe de expirar. Atualizar o arquivo Tomcat KeyStore resolveu o problema.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.