【问题标题】:javax.net.ssl.SSLPeerUnverifiedException: Hostname 192.168.1.2 not verifiedjavax.net.ssl.SSLPeerUnverifiedException:主机名 192.168.1.2 未验证
【发布时间】:2018-05-24 09:01:39
【问题描述】:

我目前正在学习 Android。对于作业,我需要使用自签名证书和 xampp 服务器创建一个通过 https 请求 json 的应用程序。

我已经使用 apache 的工具 makecert 创建了证书,添加到 android 并进行了设置,以便它能够识别但是我不断收到这个烦人的错误

com.android.volley.NoConnectionError: javax.net.ssl.SSLPeerUnverifiedException: Hostname 192.168.1.2 not verified:
                                                                             certificate: sha1/g6vc6lpQuz/43pvUpMYogNNiU2o=
                                                                             DN: CN=192.168.1.2/*,OU=Adi,O=Adi,L=Oradea,ST=Bihor,C=RO
                                                                             subjectAltNames: []

我已经成功识别出这段代码

            private HostnameVerifier getHostnameVerifier() {
            return new HostnameVerifier() {
                @Override
                public boolean verify(String hostname, SSLSession session) {
                    //return true;
                    HostnameVerifier hv = HttpsURLConnection.getDefaultHostnameVerifier();
                    return hv.verify("192.168.1.2/*", session);
                }
            };
        }

但我不知道如何解决它。我在这里查看了其他线程,将其设置为始终返回 true 的解决方案确实有效,但实际上并不可接受。

我还尝试使用 CN 192.168.1.2/* 创建证书,因为我正在使用 xampps htdocs 文件夹中的多个 json 文件,但仍然没有

我还尝试使用 java keytool 创建配对密钥并将文件导出为 crt 和密钥格式,但它导致 apache 在启动时崩溃

编辑:我注意到的一件事是,无论我在证书中添加什么 CN,它总是将主机名读取为 192.168.1.2

【问题讨论】:

    标签: android https hostname


    【解决方案1】:

    检查您的证书是否包含 subjectAltName。 如果没有,您必须在 openssl.cnf 文件中将您的 IP 附加到 subjectAltName。 查看this链接了解更多信息。

    该示例将 DNS 添加为 subjectAltName,您可以将 IP 添加为

    subjectAltName = @alt_names
    [alt_names]
    IP.1 = 192.168.1.1
    IP.2 = 192.168.1.2
    

    【讨论】:

      猜你喜欢
      • 2015-08-25
      • 2019-01-20
      • 2021-09-19
      • 2015-11-02
      • 2018-07-18
      • 2020-11-15
      • 2013-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多