谷歌建议我在我的安卓应用程序中有一个不安全的界面X509TrustManager实现,需要修改我的代码如下:
若要正确处理SSL证书验证,请更改自定义X509TrustManager接口的X509TrustManager方法中的代码,以便在服务器提供的证书不符合您的期望时引发CertificateException或IllegalArgumentException。对于技术问题,您可以张贴到Stack溢出,并使用标签“android”和“TrustManager”。
如何修改以下代码以解决上述问题?
public EasySSLSocketFactory(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;
}
};
mContext.init(null, new TrustManager[] { tm }, null);
}发布于 2016-02-23 11:15:54
我使用以下代码解决了这个问题:
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
try {
chain[0].checkValidity();
} catch (Exception e) {
throw new CertificateException("Certificate not valid or trusted.");
}
}发布于 2016-07-14 16:01:20
如果您从正在使用的外部库中遇到这种情况,请检查appache library from是否是造成这种情况的原因。
对我来说,apache库导致了错误:我使用的是不推荐的类- MultipartEntity。这个类使用SSLContextBuilder,它使用TrustManagerDelegate。TrustManagerDelegate实现了X509TrustManager,在将应用程序上传到google商店时,这会导致“TrustManager的不安全实现”错误。
解决方案是:使用MultipartEntity类代替不推荐的MultipartEntityBuilder类。
例如:
MultipartEntity httpMultipart = new MultipartEntity();
String contentType = httpMultipart.getContentType().getValue();将改为:
MultipartEntityBuilder httpMultipart = new MultipartEntityBuilder();
String contentType = httpMultipart.build().getContentType().getValue();发布于 2020-07-29 07:14:56
添加升级版的OKttps为我在Android 10中崩溃
implementation 'com.squareup.okhttp3:okhttp:4.8.0'https://stackoverflow.com/questions/35530558
复制相似问题