间歇性对等体未经过身份验证 - 在信任所有证书时

时间:2014-08-12 07:55:25

标签: ssl-certificate

还有一个神秘的“未经认证的同伴”列表。

我有一个使用4.2 lib的apache httpclient。我已明确设置为信任代码中的所有证书。 我有一个Tomcat服务器(JRE 1.7U45),在Linux上提供请求。服务器有自签名证书。

客户端代码:

private DefaultHttpClient getHttpsClient() {
    try {

        SSLContext sslContext = SSLContext.getInstance("SSL");
        final SSLSocketFactory sf;
        sslContext.init(null, new TrustManager[] { new X509TrustManager() {
            public X509Certificate[] getAcceptedIssuers() {
                return null;
            }

            public void checkClientTrusted(X509Certificate[] certs,
                    String authType) {
            }

            public void checkServerTrusted(X509Certificate[] certs,
                    String authType) {
            }
        } }, new SecureRandom());

        sf = new SSLSocketFactory(sslContext,
                SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
        SchemeRegistry registry = new SchemeRegistry();
        registry.register(new Scheme(url.getScheme(), url.getPort(), sf));

        ClientConnectionManager cm = new BasicClientConnectionManager(
                registry);

        return new MyDefaultHttpClient(cm);
    } catch (Exception e) {
        return new MyDefaultHttpClient();
    }
}

仅在“Solaris 5.10”(32位JRE 1.7.0u45)客户端与服务器通信时间歇性地看到此错误。
有时,同一个盒子上的请求会很好,但在其他时候,这只会抛出“Peer Not Authenticate” 我有其他类型的OS客户端,通过电话就可以了 是否有任何建议/指示来研究这个问题?

更多更新: 在服务器上运行ssl调试,我们间歇地看到它抛出 http-bio-8443-exec-7,处理异常:javax.net.ssl.SSLHandshakeException:无效的填充长度:105 http-bio-8443-exec-7,getSession()中的IOException:javax.net.ssl.SSLHandshakeException:无效的填充长度:105

1 个答案:

答案 0 :(得分:0)

这是因为JRE 1.7 http://bugs.java.com/bugdatabase/view_bug.do?bug_id=8013059

中存在以下错误

另外,apache httpclient 4.2增加了混乱,它掩盖了抛出的实际异常而不是抛出泛型" Peer未经过身份验证"

在tom-cat的server.xml中,对于connector元素,添加cipher属性和非DH密码列表 例如。 密码=" SSL_RSA_WITH_RC4_128_MD5,SSL_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,SSL_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA,SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA"

这解决了这个问题。 希望这对某人有用。

由于