2014-12-16 5 views
3

Короткий рассказ; есть ли причина, по которой приложение, работающее в Tomcat, не может связываться с серверами Paypal? Некоторые предпосылки: мы разрабатываем серию портлетов на Liferay, которые в какой-то момент общаются с серверами PayPal для запуска и проверки процесса покупки. Это работает как очарование локального tomcat без какой-либо специальной настройки, но после установки Liferay и портлета он не запускает процесс. стек выглядит следующим образом:SSL handshake_failure на Websphere 8.5 (работает на Tomcat)

Я «googleing» немного вокруг и не могу понять, где ошибка может быть. Мы попытались зарегистрировать подписью сертификат Verisign, полученный с сайта paypal, но ничего не изменилось.

Может кто-нибудь направить нас в правильном направлении? Спасибо!


UPDATE Поднявшись уровня сети протоколирования можно увидеть следующую информацию в журналах:

 O class com.ibm.websphere.ssl.protocol.SSLSocketFactory is loaded 
    O instantiated an instance of class com.ibm.websphere.ssl.protocol.SSLSocketFactory 
    O 
handshake: true 
    O Ignoring unsupported cipher suite: SSL_RSA_WITH_AES_128_CBC_SHA 
    O Ignoring unsupported cipher suite: SSL_DHE_RSA_WITH_AES_128_CBC_SHA 
    O Ignoring unsupported cipher suite: SSL_DHE_DSS_WITH_AES_128_CBC_SHA 
    O %% No cached client session 
    O *** ClientHello, SSLv3 
    O RandomCookie: GMT: 1402031796 bytes = { 166, 100, 171, 183, 214, 31, 12, 68, 124, 68, 151, 195, 7, 4, 28, 112, 39, 90, 248, 143, 129, 106, 212, 33, 244, 40, 233, 94 } 
    O Session ID: {} 
    O Cipher Suites: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_RC4_128_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_RSA_FIPS_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, SSL_RENEGO_PROTECTION_REQUEST] 
    O Compression Methods: { 0 } 
    O *** 
    O [write] MD5 and SHA1 hashes: len = 75 
    O 0000: 01 00 00 47 03 00 54 91 4f b4 a6 64 ab b7 d6 1f ...G..T.O..d.... 
0010: 0c 44 7c 44 97 c3 07 04 1c 70 27 5a f8 8f 81 6a .D.D.....p.Z...j 
0020: d4 21 f4 28 e9 5e 00 00 20 00 04 00 05 00 0a fe ................ 
0030: ff 00 16 00 13 00 66 00 09 fe fe 00 15 00 12 00 ......f......... 
0040: 03 00 08 00 14 00 11 00 ff 01 00     ........... 

    O WebContainer : 10, WRITE: SSLv3 Handshake, length = 75 
    O [Raw write]: length = 80 
    O 0000: 16 03 00 00 4b 01 00 00 47 03 00 54 91 4f b4 a6 ....K...G..T.O.. 
0010: 64 ab b7 d6 1f 0c 44 7c 44 97 c3 07 04 1c 70 27 d.....D.D.....p. 
0020: 5a f8 8f 81 6a d4 21 f4 28 e9 5e 00 00 20 00 04 Z...j........... 
0030: 00 05 00 0a fe ff 00 16 00 13 00 66 00 09 fe fe ...........f.... 
0040: 00 15 00 12 00 03 00 08 00 14 00 11 00 ff 01 00 ................ 

    O [Raw read]: length = 5 
    O 0000: 15 03 00 00 02          ..... 

    O [Raw read]: length = 2 
    O 0000: 02 28            .. 

    O WebContainer : 10, READ: SSLv3 Alert, length = 2 
    O WebContainer : 10, RECV TLSv1 ALERT: fatal, handshake_failure 
    O WebContainer : 10, called closeSocket() 
    O WebContainer : 10, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 
    O 
handshake: true 
    O Ignoring unsupported cipher suite: SSL_RSA_WITH_AES_128_CBC_SHA 
    O Ignoring unsupported cipher suite: SSL_DHE_RSA_WITH_AES_128_CBC_SHA 
    O Ignoring unsupported cipher suite: SSL_DHE_DSS_WITH_AES_128_CBC_SHA 
    O %% No cached client session 
    O *** ClientHello, SSLv3 
    O RandomCookie: GMT: 1402031797 bytes = { 153, 95, 153, 155, 68, 36, 152, 92, 71, 172, 226, 104, 156, 107, 235, 73, 63, 239, 198, 202, 166, 216, 158, 26, 45, 59, 169, 169 } 
    O Session ID: {} 
    O Cipher Suites: [SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_RSA_FIPS_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_RC4_128_SHA, SSL_RSA_WITH_DES_CBC_SHA, SSL_RSA_FIPS_WITH_DES_CBC_SHA, SSL_DHE_RSA_WITH_DES_CBC_SHA, SSL_DHE_DSS_WITH_DES_CBC_SHA, SSL_RSA_EXPORT_WITH_RC4_40_MD5, SSL_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA, SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA, SSL_RENEGO_PROTECTION_REQUEST] 
    O Compression Methods: { 0 } 
    O *** 
    O [write] MD5 and SHA1 hashes: len = 75 
    O 0000: 01 00 00 47 03 00 54 91 4f b5 99 5f 99 9b 44 24 ...G..T.O.....D. 
0010: 98 5c 47 ac e2 68 9c 6b eb 49 3f ef c6 ca a6 d8 ..G..h.k.I...... 
0020: 9e 1a 2d 3b a9 a9 00 00 20 00 04 00 05 00 0a fe ................ 
0030: ff 00 16 00 13 00 66 00 09 fe fe 00 15 00 12 00 ......f......... 
0040: 03 00 08 00 14 00 11 00 ff 01 00     ........... 

    O WebContainer : 10, WRITE: SSLv3 Handshake, length = 75 
    O [Raw write]: length = 80 
    O 0000: 16 03 00 00 4b 01 00 00 47 03 00 54 91 4f b5 99 ....K...G..T.O.. 
0010: 5f 99 9b 44 24 98 5c 47 ac e2 68 9c 6b eb 49 3f ...D...G..h.k.I. 
0020: ef c6 ca a6 d8 9e 1a 2d 3b a9 a9 00 00 20 00 04 ................ 
0030: 00 05 00 0a fe ff 00 16 00 13 00 66 00 09 fe fe ...........f.... 
0040: 00 15 00 12 00 03 00 08 00 14 00 11 00 ff 01 00 ................ 

    O [Raw read]: length = 5 
    O 0000: 15 03 00 00 02          ..... 

    O [Raw read]: length = 2 
    O 0000: 02 28            .. 

    O WebContainer : 10, READ: SSLv3 Alert, length = 2 
    O WebContainer : 10, RECV TLSv1 ALERT: fatal, handshake_failure 
    O WebContainer : 10, called closeSocket() 
    O WebContainer : 10, handling exception: javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 
    O 10:41:09,593 ERROR [WebContainer : 10][PaypalUtils:145] Errores en setPaypalExpressCheckout 
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure 
    at com.ibm.jsse2.o.a(o.java:33) 
    at com.ibm.jsse2.o.a(o.java:30) 

Протокол SSL настроен на консоли сервера является TLS.

+1

Вам необходимо добавить сертификат paypal серверов в NodeDefaultTrustStore (для одного сервера) или CellDefaultTrustStore (если вы используете WAS ND с менеджером развертывания). – Gas

+0

Наверное, нет. Это предупреждение поступает с сервера и не должно иметь ничего общего с проверкой сертификата, выполняемой клиентом. –

+0

Должно быть довольно просто посмотреть в захвате пакетов или ssldump, чтобы увидеть, как ваше рукопожатие на стороне клиента отличается на двух серверах - клиентская версия, расширения и т. Д. Javax.net.debug = ALL будет намного более разборчивым путь. Вероятно, что кандидаты будут одним клиентом или другим, используя SSLv3 или TLSv1.2 и вызывая проблему. – covener

ответ

1

Полученное фатальным предупреждение: handshake_failure

Это может быть что угодно, как отсутствует сертификат клиента, никакие общие шифры, неправильная версия протокола и т.д. Но это не имеет, как правило, ничего общего с проверкой сертификатов.

Пожалуйста, свяжитесь с другими клиентами, проверьте с помощью SSLLabs и т. Д., Чтобы уменьшить количество возможных причин. См. Также http://noxxi.de/howto/ssl-debugging.html#aid_external_debugging для шагов, которые вы можете попробовать в отладке и какую информацию вы должны собирать, если вам нужна помощь от других. Если у вас есть дополнительная информация, разместите его здесь, чтобы можно было найти решение проблемы.

EDIT на основе новой информации в вопросе:

O *** ClientHello, SSLv3 
... 
O 0000: 16 03 00 

Вы используете SSL 3.0, который можно увидеть из отладочных сообщений. SSL 3.0 блокируется большинством основных сайтов из-за POODLE. Хотя вы утверждаете, что используете TLS1.x уже, похоже, это не так, в соответствии с этой информацией для отладки, поэтому вы должны снова проверить свою настройку.

+0

Я рассмотрю нашу конфигурацию, используя предоставленные вами ссылки. Спасибо! –

+0

Вы уже добавили сертификат из конечной точки в доверительном магазине? –

+0

См. Edit: вы используете SSL 3.0, который, вероятно, запрещен на сервере. –

0

Обычно в Websphere вам необходимо импортировать сертификат сервера, с которым вы хотите установить связь. Если вы попробуете его вручную, вероятно, вы не будете импортировать соответствующий сертификат в цепочку, поэтому скорее используйте «retrieve from port» в консоли администратора.

Другой вариант заключается в том, что Paypal убивает SSL из-за проблемы с пуделем :). Повысьте уровень безопасности до TLS в этом случае в меню безопасности в консоли администратора

+0

Спасибо @Raul Lapeira Herrero. Уровень безопасности уже установлен на SSL_TLS, поэтому он должен иметь возможность обрабатывать оба. Мы продолжим расследование. Gracias! ;-) –

0

Трассировка показывает, что с удаленного сервера вы получили сообщение об ошибке подтверждения. Я вижу, что ваш сервер отправил сообщение приветствия клиента, поэтому вы ожидаете увидеть ответ с приветственным сообщением сервера, вместо этого соединение закончилось внезапно с другого конца. В этих случаях вам понадобится кто-то из удаленной стороны, чтобы взглянуть и рассказать вам, почему это соединение терпит неудачу. В противном случае вы действительно работаете в темноте, и вы можете попробовать много разных вещей.

Однако, одна вещь, которую я замечаю, заключается в том, что вы используете протокол SSLv3, в то время как другой конец, по-видимому, использует протокол TLSv1.Я бы предположил, что такая организация, как Paypal, вероятно, совместима с FIPS, что означает, что они перестали использовать протокол SSL и использовали только TLS как часть совместимости.

Смежные вопросы