0

私はTomcatの下でプロキシサーブレットを開発しました.サーブレットはクライアントからリクエストを受け取り、転送する前に別のプロキシサーバーに転送し、プロキシサーバーで認証します. これで、HTTP 要求を適切に処理できますが、HTTPS 要求を受信できません。したがって、このプロキシ サーブレットは完全ではありません。

私はグーグルを検索し、このフォーラムで多くの投稿を読みました。特にこれは次のとおりです。

HTTPS 接続を処理できるプロキシ サーブレットの開発

次のように、ポート 8443 でリッスンするように Tomcat を構成しました。

<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" SSLEnabled="true"
           keystoreFile="${user.home}/.keystore" keystorePass="changeit"
           maxThreads="150" scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" redirectPort="8080"/>

サーブレットを eclipse 内でローカルに展開し、ブラウザー プロキシを 127.0.0.1:8080 に設定しましたが、localhost ではバイパスします。

https:// localhost:8443/ をブラウズすると、(request.getScheme() および request.isSecure() を呼び出して) サーブレット ログで受信した https 要求を確認できます。しかし、https://www.google.comを参照すると、接続できず、プロキシ サーブレットがリクエストをキャッチしませんでした。

また、service() メソッドをオーバーライドして request.getMethod() を出力しても、HTTPS リクエストをキャッチできませんでした。

私は何をすべきか?

私が望むのは、HTTPS 要求を取得し、認証を追加して、次のプロキシ サーバーに転送することだけです。

ありがとう

4

1 に答える 1

1

これはSSLプロキシが機能する方法ではありません。HTTPSプロキシをに設定するとlocalhost:8080、ブラウザは忠実に接続しlocalhost:8080、動詞を使用しCONNECTてHTTPプロキシ接続を介してSSLトラフィックをトンネリングします。これを行わないと、SSLは特に安全ではなく、プロキシサーバーの管理者は、次に誰かがAmazonから何かを購入したり、銀行の残高を確認したり、定期支払いのアダルトエンターテインメントWebサイトにサインアップしたりしたときに、クレジットカードの詳細を簡単に読み取ることができます。最近のSSLが必要なのは、人々が何をするにしてもです。

ポート8443でこの新しいSSLプロキシについてブラウザに何も伝えていないようです。そのため、なぜそれが使用されると思うのかわかりません。そうではありません。ブラウザにSSLベースのプロキシサーバーを使用するように指示できる場合があります。つまり、プロキシをとして設定しますhttps://localhost:8443が、それでもベースのSSLトンネリングを使用するCONNECTため、接続がさらに遅くなる以外に意味はありません。

このリクエストを別のプロキシに転送するだけでよい場合は、CONNECTメソッドをアップストリームプロキシに転送し、適切な認証情報を含める必要があります。

于 2012-09-06T15:47:27.257 に答える