【发布时间】:2017-07-12 08:27:48
【问题描述】:
我有一个问题,需要社区的帮助。现在,Google data protection 发生了变化,我在 Google Developer Console 中收到了警告。
安全警告 您的应用使用了不安全的 HostnameVerifier 实现。
有关更多信息,包括解决漏洞的截止日期,请参阅 Google 帮助中的这篇文章。 适用于 APK 版本 3。
我没有正确使用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();
}
}
谁有类似的加密经验?我应该如何进一步处理我的情况?提前致谢!
【问题讨论】:
标签: android security ssl ssl-certificate