Apache反向代理背后的自签名证书问题?

时间:2016-05-25 01:47:48

标签: apache ssl proxy

我理解这个主题在几篇较旧的帖子中进行了讨论,尤其是 Will a self-signed certificate work behind an Apache reverse-proxy?由@Ryan发布

我面临同样的问题,但无法绕过它。我在Apache HTTP服务器前面将Apache 2.4.12设置为反向代理。我在代理服务器上有有效的证书,但在Oracle HTTP服务器上有自签名的证书。目标是一直执行https,但是每当浏览器到达myhost.domain时,它都会抛出一个证书警告(因为自签名证书)。在Oracle HTTP服务器上拥有正式证书不是一种选择,用户浏览器受到限制,因此无法忽略自签名证书警告。

这是我的虚拟主机

LogLevel ERROR
ServerName  myhost.domain
ServerAlias  xxx.xxx.xxx.xx
DocumentRoot D:/xyz/pubdocs
SSLEngine      On
SSLProxyEngine On
SSLCertificateFile      certs/myserver.crt
SSLCertificateKeyFile   certs/myserver.key
SSLCertificateChainFile certs/myserver_chain.crt
SSLProxyCACertificateFile certs/my_self_signed.pem
SSLProxyVerify none
SSLProxyCheckPeerName off
SSLProxyCheckPeerCN off
SSLProxyCheckPeerExpire off
SSLProtocol    -all +TLSv1
SSLProxyProtocol +SSLv3 +TLSv1 +TLSv1.1
#SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:!NULL:RC4+RSA:+HIGH:+MEDIUM
ErrorLog "logs/abc-error.log"
CustomLog "logs/abc-access.log" cert

ProxyRequests Off  
# IE compatibility
Header set X-UA-Compatible "IE=EmulateIE8"
# Prevent page from being loaded within an IFrame (Cross-Frame Scripting protection)
Header always append X-Frame-Options SAMEORIGIN
# Prevent mime sniffing exploint ; disabled breaks PEM Popup image rendering
# Header set X-Content-Type-Options: nosniff
# Disable caching
Header set Cache-Control "no-cache, must-revalidate, private"
# Enable X-XSS-Protection
Header set X-XSS-Protection: "1; mode=block"
ProxyPass / https://myhost.domain/
ProxyPassReverse / https://myhost.domain/

似乎使用以下指令适用于许多人,但似乎并不适合我

SSLProxyVerify none

SSLProxyCheckPeerName off

SSLProxyCheckPeerCN关闭

SSLProxyCheckPeerExpire off

我还缺少什么。

感谢任何帮助。

谢谢, 拉吉

1 个答案:

答案 0 :(得分:0)

似乎该错误并不完全与代理有关。配置并不完全清楚。我假设有以下三台机器:

  
      
  1. “笔记本电脑”-您
  2.   
  3. 'proxy'-与您的conf一起运行的Apache
  4.   
  5. 'oracle'-带有任意网络服务器
  6.   

我还假定所有DNS域都以“代理”为目标,其余的机器都可以通过IP地址进行访问。

您从浏览器中看到的认证路径仅在“笔记本电脑”和“代理”之间。如果您从浏览器中看到无效的证书,则表示“代理”无法通过身份验证到“笔记本”。如果“ oracle”无法将自己标识为“ proxy”,则连接将完全失败,并抛出502错误。

所以现在,下一步:

  
      
  • 从浏览器检查证书。看看它是谁的证书。
  •   
  • 如果它来自“ oracle”,则意味着您根本没有代理该请求。确保您的DNS记录针对“代理”   机器。
  •   
  • 如果它来自“代理”,但是浏览器抛出错误的CN,则您需要创建还包含“ oracle”的证书   域并将其放在“代理”计算机上。
  •   

万一它们都不起作用,请尝试调查以下情形在何时失败:

  
      
  1. 笔记本电脑向DNS请求“ oracle.domain.com”
  2.   
  3. DNS返回“代理”计算机的IP地址并发送请求。
  4.   
  5. “代理”向您认证为“ oracle.domain.com”服务的提供者
  6.   
  7. 此刻,您在浏览器中会看到一个绿色的锁定图标。
  8.   
  9. “代理”计算机解析“ oracle”的IP地址并发送请求。
  10.   
  11. 'oracle'使用自签名证书向'proxy'进行身份验证
  12.   
  13. 内容从“ oracle”通过“ proxy”返回给您。
  14.   

此外,您还应包括“ SSLProxyVerify require”,以使您的配置至少有点安全。