3

我刚刚在我的 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 连接?

谢谢你

4

0 回答 0