2014-12-16 2 views
3

짧은 이야기; Tomcat에서 작동하는 응용 프로그램이 Paypal 서버와 통신 할 수없는 이유가 있습니까? 일부 배경 : 우리는 Liferay에서 일련의 포틀릿을 개발 중입니다. 포틀릿은 페이팔 서버와 통신하여 구매 프로세스를 시작하고 유효성을 검사합니다. 이것은 특별한 설정없이 local tomcat에서의 매력처럼 작동하지만 Liferay와 포틀릿을 설치 한 후에 프로세스를 시작하지 못합니다. 스택은 다음과 같습니다 : 나는 주위에 약간의 "googleing"봤는데 오류가있을 수있는 곳을 알아낼 수 없습니다Websphere 8.5 (Tomcat에서 작업 중)의 SSL 핸드 셰이크 _ 실패.

. 우리는 paypal 사이트에서 가져온 Verisign 인증서 서명자를 등록하려고 시도했지만 아무 것도 변경되지 않았습니다.

누군가 올바른 방향으로 나아갈 수 있습니까? 감사합니다.


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

페이팔 서버 인증서를 NodeDefaultTrustStore (단일 서버의 경우) 또는 CellDefaultTrustStore (Deployment Manager로 WAS ND를 실행중인 경우)에 추가해야합니다. – Gas

+0

아마도 그렇지 않습니다. 이 경고는 서버에서 발생하며 클라이언트가 수행 한 인증서 유효성 검사와 관련이 없어야합니다. –

+0

패킷 캡처 나 ssldump를 보면 클라이언트 측 핸드 쉐이크가 클라이언트 hello 버전, 확장 등 두 서버에서 어떻게 다른지 알 수 있습니다. javax.net.debug = ALL은 훨씬 더 눈을 멀게합니다 방법. 가능성이있는 후보자는 SSLv3 또는 TLSv1.2를 사용하여 하나의 클라이언트 또는 다른 사람이 될 수 있으며 문제가 발생하는 경우 – covener

답변

1

수신 치명적인 경고 : handshake_failure는

이 클라이언트 인증서, 아니 공유 암호, 잘못된 프로토콜 버전 등 누락처럼 무엇이든 될 수 있지만 일반적으로 인증서 유효성 검사와는 아무 상관이있다.

가능한 이유의 수를 줄이려면 다른 고객에게 확인하고 SSLLabs 등에 확인하십시오. 디버깅을 시도 할 수있는 단계 및 다른 사용자의 도움이 필요할 경우 수집해야하는 정보는 http://noxxi.de/howto/ssl-debugging.html#aid_external_debugging을 참조하십시오. 더 많은 정보가 있으면 여기에 게시하여 문제 해결 방법을 찾을 수 있습니다. 문제의 새로운 정보를 기반으로

편집 : 당신은 디버그 메시지에서 볼 수있는 SSL 3.0을 사용하는

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

. SSL 3.0은 POODLE로 인해 대부분의 주요 사이트에서 차단됩니다. 이미 TLS1.x를 사용한다고 주장하는 동안이 정보는 디버깅 정보에 따라 다르므로 설치를 다시 확인해야합니다.

+0

제공된 링크를 사용하여 구성을 검토하겠습니다. 감사합니다. –

+0

이미 트러스트 스토어의 엔드 포인트에서 인증서를 추가 했습니까? –

+0

편집 참조 : 서버에서 거부 된 SSL 3.0을 사용 중입니다. –

0

일반적으로 Websphere에서는 통신하려는 서버의 인증서를 가져와야합니다. 만약 당신이 손으로 직접 시도해 본다면 아마도 사슬에서 적합한 인증서를 가져 오지 않을 것이므로 관리 콘솔에서 "포트에서 검색"을 사용하십시오.

또 다른 옵션은 Poodle 문제로 인해 Paypal이 SSL을 죽이는 것입니다. :) 이 경우 관리 콘솔의 보안 메뉴에서 보안 수준을 TLS로 올리십시오.

+0

감사합니다. @ Raul Lapeira Herrero. 보안 수준은 SSL_TLS에서 이미 설정되어 있으므로 두 가지를 모두 처리 할 수 ​​있어야합니다. 조사를 계속하겠습니다. 그레 시아! ;-) –

0

추적 결과 원격 서버에서 핸드 셰이크 실패를 수신 한 것으로 나타납니다. 귀하의 서버가 클라이언트 안녕 메시지를 보냈다는 것을 알 수 있습니다. 따라서 서버 안녕 메시지로 응답을 보게 될 것입니다. 대신 연결이 갑자기 다른 쪽 끝에서 종료되었습니다. 이러한 경우에는 먼 쪽에서 누군가가 한 번씩이 연결이 실패한 이유를 알아야합니다. 그렇지 않으면, 당신은 정말로 어둠 속에서 일하고 있으며, 당신은 여러 가지 일을 시도 할 수 있습니다.

그러나 나는 한 가지 다른 점은 TLSv1 프로토콜을 사용하고있는 것처럼 보이지만 SSLv3 프로토콜을 사용하고 있다는 것입니다.페이팔 (Paypal)과 같은 엔티티는 아마도 FIPS와 호환된다고 가정 할 것입니다. 즉, SSL 프로토콜을 사용하지 않고 TLS 만 준수한다는 것을 의미합니다.