gpt4 book ai didi

java - 在 Jetty 中拦截 HTTP 连接

转载 作者:行者123 更新时间:2023-11-29 09:03:39 25 4
gpt4 key购买 nike

我正在使用 servlet 3.0 和 Jetty 编写一个 HTTPS 代理服务器。

如何在 jetty 处理 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 连接,以便我可以检查 SSL 流量。

知道如何让它发挥作用吗?

更新 - 我想我已经找到了第一期。即使我在日志中看到 SelectChannelConnector 和 SslSelectChannelConnector 在端口 9090 上启动,SSL 连接器也没有被触发。

所以我的问题是 - 是否可以使用 servlet 3.0 和 Jetty 在同一端口上同时处理 HTTP 和 HTTPS?

最佳答案

不,那是不可能的(事实上是可能的,但不应该)。每个连接器都需要有自己的端口。

但是,您可以使用 web.xml 中的安全约束将所有连接到 http 监听器的连接重定向到 https 端口。然而,这似乎不是您要找的东西。

我想知道当您尝试在一个端口上设置两个连接器时,为什么 Jetty 在启动时不会抛出任何异常。将验证这一点。

关于java - 在 Jetty 中拦截 HTTP 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16136819/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com