以编程方式为Jetty 9嵌入式配置SSL

9ceoxa92  于 2023-03-19  发布在  其他
关注(0)|答案(4)|浏览(216)

我使用的是jetty版本9.0.0.M4,并尝试将其配置为接受SSL连接。请按照中的说明操作:http://www.eclipse.org/jetty/documentation/current/configuring-connectors.html
我已经设法写了一些有用的东西。然而,我写的代码看起来很难看,而且不必要地复杂。你知道如何正确地做到这一点吗?

final Server server = new Server(Config.Server.PORT);

SslContextFactory contextFactory = new SslContextFactory();
contextFactory.setKeyStorePath(Config.Location.KEYSTORE_LOCATION);
contextFactory.setKeyStorePassword("******");
SslConnectionFactory sslConnectionFactory = new SslConnectionFactory(contextFactory, org.eclipse.jetty.http.HttpVersion.HTTP_1_1.toString());

HttpConfiguration config = new HttpConfiguration();
config.setSecureScheme("https");
config.setSecurePort(Config.Server.SSL_PORT);
config.setOutputBufferSize(32786);
config.setRequestHeaderSize(8192);
config.setResponseHeaderSize(8192);
HttpConfiguration sslConfiguration = new HttpConfiguration(config);
sslConfiguration.addCustomizer(new SecureRequestCustomizer());
HttpConnectionFactory httpConnectionFactory = new HttpConnectionFactory(sslConfiguration);

ServerConnector connector = new ServerConnector(server, sslConnectionFactory, httpConnectionFactory);
connector.setPort(Config.Server.SSL_PORT);
server.addConnector(connector);

server.start();
server.join();
6yoyoihd

6yoyoihd1#

ServerConnector应使用SslContextFactory进行设置。
HttpConfiguration中执行的其余工作与设置SSL无关。
embedded jetty examples项目中提供了一个在嵌入式模式下设置SSL的好例子。http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/examples/embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java

  • 编辑:更清楚(谢谢Erik)*
    更新日期:2016年6月

Eclipse Jetty项目已经将其规范存储库移到了github。
上述LikeJettyXml.java现在可以在以下位置找到
https://github.com/eclipse/jetty.project/blob/jetty-9.4.x/examples/embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java

r1wp621o

r1wp621o2#

对于Jetty 9,有一个很好的参考here,您所需要做的就是使用命令keytool -genkey -alias sitename -keyalg RSA -keystore keystore.jks -keysize 2048创建JKS密钥库文件,如here所述。由于某种原因,适用于Jetty 8的文件并不适用于9。

ozxc1zmp

ozxc1zmp3#

对于那些无法获得以上配置工作:如果您使用的是java 1.7,请确保您有最新的更新版本。jvm 1.7的第一个版本会导致访问https网页时出现问题(浏览器可能显示:连接复位、连接中止或无数据接收错误)。

lg40wkob

lg40wkob4#

对于Eebbeded码头服务器,则使用
sslContextFactory.服务器sslContextFactory =新建的sslContextFactory.服务器();这将解决问题。

相关问题