apache - 是否可以在代理和用户之间使用带有 ssl 加密的转发代理?

标签 apache http ssl https proxy

首先,我想澄清一下,我不是在谈论访问使用 https 传送的原始服务器上的内容,这可以使用模块 mod_proxy_connect 完成。

我想要的是客户端和代理之间的安全连接,即使请求的源实际上由不安全的标准 http 服务器提供服务。

我正在使用 apache 2.2,如果可行的话,我也想用 apache 实现这一点。

我使用 wireshark 嗅探了一些请求并注意到以下内容:

url 的常用 http http://example.com/file看起来像这样:

在与源服务器的连接上:

GET /file HTTP 1.1
Host: example.com

请注意,主机信息已从实际请求中剥离,取而代之的是提供主机 header (可以在命名虚拟主机中的服务器端处理)。

当请求通过代理服务器时,它看起来略有不同:

在与代理服务器的连接上:

GET http://example.com/file HTTP 1.1
Host: example.com

请注意,请求行现在实际上包含完整的 url,包括协议(protocol)和主机名。 主机 header 可能是多余的,总线如果我正确阅读 RFC,它是 HTTP 1.1 所必需的。

所以我考虑设置一个 apache 网络服务器监听端口 443,启用一个带有 ssl 引擎和证书的虚拟主机,并且不要将它绑定(bind)到任何主机名。

我认为应该让 apache 与 ssl 对话,但是证书的通用名称与代理服务器 ip 地址的连接行中指定的主机不匹配。

我想做的事在当前标准下是否可行?如果可行,我该怎么做?

最佳答案

当然可以,这就是 HTTPS 代理。

客户端通过 SSL 连接到代理,以文本形式向代理发送命令。

也可以使用 HTTP CONNECT 在到 HTTPS 代理的 SSL 连接“内部”建立 HTTPS 连接,尽管并非所有客户端都支持:

HTTPS connection over HTTPS proxy
client           proxy           server
ssl    \-------/   ssl
connect---------200 OK
ssl  \---------------------------/ ssl
data-------------------------------data
     /---------------------------\
       /-------\



HTTP connection over HTTPS proxy
client           proxy           server
ssl    \-------/   ssl
GET http://server/ ->
                       GET / 
                       Host: server ->
                       <---------OK, data
<--------------OK, data
       /-------\

关于apache - 是否可以在代理和用户之间使用带有 ssl 加密的转发代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10108433/

相关文章:

apache - 如何将本地 IP 地址读入 .htaccess 文件?

php - 从 PHP/Apache 运行 Perl 脚本

asp.net - ASP.NET(WebForms 或 MVC)应用程序中的哪个代码组件服务于图像等网站资源?

string - 将包含 "%"的字符串传递给 http.ResponseWriter 会导致变量丢失

java - 在 Java/Android 中读取一段文件

ssl - 启用 TLSv1.2 和 TLS_RSA_WITH_AES_256_CBC_SHA256 密码套件

Laravel 项目的所有 Assets 都出现 404 错误

perl - 如何使用 mod_perl 让 Apache 处理 .pl (Perl) 文件?

ssl - 'Client Hello' 请求中的 FreeSWITCH TLS 错误

java - JavaMail : PKIX path building failed unable to find valid certification path to requested target 中的错误