我需要与AuthorizeNet联系,但我得到:
javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:找不到与subject.authorize.net匹配的主题备用DNS名称(请参阅下面的错误跟踪) .
我使用的URL是https://certification.authorize.net/gateway/transact.dll
我的AuthorizeNet类中的连接代码如下:
URL url = new URL(“https://certification.authorize.net/gateway/transact.dll”);
URLConnection connection = url.openConnection();
connection.setDoOutput(true);
connection.setUseCaches(false);
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
DataOutputStream out = new DataOutputStream(connection.getOutputStream());
错误跟踪如下:
2015-04-06 13:00:52,592 [ajp-bio-8009-exec-1]错误com.aaa.AuthorizeNet:541 - javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:无主题备用DNS名称匹配certification.authorize.net找到 . at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1884)at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:276) )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)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)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:563)at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDel egateHttpsURLConnection.java:185)at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:1091)at sun.net.www.protocol.https.HttpsURLConnectionImpl.getOutputStream(HttpsURLConnectionImpl.java:250)at com .aaa.AuthorizeNet.startNetConnection(AuthorizeNet.java:533)
2 回答
我使用旧的URL进行连接,这给出了错误 . 新的真实URL是https://secure.authorize.net/gateway/transact.dll . 然后需要从AuthorizeNet获取LoginID和事务密钥 . 如果您是商家,您可以获得允许您测试交易的LoginID / TransactionKey
通过使用这些额外参数运行客户端来解决它:
-Djavax.net.debug=ssl,handshake
Ref:Paypal SSLHandshakeException在另一个案例中,下面的代码段帮助我解决了这个问题: