2012-09-06 76 views
0

我在Tomcat下開發了一個代理servlet,servlet從客戶端收到請求並轉發到另一個代理服務器,在轉發之前,它將使用代理服務器進行身份驗證。現在它可以很好地處理HTTP請求,但無法接收HTTPS請求。所以這個代理servlet並不完美。仍然無法處理代理servlet中的HTTPS請求

我已搜查谷歌在這個論壇看了很多帖子,ESP這樣一句:

Developing a proxy servlet that can handle HTTPS connections

我配置Tomcat的監聽端口8443,如下所示:

<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中本地部署了servlet,並且我將瀏覽器代理設置爲127.0.0.1:8080,但繞過localhost。

當我瀏覽https:// localhost:8443 /時,我可以看到servlet日誌中收到的https請求(通過調用request.getScheme()和request.isSecure())。但是,如果我瀏覽https://www.google.com,它無法連接,我的代理servlet沒有收到請求。

我也覆蓋service()方法並打印request.getMethod(),但仍無法捕獲HTTPS請求。

我該怎麼辦?

我想要的只是獲取HTTPS請求並添加身份驗證並轉發到下一個代理服務器。

謝謝

+1

爲什麼要實施中間人攻擊? – gigadot

+0

所以很明顯,這是行不通的。如果使用代理攔截並切換中間的證書,則無法驗證SSL證書。這是一個安全限制。 – gigadot

+0

如果你只是想要一個代理服務器,你應該試試這個http://www.servletsuite.com/servlets/httpproxy.htm – gigadot

回答