首页 文章

如何避免使用AuthorizeNet连接的java.security.cert.CertificateException?

提问于
浏览
0

我需要与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 回答

  • 0

    我使用旧的URL进行连接,这给出了错误 . 新的真实URL是https://secure.authorize.net/gateway/transact.dll . 然后需要从AuthorizeNet获取LoginID和事务密钥 . 如果您是商家,您可以获得允许您测试交易的LoginID / TransactionKey

  • 0

    通过使用这些额外参数运行客户端来解决它: -Djavax.net.debug=ssl,handshake Ref:Paypal SSLHandshakeException

    在另一个案例中,下面的代码段帮助我解决了这个问题:

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

相关问题