盐城阿里云代理商: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

相关推荐

  • 阿里云企业邮箱:如何生成邮件往来关系图谱?

    如何生成阿里云企业邮箱的邮件往来关系图谱? 随着信息化时代的发展,企业在日常运营中不可避免地依赖电子邮件进行沟通与协作。对于企业来说,如何有效管理邮件沟通内容、提升工作效率、分析邮件之间的关系,成为了一项重要的课题。阿里云企业邮箱不仅提供了高效、安全、智能的邮件服务,还能通过邮件往来关系图谱,帮助企业了解内部邮件沟通的模式、提升团队协作效果。本文将介绍如何生…

    5天前
    1400
  • 智慧消防物联网云平台哪个靠谱

    智慧消防云平台哪个比较好? 我们公司合作的是中消云, 拥有十多年消防领域研发优势,非常不错 国内做智慧消防做的比较好的有哪些? 中消云物联网,做智慧消防的,北京的,还有几家南京的公司,在搜索引擎找就可以了 请问智慧消防加盟哪个平台较好? 中消云是不错的,他们是专做智慧消防的公司,对合作伙伴还有很多扶持。 国内智慧消防前十的品牌都有哪些啊? 智慧消防比较厉害的…

    2023年8月25日
    14900
  • 如何调用阿里云语音合成参数信息

    要调用阿里云语音合成的参数信息,需要按照以下步骤进行操作: 在阿里云控制台中创建一个语音合成实例。在阿里云官网搜索“语音合成”,进入阿里云语音合成产品页,按照页面上的指引创建一个语音合成实例。创建完成后,会得到一个实例ID。 安装阿里云语音合成SDK。阿里云语音合成SDK支持多种编程语言,可以根据自己的需求选择合适的SDK版本进行安装,详细安装步骤可以参考阿…

    2023年10月24日
    17000
  • 阿里云语音引擎配置怎么设置

    如何修改语音识别引擎中的训练文档 貌似没有那么强大的东西吧 打开word程序 再打开工具菜单下的语音命令,中安装和配置语音识别 回到顶端 如何训练语音识别引擎 在训练语音识别引擎时, 如何修改阿里云esc配置sshd 小鸟云服务器niaoyun实例创建好之后,您可以使用以下任意一种方式登录服务器:远程桌面连接(MicrosoftTerminalService…

    2023年8月28日
    15700
  • 济宁阿里云代理商:android添加网络

    济宁阿里云代理商:Android 添加网络 引言 Android作为全球最流行的移动操作系统之一,拥有庞大的用户群体和广泛的应用场景。在开发Android应用程序时,添加网络功能是不可或缺的一部分。本文将介绍如何通过阿里云提供的服务来为Android应用程序添加网络功能,并探讨阿里云在这方面的优势和好用之处。 背景 随着互联网的快速发展,移动应用程序的网络需…

    2024年1月18日
    15000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

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

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