I'm using jetty version 9.0.0.M4 and am trying to configure it to accept SSL connections. following the instructions in: http://www.eclipse.org/jetty/documentation/current/configuring-connectors.html
I've managed to write something that works. However, the code I wrote seems ugly and unnecessarily complex. Any idea how to do this properly?
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();
The Jetty component provides HTTP-based endpoints for consuming and producing HTTP requests. That is, the Jetty component behaves as a simple Web server.
Jetty is an open-source project providing an HTTP server, HTTP client, and javax. servlet container.
The ServerConnector
should be setup with an SslContextFactory
.
The rest of the work you are doing in the HttpConfiguration is irrelevant to setting up SSL.
A good example of setting up SSL in embedded mode is maintained in the embedded jetty examples project. http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/tree/examples/embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java
Edit: to be more clear (thanks Erik)
Update: June 2016
The Eclipse Jetty Project has moved its canonical repository to github.
The above LikeJettyXml.java
can now be found at
https://github.com/eclipse/jetty.project/blob/jetty-9.4.x/examples/embedded/src/main/java/org/eclipse/jetty/embedded/LikeJettyXml.java
For Jetty 9 there is a good reference here and all you need to do is to create the JKS keystore file as explained here. using the command keytool -genkey -alias sitename -keyalg RSA -keystore keystore.jks -keysize 2048
. For some reason what works with jetty 8 is not what works on 9.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With