2013-04-21 99 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