2013-04-21 72 views
2

我正在使用servlet 3.0和Jetty編寫HTTPS代理服務器。攔截Jetty中的HTTP Connect

如何在jetty中處理HTTPS Connect?

目前我使用jetty-maven-plugin和我的插件配置看起來像這 -

<groupId>org.mortbay.jetty</groupId> 
<artifactId>jetty-maven-plugin</artifactId> 
<configuration> 
    <scanIntervalSeconds>10</scanIntervalSeconds> 
    <webApp> 
     <contextPath>/</contextPath>   
    </webApp> 
    <scanIntervalSeconds>1</scanIntervalSeconds>  
    <connectors> 
     <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> 
      <port>9090</port> 
      <maxIdleTime>60000</maxIdleTime> 
     </connector> 
     <connector implementation="org.eclipse.jetty.server.ssl.SslSelectChannelConnector"> 
      <port>9090</port> 
      <keystore>src/keystore.jks</keystore> 
      <keyPassword>test</keyPassword> 
      <password>test</password> 
     </connector>   
    </connectors>  
</configuration> 
/plugin> 

是 - 我要處理HTTP和HTTPS在同一個端口。當我開始碼頭,它開始只是細

2013-04-21 15:15:03.750:INFO:oejs.AbstractConnector:Started [email protected]:9090 
2013-04-21 15:15:03.912:INFO:oejus.SslContextFactory:Enabled Protocols [SSLv2Hello, SSLv3, TLSv1, TLSv1.1, TLSv1.2] of [SSLv2Hello, SSLv3, TLSv1, TLSv1.1, TLSv1.2] 
2013-04-21 15:15:03.917:INFO:oejs.AbstractConnector:Started [email protected]:9090 
Started Jetty Server 

我已經在@Override的doGet和doPost和這兩種方法火就好了,當我發送HTTP請求。但是,當客戶端發送HTTPS Connect時,它們都不會被觸發。我想攔截HTTPS Connect,以便檢查SSL流量。

任何想法如何使它工作?

更新 - 我想我找到了第一個問題。即使我在日誌中看到SelectChannelConnector和SslSelectChannelConnector在端口9090上啓動,SSL連接器也未被觸發。

所以我是 - 的問題是有可能使用的servlet 3.0和Jetty來處理HTTP和HTTPS同一端口上?

回答

0

不,那是不可能的(實際上這是可能的,但它不應該是)。每個連接器都需要它自己的端口。

但是,您可以重定向所有在web.xml使用安全約束連接到HTTP偵聽到HTTPS端口。但是,這似乎並不是你想要的。

我不知道爲什麼,當您嘗試設置兩個連接器在單一端口上碼頭不扔在啓動任何異常。將驗證。

+0

碼頭或者是精確的JVM拋出AddressAlreadyInUseException當您嘗試在碼頭9同一端口上配置兩個連接器符合市場預期。 – 2013-04-22 11:01:41

+3

除了在某些版本的Windows上,顯然允許您打開兩次相同的端口..這只是錯誤和破碎,此外,http和https不應該在同一個端口上運行 – 2013-04-22 12:17:33

+0

Downvoted,因爲它實際上是可能的。 – 2014-07-22 15:12:39