[
https://issues.apache.org/jira/browse/AMQ-3785?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Timothy Bish updated AMQ-3785:
------------------------------
Fix Version/s: (was: 5.5.1)
5.x
Should provide unit tests and patch
> ActiveMQSslConnectionFactory does not detect ssl request in failover URIs
> when creating transports
> --------------------------------------------------------------------------------------------------
>
> Key: AMQ-3785
> URL: https://issues.apache.org/jira/browse/AMQ-3785
> Project: ActiveMQ
> Issue Type: Bug
> Components: Transport
> Affects Versions: 5.5.0
> Environment: Looks global from SVN source but I detected with JDK
> 1.6.0_31 on Redhat Linux client using AMQ 5.5.0
> Reporter: Jack Fitch
> Fix For: 5.x
>
>
> The createTransport method in ActiveMQSslConnectionFactory delegates to the
> super class if the URI scheme
> is not ssl. Failover URIs have 'failover' as the URI scheme and so always
> delegate to the superclass. This causes
> ssl connections that need key or trust stores manipulated by code to hang or
> fail as the credentials are not available.
> Code from SVN trunk for ActiveMQSslConnectionFactory shows why
> protected Transport createTransport() throws JMSException {
> // If the given URI is non-ssl, let superclass handle it.
> if (!brokerURL.getScheme().equals("ssl")) {
> return super.createTransport();
> }
> // !! jackf comment Code below never reached for failover URIs like
> failover:ssl:... or failover:(tcp:..., ssl...)
> // because the URI Scheme is failover, not ssl.
> // Therefore connections that need a keyManager or trustManager fail
> try {
> if (keyManager == null || trustManager == null) {
> trustManager = createTrustManager();
> keyManager = createKeyManager();
> // secureRandom can be left as null
> }
> SslTransportFactory sslFactory = new SslTransportFactory();
> SslContext ctx = new SslContext(keyManager, trustManager,
> secureRandom);
> SslContext.setCurrentSslContext(ctx);
> return sslFactory.doConnect(brokerURL);
> } catch (Exception e) {
> throw JMSExceptionSupport.create("Could not create Transport.
> Reason: " + e, e);
> }
> }
>
> (Vague) Solution: 1) need better pattern match than URI scheme to detect
> requests for ssl connections. 2) A failover URI is essentially a list of
> URIs so multiple ssl transport requests may be in the failover list. A first
> start is to require that the same key and trust stores are used for all
> failover connections but you may want to consider allowing customized stores
> for each of the ssl connections.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira