android - 无法在 CouchbaseLiteHttpClientFactory Android 中添加 SSL 证书

标签 android ssl couchbase-lite

我的 Android 应用程序有 Couch Base Lite Replication。使用早期版本我能够添加 SSL 证书和同步,但是当我更新到版本 1.3.1 时,这些类已被弃用,现在我无法添加证书。有什么帮助吗?

最佳答案

找到解决方案

CertificateFactory cf;
            try {
                cf = CertificateFactory.getInstance("X.509");

                AssetManager assManager = Utils.context.getAssets();
                InputStream is = null;
                is = assManager.open("certificate.cer");
                InputStream caInput = new BufferedInputStream(is);
                Certificate ca;
                try {
                    ca = cf.generateCertificate(caInput);

                    System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN());
                } finally {
                    caInput.close();
                }

                // Create a KeyStore containing our trusted CAs
                String keyStoreType = KeyStore.getDefaultType();
                KeyStore keyStore = KeyStore.getInstance(keyStoreType);
                keyStore.load(null, null);
                keyStore.setCertificateEntry("ca", ca);

                // Create a TrustManager that trusts the CAs in our KeyStore
                String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
                TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
                tmf.init(keyStore);

                // create CouchbaseLiteHttpClientFactory
               CouchbaseLiteHttpClientFactory cblHttpClientfactory = new CouchbaseLiteHttpClientFactory
                        (database.getPersistentCookieStore());

                // Create an SSLContext that uses our TrustManager
                SSLContext context = SSLContext.getInstance("TLS");
                context.init(null, tmf.getTrustManagers(), null);
                cblHttpClientfactory.setSSLSocketFactory(context.getSocketFactory());
                manager.setDefaultHttpClientFactory(cblHttpClientfactory);

            } catch (CertificateException e) {
}

关于android - 无法在 CouchbaseLiteHttpClientFactory Android 中添加 SSL 证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43799343/

相关文章:

windows - 将 Windows 证书存储 CRL 导入 OpenSSL

ios - 是否可以通过某种方式将 IPV6 地址转换为 IPV4 地址,或者始终检索 IPV4 地址?

java - 将项目添加到 ListView 适配器中的特定列

android - <layout_gravity ="start"> 在 NavigationView 上不起作用?

类似 twitter 示例的 Android 操作栏

java - 是否可以从java代码制作.so库?

php - Laravel 5 SSL - 使用过时的密码学加密

PHP WebSocket SSL

android - 如何在 couchbase 同步网关中设置同步 URL 以连接到 couchbase 服务器

swift - 将属性存储在已删除的 couchbase 文档中