盐城阿里云代理商:android https请求证书过滤白名单

在Android中使用HTTPS请求时,如果我们的应用需要连接到信任的服务器,但该服务器的SSL证书并不能得到Android系统的信任,那么就需要在我们的应用中跳过SSL证书的验证流程,实现信任所有证书。

以下是一个跳过所有SSL证书验证的示例代码:

HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
DefaultHttpClient httpClient = new DefaultHttpClient();
SchemeRegistry registry = new SchemeRegistry();
SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
registry.register(new Scheme("https", socketFactory, 443));
SingleClientConnManager mgr = new SingleClientConnManager(httpClient.getParams(), registry);
DefaultHttpClient client = new DefaultHttpClient(mgr, httpClient.getParams());
// Set verifier     
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);

但是,这种方式存在一定的安全风险,因为它信任所有的SSL证书,包括伪造的证书。所以在生产环境中,并不推荐使用。

更好的做法是使用SSL证书白名单来对信任的服务器主机进行接受。具体步骤如下:

  1. 把服务器的公共证书以.cer格式保存在应用的asset目录中。
  2. 在代码中添加一个新的SSLSocketFactory,并使用.cer文件创建一个新的TrustManager。这个TrustManager只会信任.asset目录下的证书:

    SSLContext context = SSLContext.getInstance("TLS"); 
    CertificateFactory cf = CertificateFactory.getInstance("X.509"); 
    InputStream caInput = new BufferedInputStream(getAssets().open("yancheng.cer")); 
    Certificate ca = cf.generateCertificate(caInput); 
    KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType()); 
    keystore.load(null, null); 
    keystore.setCertificateEntry("ca", ca); 
    String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm(); 
    TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm); 
    tmf.init(keystore); 
    context.init(null, tmf.getTrustManagers(), null);
    SSLSocketFactory sockFact = context.getSocketFactory();
    client.setSSLSocketFactory(sockFact);
  3. 设置DefaultHttpClient使用这个新的SSLSocketFactory。

以上代码得到的client就可以用于执行https请求了,而且只信任.asset目录下的证书。мож以在请求的时候设置白名单。具体实现方式可能会因实际情况和业务需求有所不同,具体实现时需商量确定。

阿里云提供了一种白名单配置方式,可以过滤HTTPS请求证书。Android设备需要进行如下操作才能进行HTTPS请求:

盐城阿里云代理商:android https请求证书过滤白名单
  1. 创建您自己的自定义信任管理器类。您需要实现X509TrustManager接口,并在checkServerTrusted方法中添加自己的逻辑代码。此代码将会在每次HTTPS连接时被调用,因此您要添加的代码就是过滤证书的代码。
  2. 使用SocketFactory设置你的自定义信任管理器类。在创建HTTPS连接时,需要用到SSLSocketFactory。您可以创建自己的SSLSocketFactory,并把它设置为默认的SSLSocketFactory。
  3. 修改系统信任的证书库。默认的信任管理器会使用系统自带的证书库。为了让你的自定义信任管理器工作,您需要创建自己的证书库,并把它设置为系统默认的证书库。

关于让Android HTTPS请求过滤白名单代码示例代码如下:

HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {
    @Override
    public boolean verify(String hostname, SSLSession session) {
        return hostname.equals("your_whiteListed_domain.com");
    }
});

以上代码在创建HTTPS连接时会检查服务器的主机名是否在白名单上,只有在白名单上的主机名才会被信任。

最后一步就是在你的代码里使用你的自定义SSLSocketFactory创建HTTPS连接。现在,只有白名单上的证书才会被信任,其他一切都会被过滤掉。

发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/166896.html

(0)
luotuoemo的头像luotuoemo
上一篇 2024年3月15日 21:20
下一篇 2024年3月15日 21:26

相关推荐

  • 连云港阿里云代理商:按键精灵 数据库

    阿里云:您的可靠云计算合作伙伴 阿里云是全球领先的云计算服务提供商,为各行业客户提供高效、安全、稳定的云计算产品和服务。作为连云港地区的阿里云代理商,按键精灵数据库将为您详细介绍阿里云的优势。 1. 高可靠性与稳定性 阿里云在全球范围内拥有多个数据中心,通过分布式架构和冗余设计,确保数据的高可靠性和系统的稳定性。无论是单个服务器的故障还是自然灾害,阿里云都能…

    2024年1月31日
    81000
  • 咸阳阿里云企业邮箱代理商:阿里云企业邮箱怎么登录多个账号

    咸阳阿里云企业邮箱代理商:阿里云企业邮箱怎么登录多个账号 阿里云企业邮箱是一款基于云计算技术的企业级邮件服务,为企业提供高效、安全、可靠的电子邮件服务。在日常工作中,可能需要同时管理多个不同账号的企业邮箱,本文将介绍如何登录多个账号并探讨其优势。 如何登录多个账号 阿里云企业邮箱支持使用多种方式登录多个账号: 使用不同浏览器或浏览器的隐身模式登录不同账号。 …

    2024年2月19日
    63000
  • 腾讯云的短信服务

    腾讯云提供了短信服务,用于向用户发送短信通知、验证码等信息。腾讯云短信服务具有高可靠性、高效性和全面的覆盖,可以支持在全球范围内发送短信。通过腾讯云短信服务,用户可以进行手机号码验证、营销推广、用户通知等功能。 腾讯云短信服务的主要特点包括: 全球覆盖:支持向全球200多个国家和地区发送短信。 高效可靠:采用腾讯自研的海量短信并发能力,确保短信即时送达。 防…

    2023年9月11日
    71200
  • 嵊州阿里云企业邮箱代理商:阿里云搭建ip脚本教程

    嵊州阿里云企业邮箱代理商:阿里云搭建ip脚本教程 随着互联网时代的到来,企业对邮箱服务的需求越来越大。而阿里云企业邮箱正是满足了企业对高效、安全、稳定的邮件服务需求。作为嵊州阿里云企业邮箱代理商,我们深知如何利用阿里云企业邮箱的强大功能为客户提供更好的服务。 阿里云企业邮箱的优势: 稳定可靠:阿里云作为国内领先的云服务提供商,拥有强大的技术支持和稳定的服务器…

    2024年2月26日
    66600
  • 阿里云国际站注册教程:asp畜牧养殖有限公司网站源码

    好的,这是关于如何在阿里云国际站注册并使用asp畜牧养殖有限公司网站源码的教程: 一、注册阿里云国际站账号 访问阿里云国际站官网打开浏览器,访问阿里云国际站官网。 点击注册按钮在首页右上角找到“注册”按钮,点击进入注册页面。 填写注册信息根据提示填写注册信息,包括邮箱地址、密码、国家/地区等。确保填写的信息真实有效。 验证邮箱完成注册信息填写后,阿里云会发送…

    2024年7月9日
    1.3K180

发表回复

登录后才能评论

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
购买阿里云服务器请访问:https://www.4526.cn/