使用与Kimono Labs的Authorize Bearer标头进行GET请求的SSL中的例外情况

时间:2015-02-12 05:02:08

标签: java android ssl ssl-certificate http-get

我正在开发一个移动应用程序,它涉及通过Kimono Labs从JSON对象解析数据。在访问和服实验室的API时,我遇到SSL和证书问题。

根据和服实验室的说法,调用API需要在通话时设置标题“授权:承载”标题。

  

获取请求   使用GET请求调用auth API就像调用任何和服api一样,但您还需要在Authentication请求头中传递安全令牌,如下所示:Authorization:Bearer {YOUR_SECURE_TOKEN}

我正在使用以下代码来获取InputStream

HttpUriRequest request = new HttpGet(apiURL);
request.addHeader("authorization", "Bearer " + securityToken);
HttpClient httpclient = new DefaultHttpClient();
InputStream is = httpclient.execute(request).getEntity().getContent();

执行此代码会给我一个例外:javax.net.ssl.SSLPeerUnverifiedException:没有对等证书

或者我尝试使用以下代码实现:

URL url = new URL(apiURL);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestProperty("Authorization", "Bearer " + securityToken);
urlConnection.setRequestMethod("GET");     urlConnection.setConnectTimeout(activity.getResources().getInteger(R.integer.internet_timeout)); urlConnection.setReadTimeout(activity.getResources().getInteger(R.integer.internet_timeout));
InputStream inputStream = urlConnection.getInputStream();

使用此代码,我遇到异常javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。

有什么想法吗?

我能够通过允许所有通过CustomTrustManager和CustomAllVerifier的证书为所有尝试返回true来“破解”解决它,但是听说这是完全不安全的,不建议用于生产。在我的情况下这是真的吗?

提前谢谢。

2 个答案:

答案 0 :(得分:0)

我遇到了与使用和服作为api的node.js构建完全相同的问题。问题是Mozilla不信任中间签名证书,ergo nodejs抛出叶子错误。

我通过执行以下操作解决了这个问题,找到正在使用的证书,下载pem并将其添加到您的根CA并在执行和服请求之前,它比禁用更安全了TLS / SSL安全检查。

答案 1 :(得分:0)

只是抬头!原来这是kimonolabs'服务器