有问题,需要社区的帮助。
现在Google data protection中的更改在Google Developer Console中收到警告。 “安全警告 您的应用使用不安全的HostnameVerifier实现。 有关详细信息,包括解决漏洞的最后期限,请参阅Google帮助中的这篇文章 适用于APK版本3。为多个主机和自签名证书自定义HostNameVerifier
我之所以没有正确使用HostnameVerifier,是因为我们公司不能为每位购买我们产品的客户提供带有CA证书的签名 。 (如果他愿意,这取决于他的目的) 我们的产品包含一个安全的Web服务(Restful API)以与应用程序进行通信。 因此,对每一个安装有产生新的自签名证书,我应该通过应用程序接受,显然是最简单的解决办法是通过禁用 的HostnameVerifier:
private final static HostnameVerifier DO_NOT_VERIFY = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
与不信任所有主机:
private static void trustAllHosts() {
// Create a trust manager that does not validate certificate chains
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return new java.security.cert.X509Certificate[] {};
}
public void checkClientTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain,
String authType) throws CertificateException {
}
} };
// Install the all-trusting trust manager
try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, trustAllCerts, new java.security.SecureRandom());
HttpsURLConnection
.setDefaultSSLSocketFactory(sc.getSocketFactory());
} catch (Exception e) {
e.printStackTrace();
}
}
谁有类似的加密经验?我应该如何进一步处理我的案子?提前致谢!
感谢罗伯特的详细解答,我调查了一下。希望这对任何有同样问题的人都有帮助。 – Artiom