(Sorry, I had trouble with the bugtracker)
While tracking down a problem with paths during setting up a temporary SSL key, I was a bit frustrated about the dearth of debug information coming from SSLConfig.java. I increased the amount of dumped information, and did find two minor bugs in the path names for ‘‘keystore’’ and ‘‘truststore’’.
On the calls to
keyStoreLocation = JiveGlobals.getProperty(“xmpp.socket.ssl.keystore”,“blah”)
and
trustStoreLocation = JiveGlobals.getProperty(“xmpp.socket.ssl.truststore”,“blah”)
the defaults have JiveGlobals.getMessengerHome() prepended to them (as specified in the docs), while the fetched values do not.
The following lines fix this, and provide more debug info:
(I hope I don’'t lose the formatting)
================== Line 42:
static { String algorithm = JiveGlobals.getProperty("xmpp.socket.ssl.algorithm", "TLS"); String storeType = JiveGlobals.getProperty("xmpp.socket.ssl.storeType", "jks"); // Get the keystore location. The default location is security/keystore keyStoreLocation = JiveGlobals.getProperty("xmpp.socket.ssl.keystore", "resources" + File.separator + "security" + File.separator + "keystore"); keyStoreLocation = JiveGlobals.getMessengerHome() + File.separator + keyStoreLocation; // Get the keystore password. The default password is "changeit". keypass = JiveGlobals.getProperty("xmpp.socket.ssl.keypass", "changeit"); keypass = keypass.trim(); // Get the truststore location; default at security/truststore trustStoreLocation = JiveGlobals.getProperty("xmpp.socket.ssl.truststore", "resources" + File.separator + "security" + File.separator + "truststore"); trustStoreLocation = JiveGlobals.getMessengerHome() + File.separator + trustStoreLocation; // Get the truststore passwprd; default is "changeit". trustpass = JiveGlobals.getProperty("xmpp.socket.ssl.trustpass", "changeit"); trustpass = trustpass.trim(); try { keyStore = KeyStore.getInstance(storeType); keyStore.load(new FileInputStream(keyStoreLocation), keypass.toCharArray()); trustStore = KeyStore.getInstance(storeType); trustStore.load(new FileInputStream(trustStoreLocation), trustpass.toCharArray()); sslFactory = (SSLJiveServerSocketFactory) SSLJiveServerSocketFactory.getInstance(algorithm, keyStore, trustStore); } catch (Exception e) { Log.error("SSLConfig startup problem.\n" + "storeType:[" +storeType + "]\n" + "keyStoreLocation:[" +keyStoreLocation + "]\n" + "keypass:[" +keypass + "]\n" + "trustStoreLocation:[" *trustStoreLocation* "]\n" + "trustpass:[" +trustpass + "]\n" + "Exception:[" +e + "]\n" ); keyStore = null; trustStore = null; sslFactory = null; } }