Utilizzando SSL dal Oracle JVM (JSSE)
Vedi anche
In MQ Client versione "What TLS cipherspecs/ciphersuites are supported when connecting from Oracle Java (non-IBM JRE) to MQ queue manager?" 8.0.0.2 è inclusa una patch per utilizzare TLS con Oracle JVM, questo funziona con la risposta lanes sopra
Il ge t farlo funzionare è necessario l'ultimo client MQ che contiene IV66840: WMQ V7 Java/JMS: aggiungere il supporto per particolari TLS CIPHERSPECS QUANDO in esecuzione con IBM Java Runtime Environment
http://www-01.ibm.com/support/docview.wss?uid=swg1IV66840
(download)
a seconda della posizione potrebbe essere necessario installare (Java Cryptography Extension JCE) Politica forza illimitata Giurisdizione Files 8 (download)
per utilizzare questo è necessario configurato utilizzando l'argomento JVM:
01.235.164,106174 millions
-Dcom.ibm.mq.cfg.useIBMCipherMappings=false
Nota che il comportamento implementazione di protezione predefinito differs tra Oracle e IBM JVM:
Il Oracle JSSE Reference guide dice:
Se il parametro KeyManager [] è nullo, allora un KeyManager vuoto sarà essere definito per questo contesto.
Il IBM JSSE Reference guide dice:
Se il KeyManager [] paramater è nullo, la sicurezza installato fornitori verranno ricercati per la realizzazione più alta priorità del KeyManagerFactory, da cui un KeyManager appropriata essere ottenuto .
Il che significa che si deve configurare your own ssl context
SSLContext sslcontext = SSLContext.getInstance("TLS");
String keyStore = System.getProperty("javax.net.ssl.keyStore");
String keyStoreType = System.getProperty("javax.net.ssl.keyStoreType", KeyStore.getDefaultType());
String keyStorePassword = System.getProperty("javax.net.ssl.keyStorePassword","");
KeyManager[] kms = null;
if (keyStore != null)
{
KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
KeyStore ks = KeyStore.getInstance(keyStoreType);
if (keyStore != null && !keyStore.equals("NONE")) {
fs = new FileInputStream(keyStore);
ks.load(fs, keyStorePassword.toCharArray());
if (fs != null)
fs.close();
char[] password = null;
if (keyStorePassword.length() > 0)
password = keyStorePassword.toCharArray();
kmf.init(ks,password);
kms = kmf.getKeyManagers();
}
sslcontext.init(kms,null,null);
E poi fornitura che al client MQ JMS:
JmsConnectionFactory cf = ...
MQConnectionFactory mqcf = (MQConnectionFactory) cf;
mqcf.setSSLSocketFactory(sslcontext.getSocketFactory());
Se si utilizza un server applicazioni questo potrebbe essere gestito dall'applicazione server.
Anche io non sono in grado di connettermi con "TLS_RSA_WITH_AES_128_CBC_SHA", non esiste ancora alcuna soluzione per farlo funzionare perfettamente con Sun JDK? –