私が達成しようとしているのは次のとおりです。サーバー アプリケーションに接続する必要がある TCP クライアントがありますが、HTTPS 経由でトラフィックを処理する必要があります。私の知る限り、次のようにリバース (またはフォワード?) プロキシを使用して実行できます。
TCP client <--- HTTPS ---> myproxy.com:443 <------> tcp server app that listen port 7999
次の vhost config を使用して、SSL なしでプロキシを正常に作成しました。
<VirtualHost *:80>
ServerName myproxy.com
SetEnv proxy-nokeepalive 1
ProxyErrorOverride off
ProxyRequests On
ProxyBadHeader Ignore
ProxyVia Full
AllowCONNECT 80 443 7999
</VirtualHost>
(これらのパラメーターのいずれかが不要かどうかはわかりません)
その vhost を使用すると、次のようにサーバーへの 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を試しました(前回のvhostと同じですが<VirtualHost *:80>
、で動作しているようです.TCPサーバーへの接続はこの方法で保護されていますか?
ありがとうございました。