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

Posted

技术标签:

【中文标题】Apache 反向代理背后的自签名证书问题?【英文标题】:Issues with self-signed certificate behind an Apache reverse-proxy? 【发布时间】:2016-09-22 10:23:18 【问题描述】:

我知道这个话题在一些较早的帖子中讨论过,尤其是 Will a self-signed certificate work behind an Apache reverse-proxy?@Ryan 发布

我面临同样的问题,但无法解决。我将 Apache 2.4.12 设置为 Oracle HTTP 服务器前的反向代理。我在代理服务器上有有效证书,但在 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/

似乎使用以下指令对很多人有用,但似乎对我不起作用

SSLProxy验证无

SSLProxyCheckPeerName 关闭

SSLProxyCheckPeerCN 关闭

SSLProxyCheckPeerExpire 关闭

我还有什么遗漏的吗?

感谢任何帮助。

谢谢, 拉杰

【问题讨论】:

我遇到了同样的问题,你解决了吗? 遇到了这个线程,可以通过添加 SSLProxyEngine 来解决,但这似乎并不能解决主线程上的问题。在日志中看到“为 url.com:443 请求 SSL 代理但未启用 [提示:SSLProxyEngine]” 【参考方案1】:

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

    '笔记本电脑'-你 'proxy' - 运行 conf 的 apache 的位置 'oracle' - 使用任意网络服务器

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

您从浏览器看到的认证路径仅在“laptop”和“proxy”之间。如果您看到来自浏览器的无效证书,则表示“代理”无法通过“笔记本电脑”进行身份验证。如果“oracle”无法向“代理”识别自己,则连接将彻底失败,引发 502 错误。

那么现在,下一步该做什么:

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

如果都不起作用,请尝试调查以下场景在哪一点失败:

    笔记本电脑向 DNS 请求“oracle.domain.com” DNS 返回“代理”机器的 IP 地址并发送请求。 “proxy”向您认证为“oracle.domain.com”服务的提供者 此时您会在浏览器中看到一个绿色的锁定图标。 'proxy'机器解析'oracle'的IP地址并发送请求。 “oracle”使用自签名证书向“代理”进行身份验证 内容从“oracle”通过“代理”返回给您。

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

【讨论】:

以上是关于Apache 反向代理背后的自签名证书问题?的主要内容,如果未能解决你的问题,请参考以下文章

Ubuntu apache创建有效的自签名证书ssl https(删除连接不安全)[重复]

错误:节点 js 应用程序中证书链中的自签名证书

Openssl:错误“证书链中的自签名证书”

SSL证书问题:证书链中的自签名证书

验证设备的自签名证书

信任来自 IIS 的自签名证书