【发布时间】:2015-10-17 17:52:32
【问题描述】:
尝试将 Apache 配置为 SSL 和非 SSL 的代理,并能够修改响应正文(在我的情况下,弹出 JS 错误警报)。 类似的东西:
- HTTP Apache 代理(更改响应) 公司代理 互联网 (HTTP)
- HTTPS Apache 代理(更改响应) 企业代理 互联网 (HTTPS)
在扼杀了一点之后,我为非 SSL 示例做了:
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://<corporate proxy>/
ProxyPassReverse / http://<corporate proxy>/
<IfModule substitute_module>
AddOutputFilterByType INFLATE;SUBSTITUTE;DEFLATE text/html
Substitute "s|(<head.*?>)|$1<script type='text/javascript'>window.onerror=function(error){\n alert(error);\n};\n</script>|i"
</IfModule>
遗憾的是,我没有为 SSL 做同样的事情......并且连接无法建立...... (我认为配置中的某些内容,或者可能是对此类代理如何工作的理解)
来自 httpd-ssl 文件:
SSLEngine On
SSLProxyEngine On
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / http://<corporate proxy>/
ProxyPassReverse / http://<corporate proxy>/
SSLCertificateFile "c:/Apache24/ssl/rootCA.pem"
SSLCertificateKeyFile "c:/Apache24/ssl/rootCA.key"
要生成证书,我运行下一个命令
创建根密钥
openssl genrsa -out C:\Apache24\ssl\rootCA.key 2048
自签名此证书
openssl req -x509 -new -nodes -key C:\Apache24\ssl\rootCA.key -days 1024 -out C:\Apache24\ssl\rootCA.pem
我实际上是在尝试替换我将其配置为解密 HTTPS 的 (Fiddler),请参阅下面链接中的屏幕截图
有什么想法吗?
【问题讨论】:
-
你能发布你的 SSL 版本的配置吗?
-
请注意,我已经设法使服务器(ssl 和非 ssl)作为普通服务器工作(我看到了“它可以工作!”文本)。但作为代理... SSL 不起作用...
-
不必是 Apache 代理...可以是任何其他可配置的代理服务器(可以处理 SSL/非 SSL 并修改响应正文)
-
嗯,有一些事情要解决。后端应用程序是否有 SSL?还是 SSL 连接在代理处结束?因此,正如我所见,您有 1:一个应用程序,2:一个用于修改响应正文的反向代理,3:一个公司代理(缓存?鱿鱼?等) 客户端浏览器。您希望请求从客户端到公司代理再到 apache 代理再到应用程序。您的 SSL 端点是什么?公司代理是否在处理 SSL?是应用程序吗?
-
@JacobMargason 我希望在浏览器中我能够访问 SSL 网站(例如 GitHub,github.com)并修改响应正文。因此,Apache 代理应该处理 SSL 连接并将其传递给公司代理(http,它将按原样传递),然后是 SSL 网站。 (当我得到回复时,我将能够对其进行修改,所以我必须成为一个中间人)这是回答你的问题吗? :)
标签: apache ssl https proxy openssl