我在Google Play商店上传的Android Build上收到安全警报。
"您的应用正在使用与Apache HTTP客户端的X509TrustManager接口的不安全实现,从而导致安全漏洞。有关详细信息,请参阅此Google帮助中心文章,其中包括修复漏洞的截止日期。"
我尝试通过实施以下代码并更新我的构建
来修复它public class MySSLSocketFactory extends SSLSocketFactory {
SSLContext sslContext = SSLContext.getInstance("TLS");
public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException, UnrecoverableKeyException {
super(truststore);
TrustManager tm = new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
};
sslContext.init(null, new TrustManager[] { tm }, null);
}
@Override
public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException {
return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
}
@Override
public Socket createSocket() throws IOException {
return sslContext.getSocketFactory().createSocket();
}
}
但我仍然得到安全警报。
还有一个问题,我不想一次又一次地更新我的实时应用程序以删除此安全警报。有没有办法可以上传我的版本,并且可以检查更改是否完美,并且可以使用相同的应用程序。
更新:我还在checkServerTrusted()
中添加以下行try {
chain[0].checkValidity();
} catch (CertificateExpiredException e) {
Logger.e(TAG, "CertificateExpiredException");
throw new CertificateException("CertificateExpiredException");
} catch (CertificateNotYetValidException e) {
Logger.e(TAG, "CertificateNotYetValidException");
throw new CertificateException("CertificateNotYetValidException");
}
答案 0 :(得分:0)
如果您想检查您的应用是否已修复,可以将其上传为定时发布。
如果您的新版本没有修复上述错误,系统会通知您。