代码之家  ›  专栏  ›  技术社区  ›  virsir

Android OKHttp SSLPeerUnverifiedException/SSLHandshakeException

  •  5
  • virsir  · 技术社区  · 7 年前

    例如,我连接了谷歌:( https://finance.google.com/finance?q=NASDAQ%3AAAPL )使用android okhttp客户端,但会引发错误:

    javax.net.ssl.SSLPeerUnverifiedException: Hostname www.google.com not verified:
            certificate: sha256/7ygD2cyU8sl30bjSfYs6WWBQ1IZVLiPNK04Tfzf5VPk=
            DN: CN=*.facebook.com,O=Facebook\, Inc.,L=Menlo Park,ST=California,C=US
            subjectAltNames: [*.facebook.com, *.xx.fbcdn.net, *.fbsbx.com, *.xz.fbcdn.net, *.facebook.net, *.xy.fbcdn.net, *.messenger.com, fb.com, *.fbcdn.net, *.fb.com, *.m.facebook.com, messenger.com, facebook.com]
    

    2天后,我

    javax.net.ssl.SSLPeerUnverifiedException: Hostname www.google.com not verified:
        certificate: sha256/H7hNBz7v4J3Nf2Mj+xzmfoq5xJRS8cXC0gZO+LO06eA=
        DN: CN=syndication.twitter.com,OU=Twitter Security,O=Twitter\, Inc.,L=San Francisco,ST=California,C=US
        subjectAltNames: [syndication.twitter.com, cdn.syndication.twitter.com, syndication-o.twitter.com, syndication.twimg.com, cdn.syndication.twimg.com, syndication-o.twimg.com]
        at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:316)
    

    我试过了

    builder.hostnameVerifier(new HostnameVerifier() {
                    @Override
                    public boolean verify(String hostname, SSLSession session) {
                        return true;
                    }
                });
    

    但运气不好。

    它还会引发如下异常:

    javax.net.ssl.SSLHandshakeException: Connection closed by peer at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method) at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:324) at okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:302)

    例外情况。

    这个连接以前可以工作,但最近几天,如果失败了,可能谷歌服务器最近更新了什么?我该怎么办?

    1 回复  |  直到 7 年前
        1
  •  2
  •   virsir    7 年前

    这似乎与我的代理有关。