Index: container-spring/src/main/config/examples/smtpserver.xml =================================================================== --- container-spring/src/main/config/examples/smtpserver.xml (revision 1038037) +++ container-spring/src/main/config/examples/smtpserver.xml (working copy) @@ -46,6 +46,9 @@ file://conf/keystore yoursecret org.bouncycastle.jce.provider.BouncyCastleProvider + + SunX509 Index: netty-socket/src/main/java/org/apache/james/socket/netty/AbstractConfigurableAsyncServer.java =================================================================== --- netty-socket/src/main/java/org/apache/james/socket/netty/AbstractConfigurableAsyncServer.java (revision 1038037) +++ netty-socket/src/main/java/org/apache/james/socket/netty/AbstractConfigurableAsyncServer.java (working copy) @@ -73,6 +73,13 @@ */ public static final String HELLO_NAME = "helloName"; + // By default, use the Sun X509 algorithm that comes with the Sun JCE provider for SSL + // certificates + private static final String defaultX509algorithm = "SunX509"; + + // The X.509 certificate algorithm + private String x509Algorithm = defaultX509algorithm; + private FileSystem fileSystem; private Log logger; @@ -236,6 +243,7 @@ throw new ConfigurationException("keystore needs to get configured"); } secret = config.getString("tls.secret",""); + x509Algorithm = config.getString("tls.algorithm", defaultX509algorithm); } doConfigure(config); @@ -387,12 +395,11 @@ private void buildSSLContext() throws Exception { if (useStartTLS || useSSL) { - String algorithm = "SunX509"; KeyStore ks = KeyStore.getInstance("JKS"); ks.load(new FileInputStream(fileSystem.getFile(keystore)), secret.toCharArray()); // Set up key manager factory to use our key store - KeyManagerFactory kmf = KeyManagerFactory.getInstance(algorithm); + KeyManagerFactory kmf = KeyManagerFactory.getInstance(x509Algorithm); kmf.init(ks, secret.toCharArray()); // Initialize the SSLContext to work with our key managers.