JAS SSL (ssl_error_no_cypher_overlap and SSLHandshakeException: no cipher suites in common)
Hi,
I am supporting a DOORS Next Generation Evaluation and my customer needs to have company certificates (for evaluation within Company network we can send the CSR to Company Certification Authority and request a return certificate) in Jazz Authentification Server.
I have problems with SSL certificate management in my Jazz Authentification Server and CLM installation. I am always running in ssl_error_no_cypher_overlap or handshake errors (com.ibm.ws.channel.ssl.internal.SSLHandshakeErrorTracker E CWWKO0801E: Unable to initialize SSL connection. Unauthorized access was denied or security settings have expired. Exception is javax.net.ssl.SSLHandshakeException: no cipher suites in common
at com.ibm.jsse2.ab.B(ab.java:285)
at com.ibm.jsse2.nc.b(nc.java:554)
at com.ibm.jsse2.nc.c(nc.java:261)
at com.ibm.jsse2.nc.wrap(nc.java:25)
at javax.net.ssl.SSLEngine.wrap(SSLEngine.java:39))
Environment:
SUSE Linux 11 Enterprise, JAS/JTS 6.0.2 or 6.0.3M6 with Websphere Liberty Profile, IE 11 and for testing Firefox
Steps:
I used the documented steps of the jazz article https://jazz.net/library/article/1539
1. Creating Keystore with keytool (JAS installation) as a mykeystore.jks with alias sslkey
2. Creating Cert-Request
3. Sending Cert-Request to Company CA
4. Downloading the needed Root Certificates for Intranet
5. Importing Company Root Certificates in Trusted List of the Application
(/java/jre/lib/security/cacerts)
6. Company Certificat Authority sends a trusted certificate back. I save the content from “BEGIN” to „END“ in a Cer-file.
I used several test scenarios for adding the certifcate to my original keystore:
7a: Using the same alias like in step one (e.g. sslkey)
./server/jre/bin/keytool -import -alias sslkey -keystore mykeystore.jks -trustcacerts -file ./server/jre/bin/dng_cert.cer
7b: Using a different name for the alias
7c: Not using the -trustcacerts parameter in my import
8. I imported in some tests the root certificates into my keystore too (like in the Tomcat documentation)
9. Copy Keystore to /server/liberty/servers/clm/resources/security
10. Updating the JAS appConfig.xml and re-start Server
Unclear:
Has the alias for the import of the trusted certificate be the same name like in my first created Keystore? If yes, the keytool -list statement give my "trustedCertEntry" only. If no, I have my in step 1 created keystore as a "keyEntry". I am missing a private key in my keystore. Is this the reason for my problems?
Testcases:
Referencing in appConfig the serverKeyAlias to:
- updated alias entry with trusted Certificate from Company CA -> Result: Application is broken SSLHandshakeException: no cipher suites in common
- the original alias entry (the imported trusted Certificate has a different alias) -> Result: Application is working, but with Certificate Error in Browser (This connection is untrusted), because the serverKeyAlias is referencing to my self-created certificate and not to the "trusted" entry from CA.
Thanks for any help.
Hubert
I am supporting a DOORS Next Generation Evaluation and my customer needs to have company certificates (for evaluation within Company network we can send the CSR to Company Certification Authority and request a return certificate) in Jazz Authentification Server.
I have problems with SSL certificate management in my Jazz Authentification Server and CLM installation. I am always running in ssl_error_no_cypher_overlap or handshake errors (com.ibm.ws.channel.ssl.internal.SSLHandshakeErrorTracker E CWWKO0801E: Unable to initialize SSL connection. Unauthorized access was denied or security settings have expired. Exception is javax.net.ssl.SSLHandshakeException: no cipher suites in common
at com.ibm.jsse2.ab.B(ab.java:285)
at com.ibm.jsse2.nc.b(nc.java:554)
at com.ibm.jsse2.nc.c(nc.java:261)
at com.ibm.jsse2.nc.wrap(nc.java:25)
at javax.net.ssl.SSLEngine.wrap(SSLEngine.java:39))
Environment:
SUSE Linux 11 Enterprise, JAS/JTS 6.0.2 or 6.0.3M6 with Websphere Liberty Profile, IE 11 and for testing Firefox
Steps:
I used the documented steps of the jazz article https://jazz.net/library/article/1539
1. Creating Keystore with keytool (JAS installation) as a mykeystore.jks with alias sslkey
2. Creating Cert-Request
3. Sending Cert-Request to Company CA
4. Downloading the needed Root Certificates for Intranet
5. Importing Company Root Certificates in Trusted List of the Application
(/java/jre/lib/security/cacerts)
6. Company Certificat Authority sends a trusted certificate back. I save the content from “BEGIN” to „END“ in a Cer-file.
I used several test scenarios for adding the certifcate to my original keystore:
7a: Using the same alias like in step one (e.g. sslkey)
./server/jre/bin/keytool -import -alias sslkey -keystore mykeystore.jks -trustcacerts -file ./server/jre/bin/dng_cert.cer
7b: Using a different name for the alias
7c: Not using the -trustcacerts parameter in my import
8. I imported in some tests the root certificates into my keystore too (like in the Tomcat documentation)
9. Copy Keystore to /server/liberty/servers/clm/resources/security
10. Updating the JAS appConfig.xml and re-start Server
Unclear:
Has the alias for the import of the trusted certificate be the same name like in my first created Keystore? If yes, the keytool -list statement give my "trustedCertEntry" only. If no, I have my in step 1 created keystore as a "keyEntry". I am missing a private key in my keystore. Is this the reason for my problems?
Testcases:
Referencing in appConfig the serverKeyAlias to:
- updated alias entry with trusted Certificate from Company CA -> Result: Application is broken SSLHandshakeException: no cipher suites in common
- the original alias entry (the imported trusted Certificate has a different alias) -> Result: Application is working, but with Certificate Error in Browser (This connection is untrusted), because the serverKeyAlias is referencing to my self-created certificate and not to the "trusted" entry from CA.
Thanks for any help.
Hubert
One answer
Many thanks for your help.
I solved the problem! My problem was the import order of the certificates. First I have to import the Customer Root certificates into my keystore and in the very last step the CER File from Certificate Authority. And it is important that I don't use -trustcacerts in the import statement for the CER File (the keystore needs this entry as a privateKeyEntry and not trustedCertEntry). And it was important for me to use the Oracle JRE from my local desktop (jre 1.8.0- 112) and not the JAS/JTS JRE.
I solved the problem! My problem was the import order of the certificates. First I have to import the Customer Root certificates into my keystore and in the very last step the CER File from Certificate Authority. And it is important that I don't use -trustcacerts in the import statement for the CER File (the keystore needs this entry as a privateKeyEntry and not trustedCertEntry). And it was important for me to use the Oracle JRE from my local desktop (jre 1.8.0- 112) and not the JAS/JTS JRE.
Comments
Donald Nong
Nov 13 '16, 7:22 p.m.Hubert Spieß
Nov 14 '16, 3:18 a.m.Dominic Tulley
Nov 14 '16, 11:04 a.m.Donald Nong
Nov 14 '16, 6:39 p.m.