发布curl,postman工作,但java给出了SSL错误

时间:2017-05-18 09:40:30

标签: java rest ssl curl

我发一个基本的帖子请求来获取Java中的令牌,我总是得到SSL证书握手错误:

        DefaultHttpClient httpclient = new DefaultHttpClient();
        String encoding = "YXBwLmJidmEuS3JlZGlsdafasdfasdf0bzpUeHZUUDJLVEdiKkhmbGNJeHNUDQ1d2tEU1dGak9TUk1zSVN3d2owYzJlJE9adU5rVmVZ";
        HttpPost httppost = new HttpPost("https://connect.bbva.com/token?grant_type=client_credentials");
        httppost.setHeader("Authorization", "Basic " + encoding);
        HttpResponse response = httpclient.execute(httppost);

我尝试过使用Advanced Rest Client和shell命令,它就像一个魅力:

curl -X POST -i  -H "Content-Type: application/json" -H "Authorization: Basic YXBwLmJidmEuS3JlZGl0bzpUeHZUUDJLVEdiKkhmbGNJeHNUNHU2RDE3MkFFa2R2QDQ1d2tEU1dGak9TUk1zSVN3d2owYzJlJE9adU5rVmVZ" https://connect.bbva.com/token?grant_type=client_credentials

我还使用正确的truststore选项检查了curl,我的默认java用来检查truststore是否没有问题,并且只有一个:

-cacerts=/usr/lib/jvm/java-8-oracle/jre/lib/security/cacerts

现在我已经在Java java.net.URLConnection库中使用了它来测试,但它不起作用。

我也用内容类型对其进行了测试,但无济于事:

("Content-Type", "application/json;charset=UTF-8");

我也在java7和java8,oracle上测试了这个。

我已经尝试了一切,我作为一个基本的,平庸的java开发人员可以拥有。

顺便说一句,如果有帮助,我的卷曲响应会带有以下标题:

HTTP/1.1 200 OK
Date: Thu, 18 May 2017 09:29:11 GMT
Server: Apache-Coyote/1.1
X-Frame-Options: DENY
Strict-Transport-Security: max-age=63072000; includeSubdomains; preload
Cache-Control: no-cache
Pragma: no-cache
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Content-Type: application/json;charset=UTF-8
Expires: 0
Pragma: no-cache
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
Content-Length: 751

我还使用以下方法检查了ssl-debug-logs:

System.setProperty("javax.net.debug", "all");

它使用正确的信任库。

1 个答案:

答案 0 :(得分:0)

我修改此错误只是将Java版本从java-oracle8更改为java-openjdk8