Я использую причал (9.4.12.v20180830) HTTPClient для вызова REST API.
Подтверждение связи SSL / TLS завершается ошибкой с приведенной ниже трассировкой исключения.
Мы версия IBM java 1.8.
jdk.tls.client.protocols определяется как TLSv1.2 Протокол SSLv3 был запрошен, но не включен ПОДДЕРЖИВАЕМЫЕ: [TLSv1, TLSv1.1 , TLSv1.2] SERVER_DEFAULT: [TLSv1, TLSv1.1, TLSv1.2] CLIENT_DEFAULT: [TLSv1.2] IBMJSSE2 включит защиту CB C с помощью SSLEngineImpl. IBMJSSE2 разрешит повторное согласование RF C 5746 для com.ibm.jsse2.renegotiate, для которого установлено значение none или по умолчанию IBMJSSE2 не будет требовать индикатор повторного согласования во время первоначального рукопожатия для com.ibm.jsse2.renegotiation.indicator, установленного в OPTIONAL или принятого по умолчанию IBMJSSE2 не будет выполнить проверку идентичности по проверке сертификата однорангового узла во время повторного согласования для com.ibm.jsse2.renegotiation.peer.cert.check, установленного на ВЫКЛ. или по умолчанию IBMJSSE2 разрешит инициированное клиентом повторное согласование, если для jdk.tls.rejectClientInitiatedRenegotiation установлено значение FALSE или IBMJSSE2 по умолчанию не разрешит небезопасное изменение сертификата сервера во время повторного согласования для jdk.tls.allowUnsafeServerCertChange, установленного на FALSE или по умолчанию
Is initial handshake: true
%% No cached client session
HttpClient@21ffc2b4-32, fatal error: 80: problem wrapping app data
javax.net.ssl.SSLHandshakeException: No negotiable cipher suite
HttpClient@21ffc2b4-32, SEND TLSv1.2 ALERT: fatal, description = internal_error
HttpClient@21ffc2b4-32, WRITE: TLSv1.2 Alert, length = 2
HttpClient@21ffc2b4-32, called closeOutbound()
HttpClient@21ffc2b4-32, closeOutboundInternal()
[Raw write]: length = 7
0000: 15 03 03 00 02 02 50 ......P
java.util.concurrent.ExecutionException: javax.net.ssl.SSLHandshakeException: No negotiable cipher suite
at org.eclipse.jetty.client.util.FutureResponseListener.getResult(FutureResponseListener.java:118)
at org.eclipse.jetty.client.util.FutureResponseListener.get(FutureResponseListener.java:110)
at
jdk.tls.client.protocols is defined as TLSv1.2
SSLv3 protocol was requested but was not enabled
SUPPORTED: [TLSv1, TLSv1.1, TLSv1.2]
SERVER_DEFAULT: [TLSv1, TLSv1.1, TLSv1.2]
CLIENT_DEFAULT: [TLSv1.2]
IBMJSSE2 will enable CBC protection
Using SSLEngineImpl.
IBMJSSE2 will allow RFC 5746 renegotiation per com.ibm.jsse2.renegotiate set to none or default
IBMJSSE2 will not require renegotiation indicator during initial handshake per com.ibm.jsse2.renegotiation.indicator set to OPTIONAL or default taken
IBMJSSE2 will not perform identity checking against the peer cert check during renegotiation per com.ibm.jsse2.renegotiation.peer.cert.check set to OFF or default
IBMJSSE2 will allow client initiated renegotiation per jdk.tls.rejectClientInitiatedRenegotiation set to FALSE or default
IBMJSSE2 will not allow unsafe server certificate change during renegotiation per jdk.tls.allowUnsafeServerCertChange set to FALSE or default
Is initial handshake: true
%% No cached client session
HttpClient@21ffc2b4-32, fatal error: 80: problem wrapping app data
javax.net.ssl.SSLHandshakeException: No negotiable cipher suite
HttpClient@21ffc2b4-32, SEND TLSv1.2 ALERT: fatal, description = internal_error
HttpClient@21ffc2b4-32, WRITE: TLSv1.2 Alert, length = 2
HttpClient@21ffc2b4-32, called closeOutbound()
HttpClient@21ffc2b4-32, closeOutboundInternal()
[Raw write]: length = 7
0000: 15 03 03 00 02 02 50 ......P
java.util.concurrent.ExecutionException: javax.net.ssl.SSLHandshakeException: No negotiable cipher suite
at org.eclipse.jetty.client.util.FutureResponseListener.getResult(FutureResponseListener.java:118)
at org.eclipse.jetty.client.util.FutureResponseListener.get(FutureResponseListener.java:110)
at
Ниже приведен пример кода,
public void initialise() {
/*
* This is to suppress Jetty logging framework, otherwise it will log
* errors & traces into stderr. Create and set a dummy Jetty Framework
* as the Jetty logger class.
*/
System.setProperty("org.eclipse.jetty.util.log.class",
"com.ibm.tivoli.netcool.integrations.transportmodule.JettyLoggerSink");
if (sslEnabled) {
try {
logger.log(Level.FINEST, "Initializing secure connection");
if (keyStoreFilename == null || keyStorePassword == null) {
throw new Exception(
"Key store filename or password not set.");
}
SslContextFactory sslContext = new SslContextFactory(false);
sslContext.setKeyStorePath(keyStoreFilename);
sslContext.setKeyStorePassword(keyStorePassword);
sslContext.setProtocol("TLSv1.2");
sslContext.start();
client = new HttpClient(sslContext);
} catch (Exception e) {
initialise_successful = false;
}
} else {
/*
* Non-SSL client initialization
*/
client = new HttpClient();
}
try {
client.start();
} catch (Exception e) {
initialise_successful = false;
}
initialise_successful = true;
logger.log(Level.FINEST,
"HTTP client has been successfully initialized");
}
Любая помощь будет запрошена.