2013-12-19 3 views
0

페이팔 자동 게시를 구현할 예정입니다. 이것은 한 번에 작동했지만 지금은 문제가있는 것으로 보입니다. 나는 점점 오전 오류 :PayPal SSLHandshakeException

javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative DNS name matching www.sandbox.paypal.com found. 
     at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) 
     at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1886) 
     at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276) 
     at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:270) 
     at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1341) 
     at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:153) 
     at sun.security.ssl.Handshaker.processLoop(Handshaker.java:868) 
     at sun.security.ssl.Handshaker.process_record(Handshaker.java:804) 
     at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1016) 
     at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1312) 
     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1339) 
     at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1323) 
     at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:515) 
     at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) 
     at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1090) 
     at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250) 
     at com.aceware.sm.servlets.PaypalServlet.doPost(PaypalServlet.java:165) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
     at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
     at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008) 
     at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
     at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
     at java.lang.Thread.run(Thread.java:724) 
Caused by: java.security.cert.CertificateException: No subject alternative DNS name matching www.sandbox.paypal.com found. 
내가 paypals 사이트 전원 코드를 사용하고

이가 악수 나는이 찾을

// Take the request and get the query string 
    // Read post from PayPal system and add 'cmd' 
    Enumeration en = request.getParameterNames(); 
    String str = "cmd=_notify-validate"; 
    while (en.hasMoreElements()) { 
     String paramName = (String) en.nextElement(); 
     String paramValue = request.getParameter(paramName); 
     str = str + "&" + paramName + "=" + URLEncoder.encode(paramValue, "UTF-8"); 
    } 

    String gateway = "https://www.sandbox.paypal.com/cgi-bin/webscr"; 

    // Post back vars to paypal to validate this transaction 
    URL u = new URL(gateway); 
    URLConnection uc = u.openConnection(); 
    uc.setDoOutput(true); 
    uc.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
    try { 
     PrintWriter pw = new PrintWriter(uc.getOutputStream()); 
     pw.println(str); 
     pw.close(); 
    } catch (IOException ex) { 
     Logger.getLogger(PaypalServlet.class.getName()).log(Level.SEVERE, null, ex); 
    } 
+1

'www.'없이 사용해보십시오. 그래도 문제가 해결되지 않으면 -Djavax.net.debug = ssl을 사용하여 클라이언트를 실행하고 핸드 셰이크를 작성한 다음 결과를 질문에 편집하십시오. – EJP

+0

예, 실제로이 문제가 해결되었습니다. – Sixthpoint

답변

0

하나의 솔루션에 대한 제안은 다음과 같습니다

urlCon.setHostnameVerifier(new HostnameVerifier() { 
    @Override 
    public boolean verify(String hostname, SSLSession session){ 
     return true; 
    } 
}); 

하는 경우 작동하지 않으면 URLConnection 대신 HttpsURLConnection을 사용해보십시오.

관련 문제