我刚刚在我的 android 应用程序中集成了 firebase 性能监控。
在我们的基础架构中,有时我们需要通过 https 连接到本地开发机器,我使用这段代码来避免在连接到本地机器时检查 ssl 证书
private SSLSocketFactory getFakeSSLContext() {
final SSLContext sslContext;
final TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
// Not implemented
}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {
// Not implemented
}
}};
try {
sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, trustAllCerts, new java.security.SecureRandom());
// Create all-trusting host name verifier
final HostnameVerifier allHostsValid = (hostname, session) -> true;
// Install the all-trusting host verifier
HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
return sslContext.getSocketFactory();
} catch (KeyManagementException | NoSuchAlgorithmException e) {
LogHelper.e("error creating fake ssl context", e);
}
return null;
}
显然我们不会在生产中使用它:)
问题是,自从我引入了firebase性能监控插件,这不再起作用了,我得到了这个错误
正如您在突出显示的 2 行中看到的那样,它看起来像是在 HttpsUrlConnection 实现中做了一些事情,我认为这是问题的原因。我尝试FirebasePerformance.getInstance().setPerformanceCollectionEnabled(false);
在我的应用程序的 onCreate 方法上使用,但问题仍然存在。如何在安装了 firebase 性能插件的情况下建立不受信任的 https 连接?
谢谢你