When setting up Dropwizard for Mutual TLS, is it possible to rely on the CA roots that are installed on the server's version of Java, or do we need to explicitly supply a truststore property to the configuration.
Here's my configuration today:
server:
applicationConnectors:
- type: https
port: 8443
# Key store settings
keyStorePath: "{keystore-path}"
keyStorePassword: "{keystore-secret}"
certAlias: server-tls
# Explicitly not setting trust store (rely on system)
# Whether to require authentication by peer certificate.
needClientAuth: true
supportedProtocols: [ "TLSv1.3" ]
allowRenegotiation: true
We have two root certificates installed on the server, the one that the keystore was signed with and another one that we also trust. When I check with keytool, I can see that both trust stores are present on the server. The Java version is Azul Java 11.
keytool -list -cacerts
When we make a client request with a client certificate signed with the same root as the server's keystore root, mutual TLS authentication completes successfully. When we make a client request with a client certificate signed with one of the roots that matches the server's cacerts, but not the server's keystore root, mutual TLS quits with an error that indicates that certificate cannot be verified because it cannot find the root chain.
Is this an error in my understanding? Should Dropwizard not rely on the root certificate chains that are installed on the server?
Thank you,
Gad