(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;
}
}