• Okhttp https


    1. 绕过CA证书,不建议使用

    private void ingoreCA() throws NoSuchAlgorithmException, KeyManagementException {
    SSLContext sc = SSLContext.getInstance("SSL");
    sc.init(null, new TrustManager[]{new X509TrustManager() {
    @Override
    public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

    }

    @Override
    public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {

    }

    @Override
    public X509Certificate[] getAcceptedIssuers() {
    return null;
    }
    }}, new SecureRandom());
    okHttpClient.setSslSocketFactory(sc.getSocketFactory());
    okHttpClient.setHostnameVerifier(new HostnameVerifier() {
    @Override
    public boolean verify(String hostname, SSLSession session) {
    return true;
    }
    });
    }

    2. 设置CA

    private SSLSocketFactory getSSLSocketFactory()
    throws CertificateException, KeyStoreException, IOException,
    NoSuchAlgorithmException, KeyManagementException {
    CertificateFactory cf = CertificateFactory.getInstance("X.509");
    InputStream caInput = ZhislandApplication.APP_CONTEXT.getResources().openRawResource(R.raw.api); // your certificate file
    Certificate ca = cf.generateCertificate(caInput);
    caInput.close();
    KeyStore keyStore = KeyStore.getInstance("BKS");
    keyStore.load(null, null);
    keyStore.setCertificateEntry("ca", ca);
    String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
    TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
    tmf.init(keyStore);
    TrustManager[] wrappedTrustManagers = getWrappedTrustManagers(tmf.getTrustManagers());
    SSLContext sslContext = SSLContext.getInstance("TLS");
    sslContext.init(null, wrappedTrustManagers, null);
    return sslContext.getSocketFactory();
    }

    private TrustManager[] getWrappedTrustManagers(TrustManager[] trustManagers) {
    final X509TrustManager originalTrustManager = (X509TrustManager) trustManagers[0];
    return new TrustManager[]{
    new X509TrustManager() {
    public X509Certificate[] getAcceptedIssuers() {
    return originalTrustManager.getAcceptedIssuers();
    }

    public void checkClientTrusted(X509Certificate[] certs, String authType) {
    try {
    originalTrustManager.checkClientTrusted(certs, authType);
    } catch (CertificateException ignored) {
    }
    }

    public void checkServerTrusted(X509Certificate[] certs, String authType) {
    try {
    originalTrustManager.checkServerTrusted(certs, authType);
    } catch (CertificateException ignored) {
    }
    }
    }
    };
    }
  • 相关阅读:
    遗传算法求解旅行商(TSP)问题 -- python
    office 小技巧
    oracle创建dblink
    c# equals与==的区别
    两人之间的一些参数
    .net 枚举(Enum)使用总结
    SQL Server 日期的加减函数: DATEDIFF DATEADD
    jquery操作select
    AS3帮助手册
    Razor和HtmlHelper的使用意义
  • 原文地址:https://www.cnblogs.com/lianghui66/p/5567432.html
Copyright © 2020-2023  润新知