Programmatically Configure SSL for Jetty 9 embedded

32,617

Solution 1

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

Solution 2

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.

Share:
32,617
Admin
Author by

Admin

Updated on January 06, 2020

Comments

  • Admin
    Admin over 4 years

    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();