0

私が達成しようとしているのは次のとおりです。サーバー アプリケーションに接続する必要がある 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サーバーへの接続はこの方法で保護されていますか?

ありがとうございました。

4

1 に答える 1