【问题标题】:Proxying with SSL [closed]使用 SSL 代理 [关闭]
【发布时间】:2011-10-09 12:59:13
【问题描述】:

我有一台运行 Apache 的 Linux 主机和一台运行 IIS 的 Windows 主机。我有一个指向 Linux 主机的域,需要将它的请求中继(代理)到 IIS;因此,我在 Apache 中有以下虚拟主机定义(效果很好):

<VirtualHost 192.168.0.2:80>
    ServerName www.acme.com
    DocumentRoot /var/www/acme.com

    RewriteEngine On
    RewriteOptions Inherit
    RewriteRule ^/(.*) http://win.acme.com/$1 [P]
</VirtualHost>

现在我想添加 SSL 支持;定义变为:

<VirtualHost 192.168.0.2:443>
    ServerName www.acme.com
    DocumentRoot /var/www/acme.com
    GnuTLSEnable On
    GnuTLSPriorities NORMAL:%COMPAT
    GnuTLSCertificateFile /var/www/ssl/www.acme.com.crt
    GnuTLSKeyFile /var/www/ssl/www.acme.com.key

    RewriteEngine On
    RewriteOptions Inherit
    RewriteRule ^/(.*) https://win.acme.com/$1 [P]
</VirtualHost>

我在两个 Web 服务器上都有有效且受信任的证书,如果我访问 https://win.acme.com 一切都很好,但是,当我访问 https://www.acme.com 时,我会收到 500 Internal Server Error 消息。查看错误日志显示:

[2011 年 7 月 20 日星期三 08:35:34] [错误] [客户端 76.168.166.70] SSL 代理 请求 www.wileybits.com:80 但未启用 [提示: SSLProxyEngine] [2011 年 7 月 20 日星期三 08:35:34] [错误] 代理:HTTPS: 无法为 74.166.186.70:443 (win.acme.com) 启用 ssl 支持

请注意代理请求似乎是针对错误的域(wileybits)...它显示的域也由我的 Apache 服务器托管,但我不明白为什么它会出现在 acme.com 的日志中(也许是反向 DNS 查找?)

无论如何,我错过了什么?

提前致谢 - ekkis

附言主机名和地址已被更改以保护无辜者:)

* 更新 *

与:

RewriteRule ^/(.*) https://win.acme.com/$1 [R,L]

它似乎工作正常,但当然,Windows 的主机名变得可见,这在我的场景中是不可接受的

我也尝试过(而不是 mod_rewrite):

ProxyRequests Off
ProxyPass / https://win.acme.com/

但同样的错误

【问题讨论】:

  • 为什么我会得到一个减分?

标签: mod-rewrite apache2 ssl-certificate virtualhost mod-proxy


【解决方案1】:

想通了...显然我可以做到这一点:

SSLProxyEngine On
RequestHeader set Front-End-Https "On"
ProxyPass / https://win.acme.com/
ProxyPassReverse / https://win.acme.com/
CacheDisable *

而且效果很好!

[解决方案来自 3cx.org 上的mikeg's posting]

【讨论】:

  • 对于那些后来发现的人:我的问题不包括SSLProxyEngine on。请注意,它不能在.htaccess 文件中。
  • 您还需要 sudo a2enmod headers proxy ssl cache 并添加 SSLEngine(否则我收到错误 [error] Oops, no RSA or DSA server certificate found for 'www.somedomain.com:0'?!)和 SSLCertificateFile/SSLCertificateKeyFile 具有相同的密钥和证书
  • 对于看到这个可能会感到困惑的其他人:Front-End-Httpsproprietary flag for Microsoft applications,并且在代理到其他服务时不需要设置。
  • 我相信现在是CacheDisable /
【解决方案2】:

不确定导致此错误的原因,但您可能希望尝试使用 Squid 或 Varnish 来完成此操作。以前,我使用 Squid 代理安全的 Windows IIS 实例没有问题。

【讨论】:

    猜你喜欢
    • 2018-08-13
    • 2013-07-23
    • 2011-08-16
    • 2014-05-21
    • 2017-05-18
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多