24

我正在使用码头版本 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();
4

3 回答 3

11

ServerConnector应该使用SslContextFactory.

您在HttpConfiguration中所做的其余工作与设置 SSL 无关。

在嵌入式码头示例项目 中维护了在嵌入式模式下设置 SSL 的一个很好的示例。http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/examples/embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java

编辑:更清楚(感谢埃里克)

更新: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

于 2013-01-16T21:55:46.900 回答
5

对于 Jetty 9,这里有一个很好的参考您需要做的就是按照这里的说明创建 JKS 密钥库文件。使用命令keytool -genkey -alias sitename -keyalg RSA -keystore keystore.jks -keysize 2048。出于某种原因,适用于 jetty 8 的功能不适用于 9。

于 2013-06-15T13:47:05.360 回答
0

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

于 2014-10-26T16:59:51.550 回答