javax.net.ssl.SSLHandshakeException:收到致命警报:仅在服务器中的handshake_failure

时间:2018-04-18 13:26:06

标签: java oracle ssl sslhandshakeexception

我正在尝试在Oracle Sql Developer中从Java发出HTTP GET请求。

在我的电脑上一切正常。

唯一不起作用的是,当我访问https子域时,它会出现System.setProperty ("javax.net.ssl.trustStore", "/path/jdk/jdk6/lib/security/cacerts.jks"); 错误(例如,如果我访问https://www.example.com它有效,但如果我访问https://subdomain.example.com它失败)

我当时做的是在Java缓存中添加证书,然后就可以了。

但是,当我在服务器上执行此操作时,要使用PL / SQL调用Java函数从SQL Developer执行此操作,它会失败,并且我对证书执行了同样的操作。

我不知道的是,如果你在sql developer的Java中引用cacerts,因为在我的机器中我必须引用它(-Djavax.net.ssl.keyStore = C:\ Oracle \ Middleware \ Oracle_Home \ oracle_common \ jdk \ jre \ lib \ security \ cacerts)

如果我在Java代码中执行此操作,则会一直出错:

new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        try {
                       if (error.networkResponse != null && error.networkResponse.data != null) {
                       String data = new String(error.networkResponse.data, "UTF-8");
                       int statusCode = error.networkResponse.statusCode; 
                       Log.e(LOG_TAG, "CustomRequest: Parsed Error Response = " + data);
                                }
                            } catch (Exception e) {
                               e.printStackTrace();
                         }
                    }
                }

我怎么知道它是否拿到证书?

我的机器:Java 1.7和1.8可以工作 服务器:Java 1.6不起作用

问候和感谢

1 个答案:

答案 0 :(得分:0)

这是Java 6的一个问题,因此在Java 7和Java 8中运行良好。