我正在使用 servlet 3.0 和 Jetty 编写 HTTPS 代理服务器。
如何在码头处理 HTTPS 连接?
目前我正在使用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。当我启动 Jetty 时,它启动得很好——
2013-04-21 15:15:03.750:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0: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 SslSelectChannelConnector@0.0.0.0:9090
Started Jetty Server
我在 doGet 和 doPost 上使用了 @Override,当我发送 HTTP 请求时,这两种方法都可以正常触发。但是当客户端发送 HTTPS 连接时,它们都不会被触发。我想拦截 HTTPS Connect 以便检查 SSL 流量。
知道如何使它工作吗?
更新-我想我发现了第一个问题。即使我在日志中看到 SelectChannelConnector 和 SslSelectChannelConnector 在端口 9090 上启动,SSL 连接器也没有被触发。
所以我的问题是——是否可以使用 servlet 3.0 和 Jetty 在同一个端口上同时处理 HTTP 和 HTTPS?