Коротко говоря; Есть ли какая-либо причина, по которой приложение, работающее на Tomcat, не может взаимодействовать с серверами Paypal?
Некоторая предыстория: мы разрабатываем серию портлетов на Liferay, которые в какой-то момент взаимодействуют с серверами PayPal для запуска и проверки процесса покупки. На локальном Tomcat это работает как Charm без какой-либо специальной настройки, но после установки Liferay и портлета процесс не запускается.
Стек выглядит следующим образом:
[16/12/14 13:51:01:728 GMT+01:00] 0000015d SystemOut O 13:51:01,727 ERROR [WebContainer : 2][render_portlet_jsp:132] null
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)
at com.ibm.jsse2.SSLSocketImpl.b(SSLSocketImpl.java:168)
at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:318)
at com.ibm.jsse2.SSLSocketImpl.h(SSLSocketImpl.java:403)
at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:431)
at com.ibm.jsse2.SSLSocketImpl.startHandshake(SSLSocketImpl.java:315)
at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:103)
at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:42)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1184)
at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:390)
at com.ibm.net.ssl.www2.protocol.https.b.getResponseCode(b.java:82)
at com.paypal.core.HttpConnection.execute(HttpConnection.java:93)
at com.paypal.core.APIService.makeRequestUsing(APIService.java:176)
at com.paypal.core.BaseService.call(BaseService.java:265)
at urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService.setExpressCheckout(PayPalAPIInterfaceServiceService.java:2196)
at urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService.setExpressCheckout(PayPalAPIInterfaceServiceService.java:2148)
Я немного "погуглил" и не могу понять, где может быть ошибка.
Мы попытались зарегистрировать подписывающего сертификата Verisign, полученного с сайта PayPal, но ничего не изменилось.
Может кто-нибудь направить нас в правильном направлении?
Спасибо!
ОБНОВЛЕНИЕ
После повышения уровня ведения журнала сети я в журналах можно увидеть следующее:
Коротко говоря; Есть ли какая-либо причина, по которой приложение, работающее на Tomcat, не может взаимодействовать с серверами Paypal? Некоторая предыстория: мы разрабатываем серию портлетов на Liferay, которые в какой-то момент взаимодействуют с серверами PayPal для запуска и проверки процесса покупки. На локальном Tomcat это работает как Charm без какой-либо специальной настройки, но после установки Liferay и портлета процесс не запускается. Стек выглядит следующим образом:
[code][16/12/14 13:51:01:728 GMT+01:00] 0000015d SystemOut O 13:51:01,727 ERROR [WebContainer : 2][render_portlet_jsp:132] null 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) at com.ibm.jsse2.SSLSocketImpl.b(SSLSocketImpl.java:168) at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:318) at com.ibm.jsse2.SSLSocketImpl.h(SSLSocketImpl.java:403) at com.ibm.jsse2.SSLSocketImpl.a(SSLSocketImpl.java:431) at com.ibm.jsse2.SSLSocketImpl.startHandshake(SSLSocketImpl.java:315) at com.ibm.net.ssl.www2.protocol.https.c.afterConnect(c.java:103) at com.ibm.net.ssl.www2.protocol.https.d.connect(d.java:42) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1184) at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:390) at com.ibm.net.ssl.www2.protocol.https.b.getResponseCode(b.java:82) at com.paypal.core.HttpConnection.execute(HttpConnection.java:93) at com.paypal.core.APIService.makeRequestUsing(APIService.java:176) at com.paypal.core.BaseService.call(BaseService.java:265) at urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService.setExpressCheckout(PayPalAPIInterfaceServiceService.java:2196) at urn.ebay.api.PayPalAPI.PayPalAPIInterfaceServiceService.setExpressCheckout(PayPalAPIInterfaceServiceService.java:2148) [/code]
Я немного "погуглил" и не могу понять, где может быть ошибка. Мы попытались зарегистрировать подписывающего сертификата Verisign, полученного с сайта PayPal, но ничего не изменилось.
Может кто-нибудь направить нас в правильном направлении? Спасибо!
ОБНОВЛЕНИЕ После повышения уровня ведения журнала сети я в журналах можно увидеть следующее:
[code] 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 [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) [/code]
Протокол SSL, настроенный в консоли сервера, — TLS.