Lar*_*ars 18 https android x509certificate
我从这边使用SSL Socket和Trustmanager 自签名SSL
但我不断收到以下错误:
09-28 19:52:41.942:WARN/System.err(10101):javax.net.ssl.SSLHandshakeException:org.bouncycastle.jce.exception.ExtCertPathValidatorException:无法验证证书签名.
怎么了?我已经在stackoverflow上检查了不同的帖子,但我似乎无法让它工作.
我的代码:
SchemeRegistry schemeRegistry = new SchemeRegistry();
// http scheme
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
// https scheme
schemeRegistry.register(new Scheme("https", new EasySSLSocketFactory(), 443));
params = new BasicHttpParams();
params.setParameter(ConnManagerPNames.MAX_TOTAL_CONNECTIONS, 1);
params.setParameter(ConnManagerPNames.MAX_CONNECTIONS_PER_ROUTE, new ConnPerRouteBean(1));
params.setParameter(HttpProtocolParams.USE_EXPECT_CONTINUE, false);
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, "utf8");
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(new AuthScope("www.example.com", AuthScope.ANY_PORT),
new UsernamePasswordCredentials("user", "password"));
clientConnectionManager = new ThreadSafeClientConnManager(params, schemeRegistry);
context = new BasicHttpContext();
context.setAttribute("http.auth.credentials-provider", credentialsProvider);
DefaultHttpClient client = new DefaultHttpClient(clientConnectionManager, params);
HttpGet get = new HttpGet("https://www.example.com/web/restricted/form/formelement=512663");
HttpResponse response = client.execute(get, context);
Log.w("Response ","Status line : "+ response.toString());
Run Code Online (Sandbox Code Playgroud)
Ada*_*hns 31
正如Michael Levy所提到的那样,我之所以遇到这个例外的原因是我已经让我的Android Emulator开了几天而且时钟已经远远不同步了.一旦我重新启动模拟器,异常就消失了.
最有可能的是服务器返回的证书链包含您不信任的权威机构。(意味着:您的设备不知道授权证书是可信的)解决方案:仔细检查来自 HTTPS 网站的证书,并将相应的授权添加到您的信任库中 - 但这部分似乎很棘手
归档时间: |
|
查看次数: |
41217 次 |
最近记录: |