HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。简单来说,HTTP是超文本传输协议,信息是明文传输。SSL是指安全套接字层,它是一项标准技术,使用加密算法打乱传输中的数据,可确保互联网连接安全。
所以HTTPS是超文本传输安全协议。
TLS(传输层安全)是更为安全的升级版SSL。由于SSL这一术语更为常用,因此我们仍然将我们的安全证书称作SSL。
如果某个网站受SSL证书保护,其相应的URL中会显示HTTPS,单击浏览器地址栏的挂锁图标,即可查看证书详细信息,包括颁发机构和网站所有者的公司名称。
1.1Https的优点:
一般支持HTTPS的网站,都是CA(CertificateAuthority)机构颁发的证书,一般机构颁发的证书都是需要交费的,购买受信任机构颁发的证书每年要交100到500美元不等的费用,到期就需要续费。如果证书过期、已被吊销或者非证书所代表的域名,都是不被浏览器信任的。不被浏览器信任,也就无法通过网络直接访问。
我们可以使用自签名的方式,花一分钱让网络能正常的访问获取到服务器数据,访问链接时手动信任该证书或忽略证书验证,以后就不会继续拦截了。
自签名证书不适合大众,大众看见浏览器给出的警告(提示“不安全”),感觉怪吓人的!
如果用于网站的证书需要被大众信任,就不要使用自签发的证书,建议向证书签发机构购买一个。
通过自签发的方式,可以加密数据,还是适合公司内部使用的。
自签名证书就是没有通过受信任的证书颁发机构自己给自己颁发的证书.
SSL证书大致分三类:
由安卓认可的证书颁发机构(如:VeriSign、DigiCert),或这些机构的下属机构颁发的证书.
没有得到安卓认可的证书颁发机构颁发的证书.
自己颁发的证书,分临时性的(在开发阶段使用)或在发布的产品中永久性使用的两种.
以下是客户端配置
OkHttp是一款开源的处理网络请求的轻量级框架,有Square公司贡献,用于替代HttpUrlConnection与ApacheHttpClient。OkHttp使用完全教程
2.2如何生成keystore
通过JDK自带的keytool.exe生成一个自己的证书,终端输入keytool-genkey-v-keystoreandroid.keystore-aliaswenzhibin-keyalgRSA-validity20000-keystore/Users/jxxxx/yanhuomatou2015.keystore,然后回车,按提示填写余下的环节即可生成证书如下图:
注意:wenzhibin是keystore文件的别名,20000是keystore文件的有效期(天),/Users/jxxxx/是生成到哪里去(自己指定一个路径),yanhuomatou2015.keystore是keystore文件的名字。
2.3通过keystore文件如何导出自签名证书
终端输入keytool-exportcert-aliaswenzhibin-fileyanhuomatou2015.cer-keystoreyanhuomayou2015.keystore,回车即可导出证书。
2.4如何使用自签名证书
首先获取证书流有两种方式,
第一种方式:将导出的证书放到assets文件夹里面,然后获取(这种方式证书会被打包到apk里)
第二种方式:打开证书,拷贝证书里的内容,定义成字符串常量,再将字符串转为流的形式(这种方式证书就不会被打包到apk里)
然后创建秘钥,添加证书进去,接着创建信任管理器工厂并初始化秘钥
最后获取SSL上下文对象,并初始化信任管理器
以下是服务端配置
4.2右键Finder—>前往文件夹—>~/Library/目录下。
把下载完成的压缩包解压,命名为Tomcat,拷贝到这里。
4.3打开终端,输入cd/Users/jxxxxx/Library/Tomcat/bin,然后回车
(ps:jxxxxx是你mac电脑的用户名。也可以直接输入cd,然后把Tomcat的bin目录拖到终端即可)
4.4再输入:./startup.sh,回车
如果出现Permissiondenied就是操作失败,缺少权限。再输入sudochmod755*.sh,回车,接着输入./startup.sh,就可以启动Tomcat了:
出现Tomcatstarted就说明服务器打开了。
(ps:sudoshshutdown.sh关闭服务器,然后再输入sudoshstartup.sh打开服务器,表示服务器重启)
4.5打开我们的浏览器
5.1在ROOT目录下新建json数据,如图
5.2在conf文件夹下。
之前生成的keystore文件拷贝到conf文件夹下,并打开serve.xml,修改配置,注意,红框里的内容都是新添加进去的配置,而且keystoreFile=“填写自己的keystore文件名”keystorePass=“keystore文件密码”。
5.3最后保存退出。
打开终端输入sudoshshutdown.sh,再输入sudoshstartup.sh,待服务器重起成功。
手动信任证书点击”高级“—>“继续前往”,最终看到了服务器返回了yanhuomatou2015.json的数据。
7.1使用android原生框架实现,如下图
7.2除了上面的原生框架实现。
总结:不管用原生还是第三方框架,都能成功获取tomcat服务器的数据,如下图androidstudio打印的: