Hello,

We are attempting to configure embedded  ActiveMQ broker over https and
failing to do so. Any attempt to start the broker results in
jetty.ssl.password prompt.
After entering the password the following exception is generated. 

2010-02-02 15:47:10.931::INFO:  jetty-6.1.11
2010-02-02 15:47:10.938::INFO:  Started sslsocketconnec...@0.0.0.0:62010
INFO  - TransportConnector         - Connector
https://0.0.0.0:62010?trace=true Started
2010-02-02 15:47:10.939::WARN:  EXCEPTION 
javax.net.ssl.SSLException: No available certificate or key corresponds to
the SSL cipher suites which are enabled.
        at
com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.checkEnabledSuites(SSLServerSocketImpl.java:307)
        at
com.sun.net.ssl.internal.ssl.SSLServerSocketImpl.accept(SSLServerSocketImpl.java:253)
        at
org.mortbay.jetty.security.SslSocketConnector.accept(SslSocketConnector.java:172)
        at
org.mortbay.jetty.AbstractConnector$Acceptor.run(AbstractConnector.java:707)
        at
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
jetty.ssl.password : 


Tcp and HTTP transport works just fine. Any help is appreciated.


Below is the configuration and code snippets.
 
- jetty 6.1.11 started via Maven jetty plugin:

...
                        <plugin>
                                <groupId>org.mortbay.jetty</groupId>
                                <artifactId>maven-jetty-plugin</artifactId>
                                <version>${jetty.version}</version>
                                <configuration>
                                        <connectors>
                                                <connector
implementation="org.mortbay.jetty.nio.SelectChannelConnector">
                                                        <port>8082</port>
                                            </connector>
                                            <connector
implementation="org.mortbay.jetty.security.SslSocketConnector">
                                               <port>8443</port>
                                              
<keystore>${project.build.directory}/jetty-ssl.keystore</keystore>
                                               <password>password</password>
                                               
<keyPassword>password</keyPassword>
                                            </connector>
                                        </connectors>
                                        <webAppConfig>
                                <contextPath>....</contextPath>
                                </webAppConfig>
                                </configuration>
                        </plugin>

...

- ActiveMQ embedded broker is embedded within webapp and started runtime:
  ....
        @Override
        public void initialize(Map<String, Object> m) throws Exception {
                this.svc = new BrokerService();
                for (int i = 1;; i++) {
                        String key = "connector" + i;
                        if (!m.containsKey(key)) {break;}
                        this.svc.addConnector((String) m.get(key));
                }
                initSSL();
                this.svc.start();
        }
        
        private void initSSL() throws Exception {
        TrustManager[] tms = getTrustManagers();     
        KeyManager[] kms = getKeyManagers(); 

        SSLContext context = SSLContext.getInstance("SSL"); 
        context.init(kms, tms, null); 
        
        SslContext ctxt = new SslContext(); 
        ctxt.setSSLContext(context); 
        
        SslContext.setCurrentSslContext(ctxt);          
        } 

        private TrustManager[] getTrustManagers() throws Exception { 
                // First, get the default TrustManagerFactory. 
                String alg = TrustManagerFactory.getDefaultAlgorithm(); 
                TrustManagerFactory tmFact = 
TrustManagerFactory.getInstance(alg);              
                KeyStore ks = loadKeyStore();
                
                tmFact.init(ks); 
                
                // And now get the TrustManagers 
                TrustManager[] tms = tmFact.getTrustManagers(); 
                return tms; 
        } 

        private KeyManager[] getKeyManagers() throws Exception { 
                // First, get the default KeyManagerFactory. 
                String alg = KeyManagerFactory.getDefaultAlgorithm(); 
                KeyManagerFactory kmFact = KeyManagerFactory.getInstance(alg);  
        
                KeyStore ks = loadKeyStore();
                
                // Now we initialise the KeyManagerFactory with this KeyStore 
                kmFact.init(ks, ssl_password.toCharArray()); 
                
                // And now get the KeyManagers 
                KeyManager[] kms = kmFact.getKeyManagers(); 
                return kms; 
        } 
        
        private KeyStore loadKeyStore() throws Exception {
                FileInputStream fis = null;
                KeyStore ks = null;
                
                try {
                        fis = new FileInputStream(ssl_path); 
                        ks = KeyStore.getInstance("jks"); 
                        ks.load(fis, ssl_password.toCharArray());
                }
                finally {if (fis != null) fis.close();}
                return ks;
        }

        private BrokerService svc;
        private final static String ssl_password = "password";
        private final static String ssl_path = 
"/var/com/company/keys/jetty.jks";


Thank you,
Boris.



-- 
View this message in context: 
http://old.nabble.com/Configuring-ActiveMQ-Embedded-Broker-over-HTTPS-tp27429414p27429414.html
Sent from the ActiveMQ - User mailing list archive at Nabble.com.

Reply via email to