Android中Https通信实现_忽略证书校验

本文详细介绍了在Android中实现HTTPS通信时如何忽略证书校验,包括使用HttpURLConnection、OkHttp和Webview的信任所有证书设置。同时,文章强调了忽略证书校验可能带来的中间人攻击风险,并提供了相关代码示例和错误处理方法。
摘要由CSDN通过智能技术生成

客户端与服务端忽略证书校验即是在客户端的网络请求和webview中设置信任所有证书,然后在与服务端进行Https网络通信的时候,客户端不必进行证书校验也能进行网络通信,否则就会报证书不受信异常。
缺陷:容易受到中间人攻击。

概览

  • TrustManager和HostnameVerifier
  • HttpURLConnection信任所有证书
  • OkHttp信任所有证书
  • webview信任所有证书

X509TrustManagerHostnameVerifier

X509TrustManager用于实现SSL证书的安全校验,若使用不当,将导致APP对SSL证书不作校验,从而 黑客有了中间人攻击的可乘之机。开发者常见错误:

  • 自定义X509TrustManager,且不做任何校验逻辑,一般为空实现;

HostnameVerifier用于实现HTTPS通信中的域名安全校验,即验证当前连接的HTTPS站点的SSL证书中的域名是否等于站点本身的域名。开发者常见错误:

  • 自定义HostnameVerifier,且不做任何校验逻辑,一般为return true;
  • 使用Android系统中自带的不安全的HostnameVerifier,效果等同于不做任何校验逻辑:
    org.apache.http.conn.ssl.AllowAllHostnameVerifier
    org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER

工具类下载地址:https://download.csdn.net/download/u010982507/10880268

import java.security.SecureRandom;
import java.security.cert.X509Certificate;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

public class SSLSocketClient {
   

    //获取这个SSLSocketFactory
    public static SSLSocketFactory getSSLSocketFactory() {
   
        try {
   
            SSLContext sslContext = SSLContext.
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ruiurrui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值