我正在开发一个移动应用程序,它涉及通过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来“破解”解决它,但是听说这是完全不安全的,不建议用于生产。在我的情况下这是真的吗?
提前谢谢。
答案 0 :(得分:0)
我遇到了与使用和服作为api的node.js构建完全相同的问题。问题是Mozilla不信任中间签名证书,ergo nodejs抛出叶子错误。
我通过执行以下操作解决了这个问题,找到正在使用的证书,下载pem并将其添加到您的根CA并在执行和服请求之前,它比禁用更安全了TLS / SSL安全检查。
答案 1 :(得分:0)
只是抬头!原来这是kimonolabs'服务器