如何修复 Android 应用程序中 X509TrustManager 警告的不安全实现



我在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();
    }
}

但我仍然收到安全警报。

还有一个问题,我不想一次又一次地更新我的实时应用程序以删除此安全警报。有什么方法可以上传我的构建并检查更改是否完美完成并且可以运行相同的应用程序。

更新:我还在检查服务器信任()中添加了以下行

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");
}
如果您想

检查您的应用是否已修复,可以将其作为定时发布方式上传。

如果您的新版本未修复上述错误,您将收到通知。

相关内容

  • 没有找到相关文章

最新更新