zoukankan      html  css  js  c++  java
  • 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) {
    }
    }
    }
    };
    }
  • 相关阅读:
    逆向获取博客园APP代码
    Cooperation.GTST团队第一周项目总结
    关于Cooperation.GTST
    个人博客:ccatom.com
    Jmeter初步使用三--使用jmeter自身录制脚本
    Jmeter初步使用二--使用jmeter做一个简单的性能测试
    Jmeter初步使用--Jmeter安装与使用
    测试悖论
    百万级数据量比对工作的一些整理
    性能测试流程
  • 原文地址:https://www.cnblogs.com/lianghui66/p/5567432.html
Copyright © 2011-2022 走看看