这是我想要实现的目标:我有一个 TCP 客户端需要连接到我们的服务器应用程序,但我需要通过 HTTPS 完成流量。据我所知,它可以通过反向(或正向?)代理来完成,如下所示:
TCP client <--- HTTPS ---> myproxy.com:443 <------> tcp server app that listen port 7999
我使用以下虚拟主机配置成功创建了一个没有 SSL的代理:
<VirtualHost *:80>
ServerName myproxy.com
SetEnv proxy-nokeepalive 1
ProxyErrorOverride off
ProxyRequests On
ProxyBadHeader Ignore
ProxyVia Full
AllowCONNECT 80 443 7999
</VirtualHost>
(我不确定这些参数中的任何一个是否是不必要的)
使用该虚拟主机,我可以像这样启动与服务器的 tcp 连接:
telnet myproxy.com 80
> Connected to myproxy.com.
CONNECT myproxy.com:7999 HTTP/1.1
Host: myproxy.com:7999
> HTTP/1.0 200 Connection Established
> Proxy-agent: Apache/2.4.18 (Ubuntu)
一旦我添加 SSL 并使用端口 443,我就无法再连接:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName myproxy.com
SetEnv proxy-nokeepalive 1
ProxyErrorOverride off
ProxyRequests On
ProxyBadHeader Ignore
ProxyVia Full
AllowCONNECT 80 443 7999
SSLProxyEngine On
SSLEngine On
SSLCertificateFile...
</VirtualHost>
</IfModule>
如果我尝试连接到这个虚拟主机,我会得到以下信息:
telnet myproxy.com 443
> Connected to myproxy.com.
CONNECT myproxy.com:7999 HTTP/1.1
Host: myproxy.com:7999
> Connection closed by foreign host.
我在做什么错,这只能通过使用端口 443 吗?在键入此内容时,我尝试了启用 SSL 的端口 80(与我的上一个虚拟主机相同,但使用<VirtualHost *:80>
, 并且它似乎可以工作。我与 TCP 服务器的连接是否以这种方式安全?我怎么能确定呢?
谢谢你。