与远程服务器进行SSL握手时出错


118

我在上Apache2监听了443,并在上运行了一个Web应用程序,Tomcat7监听了8443 Ubuntu

我将apache2设置为反向代理,以便通过端口443而不是8443访问Web应用。此外,我不仅需要在浏览器和apache2之间而且还需要在apache2和tomcat7之间进行SSL通信,因此我在apache2和tomcat7上都设置了SSL 。如果我尝试直接联系tomcat7来访问Web应用程序,一切都很好。问题是,当我尝试通过apache2(反向代理)访问tomcat的Web应用程序时,在浏览器上出现错误:

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

Apache不会对您在tomcat上安装的证书进行认证。它是自签名证书吗?还是由内部CA制作?
MK。

2
使用以下命令进行自签名:openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
user2791481 2013年

3
serverfault.com/questions/356678/…我想这就是您想要的:SSLProxyVerify none SSLProxyCheckPeerCN off
MK。

9
最好将其设置SSLProxyCACertificateFile为您的私有CA证书,而不是仅关闭验证。
ndbroadbent 2014年

本博客所述,您可以关闭SSL检查。
HybrisHelp

Answers:


265

MK的评论向我指出了正确的方向。

对于Apache 2.4及更高版本,有不同的默认值和新指令。

我正在运行Apache 2.4.6,并且必须添加以下指令才能使其正常运行:

SSLProxyEngine on
SSLProxyVerify none 
SSLProxyCheckPeerCN off
SSLProxyCheckPeerName off
SSLProxyCheckPeerExpire off

因此,这将关闭保护功能,但是只要流量是本地流量(即127.0.0.1:8443),它就应该不成问题了,对吗?
bgStack15

5
好吧,因为涉及加密,它并没有关闭保护。流量仍被加密。这只是禁用了对证书的检查,以确保它是由受信任的机构执行的。因此,如果您信任服务器,则应该不会有问题。但是,是的,对于本地流量,我认为您也很好。
mydoghasworms

1
谢谢mydoghasworms。您的指令适用于服务器版本:Apache / 2.4.6。如果有人需要了解httpd的版本,请使用以下命令:httpd -V
JRichardsz

3

我在docker,反向代理和Web服务器上设置了2个服务器。一年后,我的所有网站开始突然发生此错误。较早设置时,我在Web服务器上生成了一个自签名证书。

因此,我不得不再次生成SSL证书,它开始起作用...

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


1

面临与OP相同的问题:

  • Tomcat直接通过SOAP UI访问时返回响应
  • 没有加载HTML文件
  • 当使用上一个答案提到的Apache属性时,出现了网页,但AngularJS无法获得HTTP响应

Tomcat SSL证书已过期,而浏览器将其显示为安全-Apache证书远未过期。更新Tomcat KeyStore文件解决了该问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.