返回顶部
首页 > 资讯 > 精选 >Android APP之WebView校验SSL证书的方法
  • 672
分享到

Android APP之WebView校验SSL证书的方法

androidappwebview 2023-05-30 20:05:12 672人浏览 薄情痞子
摘要

Android系统的碎片化很严重,并且手机日期不正确、手机根证书异常、com.Google.android.WEBview BUG等各种原因,都会导致WebViewClient无法访问https站点。SSL错误的处理方式十分关键,如果处理不

Android系统的碎片化很严重,并且手机日期不正确、手机根证书异常、com.Google.android.WEBview BUG等各种原因,都会导致WebViewClient无法访问https站点。SSL错误的处理方式十分关键,如果处理不当,可能导致中间人攻击,黑客窃听数据,进而引发安全事故。

  严谨地处理onReceivedSslError尤为重要。请参考以下代码,原理是:如果webview报告SSL错误,程序将会对服务器证书进行强校验,如果服务器传入证书的指纹(sha256)与记录值一致,说明webview验证过程存在缺陷(如:手机日期错误、根证书被删除 等),忽略SSL错误;如果证书匹配失败,表明数据通信有问题,保留阻断。

  请先点击 这里,获取证书的指纹(sha256),然后调整代码中的MySSLCNSHA256数组变量。如果APP需要访问多张证书,请在代码中加入多个证书指纹数值。在测试代码时,请将手机日期设置在证书有效期之前,判断WebView是否能正常访问HttpS站点。

webview.setWebViewClient(new WebViewClient() {  @Override  public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {if (error.getPrimaryError() == SslError.SSL_DATE_INVALID // 日期不正确  || error.getPrimaryError() == SslError.SSL_EXPIRED // 日期不正确  || error.getPrimaryError() == SslError.SSL_INVALID // webview BUG  || error.getPrimaryError() == SslError.SSL_UNTRUSTED) { // 根证书丢失  if (chkMySSLCNCert(error.getCertificate())) {    handler.proceed(); // 如果证书一致,忽略错误  }}  }    private boolean chkMySSLCNCert(SslCertificate cert) {byte[] MySSLCNSHA256 = { 35, 76, 110, -121, -68, -104, -12, 84, 39, 119, -55,  101, 95, -8, -90, 9, 36, -108, 5, -57, 76, -98, -19, -73, 91, -37, 18,  64, 32, -41, 0, 109 }; //证书指纹  Bundle bundle = SslCertificate.saveState(cert);  byte[] bytes = bundle.getByteArray("x509-certificate");  if (bytes != null) {  try {      CertificateFactory cf = CertificateFactory.getInstance("X.509");       Certificate ca = cf.generateCertificate(new ByteArrayInputSteam(bytes));       MessageDigest sha256 = MessageDigest.getInstance("SHA-256");      byte[] Key = sha256.digest(((X509Certificate) ca).getEncoded());      return Arrays.equals(key, MySSLCNSHA256);  } catch (Exception Ex) {}  }  return false;  }}

--结束END--

本文标题: Android APP之WebView校验SSL证书的方法

本文链接: https://lsjlt.com/news/221264.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Android APP之WebView校验SSL证书的方法
    Android系统的碎片化很严重,并且手机日期不正确、手机根证书异常、com.google.android.webview BUG等各种原因,都会导致WebViewClient无法访问HTTPS站点。SSL错误的处理方式十分关键,如果处理不...
    99+
    2023-05-30
    android app webview
  • ReactNative自定义Android的SSL证书链校验
    目录前言HTTPS请求WebSocket前言 虽然这次分享的内容解决了本人的实际开发需求,但由于不是专职的Android开发工程师,涉及到的Android相关内容可能会存在错误或者写...
    99+
    2022-11-13
    React Native自定义Android SSL React Native Android SSL 证书链校验
  • Android webview手动校验https证书(by 星空武哥)
    有些时候由于Android系统的bug或者其他的原因,导致我们的webview不能验证通过我们的https证书,最明显的例子就是华为手机mate7升级到Android7.0后,手机有些网站打不开了,而更新了webview的补丁后就没问题了,...
    99+
    2023-05-30
    webview 手动校验 https证书
  • Pythonrequests的SSL证书验证方式
    目录requests的SSL证书验证1、对于HTTPS2、以上步骤后,会出现警告requests处理不信任的ssl证书不验证ssl证书requests的SSL证书验证 1、对于HTT...
    99+
    2024-04-02
  • Python requests的SSL证书验证方式是什么
    这篇文章主要讲解了“Python requests的SSL证书验证方式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python requests的SSL证书验证方...
    99+
    2023-06-29
  • SpringBoot添加SSL证书的方法
     一、先进行域名的购买 域名购买完毕,进行DNS的解析,我用的是阿里云的,服务器与域名都同时使用的阿里云 记录值这里填你的服务器的IP 地址 二、申请SSL证书 阿里云...
    99+
    2024-04-02
  • 无法验证服务器的ssl证书怎么解决
    无法验证服务器的 SSL 证书可能是由于以下原因:1. 证书过期:检查服务器证书的有效期,确保其没有过期。如果证书已过期,需要联系服...
    99+
    2023-08-16
    服务器 ssl证书
  • Tomcat下SSL证书的安装方法
      一、SSL证书导入:    为网站(比如站点:www.anxinssl.com)导入中级证书: keytool -import -alias intermediate -keystore c:\server.jks -chinasslc...
    99+
    2023-06-04
  • Android中访问证书有问题的SSL网页的方法
    PC上的浏览器会弹出证书错误的对话框,提示你是否要无视错误继续浏览。实际上在WebView里也可以这样做,以实现加载证书有问题的页面。 代码如下:WebView webvie...
    99+
    2022-06-06
    方法 ssl Android
  • 在Tomcat中配置SSL证书的方法
    这篇文章主要介绍了在Tomcat中配置SSL证书的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。我们假设已经在系统中安装了Tomcat服务器...
    99+
    2024-04-02
  • phpStudy环境安装SSL证书的方法
    这篇文章主要介绍了phpStudy环境安装SSL证书的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。修改apache目录下的httpd.conf配置文件#LoadModu...
    99+
    2023-06-07
  • ssl证书安装的方法是什么
    ssl证书安装的方法:1、打开IIS服务管理器,选择服务器证书;2、进去后,单击右则的导入;3、选择证书文件,输入文件夹中的密码内容...
    99+
    2023-02-14
    ssl证书安装 ssl证书 ssl
  • Node.js安装SSL证书的方法是什么
    本篇内容主要讲解“Node.js安装SSL证书的方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Node.js安装SSL证书的方法是什么”吧!安装SSL...
    99+
    2022-12-03
    node.js ssl
  • Nginx部署SSL证书的方法是什么
    这篇文章主要讲解了“Nginx部署SSL证书的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Nginx部署SSL证书的方法是什么”吧!简单介绍Nginx是目前最新的高性能Web服务...
    99+
    2023-07-04
  • 网站安装ssl证书的方法是什么
    网站安装SSL证书的方法一般如下:1、申请SSL证书首先需要在SSL证书的提供商处申请证书。在申请证书时需要提供一些相关信息,如域名...
    99+
    2023-03-19
    网站安装ssl证书 ssl证书 ssl
  • ssl免费证书申请的方法是什么
    现在有一些机构提供免费SSL证书,例如Let's Encrypt和Cloudflare等。以下是使用Let's En...
    99+
    2023-05-13
    ssl免费证书申请 ss证书
  • ssl证书版本更新的方法是什么
    SSL证书版本更新的方法一般有以下几种:1、自行更新证书如果您使用的是自签名的证书,可以通过自行更新证书的方式来更新证书版本。首先需...
    99+
    2023-05-13
    ssl证书版本 ssl证书
  • IIS绑定SSL证书的方法(图文详解)
    目录步骤一:下载SSL证书步骤二:导入证书步骤三:为网站绑定证书步骤一:下载SSL证书 将已签发的SSL证书(IIS)下载到服务器 1、进入后台,进入控制台,找到SSL证书。 2、...
    99+
    2022-11-13
    IIS绑定SSL证书
  • ssl客户端证书生成的方法是什么
    1、生成私钥使用openssl命令生成一个私钥文件,命令如下:openssl genrsa -out client.key 2048...
    99+
    2023-05-13
    ssl客户端证书 ssl证书
  • 服务器ssl证书开启的方法是什么
    要开启服务器的SSL证书,你需要按照以下步骤进行操作:1. 生成SSL证书请求(CSR):使用SSL证书生成工具生成CSR文件,其中...
    99+
    2023-08-15
    ssl证书 服务器
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作