Android 中的自签名证书

Self Signed Certificate in Android

我可以使用我使用 openssl 创建的自签名证书。

我在 HttpsURLConnection 中使用证书时遇到的唯一问题是 HostnameVerifier。

如果我提供自己的 HostnameVerifier,它总是 return true 像 :

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

urlConnection.setHostnameVerifier(hostnameVerifier);

有效。

有什么方法可以为我们自己的主机提供验证,而不是为所有主机提供验证?

HostnameVerifier 也适用于本地网络(本地 IP)

让我们假设您的服务器应用程序托管在一台服务器机器内,该机器具有服务器证书,例如,"Issued to""localhost"。然后,在 verify 方法中你可以验证 "localhost"

HostnameVerifier hostnameVerifier = new HostnameVerifier() {
    @Override
    public boolean verify(String hostname, SSLSession session) {
        HostnameVerifier hv =
            HttpsURLConnection.getDefaultHostnameVerifier();
        return hv.verify("localhost", session);
    }
};