Dropwizard 1.0 TLS Checklist

server:
  applicationConnectors:
    - type: https
      port: 9443
      keyStorePath: 'my-server.jks'
      keyStorePassword: 12bucklemyshoe
      validateCerts: false
      validatePeers: false

  adminConnectors:
    - type: https
      port: 9444
      keyStorePath: 'my-server.jks'
      keyStorePassword: 12bucklemyshoe
      validateCerts: false
      validatePeers: false

These enabled options may cause the dreaded cryptic error messages:

the trustAnchors parameter must be non-empty

and

unable to find valid certification path to requested target

  server:
    applicationConnectors:
      - type: https
        port: 9443
        excludedCipherSuites:
          - SSL_RSA_WITH_DES_CBC_SHA
          - SSL_DHE_RSA_WITH_DES_CBC_SHA
          - SSL_DHE_DSS_WITH_DES_CBC_SHA
          - SSL_RSA_EXPORT_WITH_RC4_40_MD5
          - SSL_RSA_EXPORT_WITH_DES40_CBC_SHA
          - SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA
          - SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA

        # snip

Not a checklist item, but an interesting observation. According to both the official Jetty documentation and blog:

[S]calable deployments have offloaded SSL/TLS to the load balancer and the pure java server has been more than sufficient to receive the unencrypted traffic from the load balancer

and

Typical website deployments have Apache (or Nginx) configured as reverse proxy to talk to one or more backend Jetty instances.

I’ll wager for the average reader this will be premature optimization. If 2,000 requests a second is a fine number then you’ll be fine using the native SSL implementation instead of a reverse proxy. It also sounds like Jetty 9.4 will improve on the default implementation.

Comments

If you'd like to leave a comment, please email [email protected]

2017-10-04 - stephane

After a couple of hours i stumble on your blog post and it helped me figure out what was going wrong with my ssl config. Thanks dude.That should be on the dropwizard website