Android webview在https下实现ssl的双向认证

本文详细介绍了如何在Android的WebView中实现HTTPS的SSL双向认证,包括生成服务器和客户端证书,配置Tomcat服务器,以及在Android应用中配置WebView进行证书信任和拦截请求。通过这个过程,可以实现在移动应用中安全地访问需要双向认证的HTTPS服务。
摘要由CSDN通过智能技术生成

一、概述

1.简介

Https简单来说是Http的安全版,Https协议是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比Http协议更加安全。

这里说的安全靠的就是SSL,SSL的作用如下:

  • a.认证用户和服务器,确保数据发送到正确的客户机和服务器。(验证证书)
  • b.加密数据防止传输数据中途被窃取。(加密)
  • c.维护数据的完整性,确保数据在传输过程中不被改变。(摘要算法)

Https在传输数据之前需要客户端与服务器端之间进行一次握手,只有握手通过了,才会有数据传输的过程。这个握手就是上面所说SSL作用的第一条,认证用户和服务器,这个认证的方式是用证书来实现的。

上面所述只是对Https做一个简单的介绍,更加全面具体的概述可以直接百度。

2.文章重点

这篇文章的重点是实现SSL证书双向认证,即客户端与服务器进行握手。

包含:

  • a.生成客户端与服务端证书。
  • b.搭建支持Https的服务器。
  • c.实现webview的双向证书认证。

二、生成证书

本篇文章用的是自签名证书,为什么不用权威机构颁发的证书?因为要钱!!!当然如果公司有去申请了最好。下面生成一个服务器端的自签名证书。

如何生成证书?在JDK中有个keytool工具,非常简单,只要安装了JDK都可以生成一个证书。直接命令行走起:

keytool -genkey -alias zx_server -keyalg RSA -keystore D:\key\zx_server.jks -validity 3600 -storepass 123456


使用上述的命令就可以在D盘的“key”文件夹生成一个服务器端的证书库文件 zx_server.jks,它的密钥库口令为:123456

接下来利用zx_server.jks证书库生成一个服务器端证书,它是可以被客户端拿来使用的:

keytool -export -alias zx_server -file D:\key\zx_server.cer -keystore D:\key\zx_server.jks -storepass 123456


生成了包含公钥的服务器端证书zx_server.cer。

三、下载tomcat,使用自签名证书配置Https

先去下载一个tomcat,本篇文章用的是tomcat 7,地址:http://tomcat.apache.org/download-70.cgi

压缩包接下后,找到tomcat/config/server.xml文件,以文本的形式打开。

在Servcie标签下,加入如下标签:

	<Connector SSLEnabled="true" 
				acceptCount="100" 
				disableUploadTimeout="true" 
				enableLookups="true" 
				keystoreFile="D:/key/zx_server.jks" 
				keystorePass="123456" 
				maxSpareThreads="75" 
				maxThreads="200" 
				minSpareThreads="5" port="8443" 
				protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https" 
				secure="true" 
				sslProtocol="TLS"
				clientAuth="false" /> 

注意:keystoreFile的为刚刚生成zx_server.jks文件路径(这里填写自己的路径),keystorePass的值为密钥库口令:123456。

现在一个支持Https的tomcat服务器配好了,就是这么简单。找到tomcat/bin/startup.bat,直接双击启动服务器。

启动成功后,打开浏览器输入https://localhost:8443/ 即可看到证书不被信任的警告,无视它,直接进入,即可看见tomcat的默认主页。


四、webview实现双向认证

这步是本篇文章的重点。通过上述步骤一个https的服务器已经搭建好了,现在要实现双向认证,也就是说客户端也会有一个“jks文件”,服务器端要有一个“cer文件”与之对应,抽象来说就是客户端要去认证服务器端。

上面的步骤已经生成了zx_server.jks和zx_server.cer文件,按照生成上述证书的方式,生成两个客户端文件,命名为:zx_client.jks和zx_client.cer,现在去配置客户端证书。

1.配置服务器

服务器的配置非常简单,在上述第三步配置tomcat时添加的标签中,添加一些属性

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值