无法验证证书签名?

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开了几天而且时钟已经远远不同步了.一旦我重新启动模拟器,异常就消失了.

  • 我在没有SIM卡的物理Galaxy Note设备上遇到了类似的问题。有趣的是,内置的浏览器运行良好。将时间同步设置更新为自动后,我不再遇到任何错误。 (2认同)
  • 是的,我遇到了证书握手问题,并且发现我的设备时间设置不正确。它设置为过去发生的事情,并且SSL握手失败。 (2认同)

Kon*_*uda 2

最有可能的是服务器返回的证书链包含您不信任的权威机构。(意味着:您的设备不知道授权证书是可信的)解决方案:仔细检查来自 HTTPS 网站的证书,并将相应的授权添加到您的信任库中 - 但这部分似乎很棘手

(这里有一些解释: http://groups.google.com/group/android-security-discuss/browse_thread/thread/0bf726de4f5275a3/391b900631d7f358