[jboss-user] Presenting certificate chain with subsidiary CA certificate

Brian Candler brian.candler at ingg.com
Mon Jan 25 17:19:26 EST 2010


I have a problem getting Jboss to present a chain of certificates to a
client.

The situation is this: the server has a certificate signed by an
intermediate (subsidiary) CA, and the subsidiary CA has a certificate signed
by a root CA.

I have installed all three certificates into the keystore using keytool
(keytool -list shows them):

  - the server certificate
  - the intermediate certificate
  - the root certificate

each with a different alias. However, when an TLS client connects, only the
server certificate is presented to the client. This can be demonstrated
using

    openssl s_client -connect x.x.x.x:443

Since the client has only the root certificate, it cannot verify the server
certificate.

Now, the server should be presenting the intermediate certificate as well. I
can make this work in Tomcat behind Apache (you can either concatenate
multiple PEM files together, or use the SSLCertificateChainFile directive),
but I can't see what to do with Jboss.

This is Jboss 4.3.2ga, and here's the relevant bit of server.xml:

  <!-- Define a SSL HTTP/1.1 Connector on port 443 -->
  <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true"
                   maxThreads="150" scheme="https" strategy="ms" secure="true"
                   SSLEngine="on"
                   clientAuth="false" sslProtocol="TLS"
    SSLCertificateFile="${jboss.server.home.dir}/conf/server-cert.pem"
    SSLCertificateKeyFile="${jboss.server.home.dir}/conf/server-key.pem"
    SSLCACertificateFile="${jboss.server.home.dir}/conf/ca-chain.pem"
    keystoreFile="${jboss.server.home.dir}/conf/server.keystore" keystorePass="XXXXXXXX"
    truststoreFile="${jboss.server.home.dir}/conf/server.truststore" truststorePass="YYYYYYYY"
  />

I'm not actually sure if the SSLCertificateFile/KeyFile/CACertificateFile do
anything, but they're in a configuration I inherited. Certainly the
keystoreFile directive is active, because if I give the wrong keystorePass
then I'm told that the keystore file is not readable.

I also tried putting the certificates into server.truststore, but this
doesn't seem to make a difference.

Any help much appreciated.

Thanks,

Brian Candler.



More information about the jboss-user mailing list