0

我们正在使用以下版本的差异库

Apache-HttpComponents-HttpCore = 4.1;
Apache-HttpComponents-HttpClient = 4.1.1;
JDK                            = 1.6_64;

并突然开始面临 SSLPeerUnverifiedException (HTTP Get failed for HTTPS with javax.net.ssl.SSLPeerUnverifiedException了解详细信息)。

我尝试了不同的方法,但我不知道为什么即使在接受所有证书后我们也无法连接到https://www.google.com(尽管如评论中所述,这可能会导致中间人攻击)。

谷歌是否开始期待客户提供证书?如果是,我们应该怎么做?

谢谢,

4

1 回答 1

0

谷歌是否开始期待客户提供证书?如果是,我们应该怎么做?

如果我理解正确并且 google 确实需要证书,那么您应该使用 cryptoprovider 并通过 stunnel 进行签名。

也许你的代码有问题?此设置对我有用

public HttpClient getNewHttpClient() {
    try {
        KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
        trustStore.load(null, null);

        SSLSocketFactory sf = new MySSLSocketFactory(trustStore);
        sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);

        HttpParams params = new BasicHttpParams();
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

        SchemeRegistry registry = new SchemeRegistry();
        registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
        registry.register(new Scheme("https", sf, 443));

        ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);

        return new DefaultHttpClient(ccm, params);
    } catch (Exception e) {
        return new DefaultHttpClient();
    }
}
于 2013-07-17T14:31:13.417 回答