Сбой HTTPS POST-запроса в WebSphere 5.0 для определенного URL/ сертификата
Я пытаюсь подключиться к конечной точке веб-службы RESTful через HTTPS, используя WebSphere 5.1.
endpoint = new URL("https://restful/web/service");
HttpURLConnection connection = (HttpURLConnection) endpoint.openConnection();
connection.setRequestMethod("POST");
if (connection.getResponseCode() == 200) {
//Do something
} else {
//Show error
}
Я получаю следующее исключение на getResponseCode()
[1/22/15 9:16:28:306 GMT] 9341a3d SystemErr R javax.net.ssl.SSLProtocolException: end of file
[1/22/15 9:16:28:306 GMT] 9341a3d SystemErr R at com.ibm.jsse.bg.a(Unknown Source)
[1/22/15 9:16:28:306 GMT] 9341a3d SystemErr R at com.ibm.jsse.bg.startHandshake(Unknown Source)
[1/22/15 9:16:28:306 GMT] 9341a3d SystemErr R at com.ibm.net.ssl.www.protocol.https.b.n(Unknown Source)
[1/22/15 9:16:28:306 GMT] 9341a3d SystemErr R at com.ibm.net.ssl.www.protocol.https.p.connect(Unknown Source)
[1/22/15 9:16:28:306 GMT] 9341a3d SystemErr R at com.ibm.net.ssl.www.protocol.http.bw.getInputStream(Unknown Source)
[1/22/15 9:16:28:307 GMT] 9341a3d SystemErr R at com.ibm.net.ssl.www.protocol.http.bw.getHeaderField(Unknown Source)
[1/22/15 9:16:28:307 GMT] 9341a3d SystemErr R at com.ibm.net.ssl.www.protocol.http.bw.getResponseCode(Unknown Source)
[1/22/15 9:16:28:307 GMT] 9341a3d SystemErr R at com.ibm.net.ssl.internal.www.protocol.https.HttpsURLConnection.getResponseCode(Unknown Source)
Если я попробую тот же код на WebLogic, он работает нормально. Кроме того, для других конечных точек (например, https://googleapis/) он отлично работает как в WebLogic, так и в WebSphere.
Я уже импортировал сертификат в склад доверенных сертификатов, но, похоже, он ничего не изменил. Может кто-нибудь посоветовать, в чем может быть проблема?
1 ответ
Решение
Наконец-то нашел решение. Оказалось, что Websphere по умолчанию использует SSLv3 для рукопожатия SSL вместо TLS. Принудительное использование TLS сделало свое дело.
System.setProperty("https.protocols", "TLSv1");