我正在使用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();
答案 0 :(得分:12)
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 Project已将其规范存储库移至github。
现在可以在
找到上述LikeJettyXml.java
答案 1 :(得分:5)
对于Jetty 9,有一个很好的引用here,您需要做的就是按照here的说明创建JKS密钥库文件。
使用命令keytool -genkey -alias sitename -keyalg RSA -keystore keystore.jks -keysize 2048
。由于某些原因,使用jetty 8的功能并不适用于9。
答案 2 :(得分:-1)
对于那些无法完成上述配置工作的人: 如果您使用的是java 1.7,请确保您拥有最新的更新。 jvm 1.7的第一个版本导致访问https网页时出现问题(浏览器可能会显示:连接重置,连接中止或没有数据收到错误)。