AMQ-7142 - Inserting Bouncy Castle Provider Early in Java Security Provider Chain Breaks KeyStore Loading

This commit is contained in:
Colm O hEigeartaigh 2020-01-27 10:43:39 +00:00
parent dc69083fab
commit 127852d2e7
2 changed files with 9 additions and 4 deletions

View File

@ -277,9 +277,14 @@ public class BrokerService implements Service {
ClassLoader loader = BrokerService.class.getClassLoader();
Class<?> clazz = loader.loadClass("org.bouncycastle.jce.provider.BouncyCastleProvider");
Provider bouncycastle = (Provider) clazz.newInstance();
Security.insertProviderAt(bouncycastle,
Integer.getInteger("org.apache.activemq.broker.BouncyCastlePosition", 2));
LOG.info("Loaded the Bouncy Castle security provider.");
Integer bouncyCastlePosition = Integer.getInteger("org.apache.activemq.broker.BouncyCastlePosition");
int ret = 0;
if (bouncyCastlePosition != null) {
ret = Security.insertProviderAt(bouncycastle, bouncyCastlePosition);
} else {
ret = Security.addProvider(bouncycastle);
}
LOG.info("Loaded the Bouncy Castle security provider at position: " + ret);
} catch(Throwable e) {
// No BouncyCastle found so we use the default Java Security Provider
}

View File

@ -55,7 +55,7 @@ public class AMQ2902Test extends TestCase {
LOG.error("got event: " + event + ", ex:" + event.getThrowableInformation().getThrowable(), event.getThrowableInformation().getThrowable());
LOG.error("Event source: ", new Throwable("Here"));
}
if( !"Loaded the Bouncy Castle security provider.".equals(event.getMessage()) ) {
if( !((String) event.getMessage()).startsWith("Loaded the Bouncy Castle security provider at position") ) {
if (event.getMDC("activemq.broker") == null) {
failedToFindMDC.set(Boolean.TRUE);
}