public OkHttpClientBuilder certificate()

in src/main/java/com/aliyun/tea/okhttp/OkHttpClientBuilder.java [118:164]


    public OkHttpClientBuilder certificate(Map<String, Object> map) {
        try {
            if (null != map.get("ignoreSSL") && Boolean.parseBoolean(String.valueOf(map.get("ignoreSSL")))) {
                X509TrustManager compositeX509TrustManager = new X509TrustManagerImp(true);
                SSLContext sslContext = SSLContext.getInstance("TLS");
                sslContext.init(null, new TrustManager[]{compositeX509TrustManager}, new java.security.SecureRandom());
                this.builder.sslSocketFactory(sslContext.getSocketFactory(), compositeX509TrustManager).
                        hostnameVerifier(DefaultHostnameVerifier.getInstance(true));
            } else if (!StringUtils.isEmpty(map.get("ca"))) {
                SSLContext sslContext = SSLContext.getInstance("TLS");
                KeyManagerFactory keyManagerFactory = null;
                if (!StringUtils.isEmpty(map.get("key")) && !StringUtils.isEmpty(map.get("cert"))) {
                    KeyStore keyStore = KeyStore.getInstance(KeyStore.getDefaultType());
                    String cert = String.valueOf(map.get("cert"));
                    try (InputStream is = new ByteArrayInputStream(cert.getBytes(charset))) {
                        keyStore.load(is, String.valueOf(map.get("key")).toCharArray());
                    }
                    keyManagerFactory = KeyManagerFactory.getInstance("X.509");
                    keyManagerFactory.init(keyStore, String.valueOf(map.get("key")).toCharArray());
                }
                KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
                trustStore.load(null);
                String ca = String.valueOf(map.get("ca"));
                List<String> pemCerts = splitPemCertificates(ca);
                CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
                int certIndex = 0;
                // Process each certificate and add to the keystore
                for (String pemCert : pemCerts) {
                    try (InputStream is = new ByteArrayInputStream(pemCert.getBytes(charset))) {
                        Certificate certificate = certFactory.generateCertificate(is);
                        trustStore.setCertificateEntry("ca" + certIndex++, certificate);
                    }
                }
                TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
                trustManagerFactory.init(trustStore);
                X509TrustManager trustManager = (X509TrustManager) trustManagerFactory.getTrustManagers()[0];
                sslContext.init(keyManagerFactory != null ? keyManagerFactory.getKeyManagers() : null
                        , trustManagerFactory.getTrustManagers()
                        , new SecureRandom());
                this.builder.sslSocketFactory(sslContext.getSocketFactory(), trustManager);
            }
            return this;
        } catch (Exception e) {
            throw new TeaException(e.getMessage(), e);
        }

    }