• 14
  • 14
分享

1.HTTPS协议

HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。简单来说, HTTP是超文本传输协议 ,信息是明文传输。SSL 是指安全套接字层,它是一项标准技术,使用加密算法打乱传输中的数据,可确保互联网连接安全。

所以HTTPS是超文本传输安全协议。

TLS(传输层安全)是更为安全的升级版 SSL。由于 SSL 这一术语更为常用,因此我们仍然将我们的安全证书称作 SSL。

如果某个网站受 SSL 证书保护,其相应的 URL 中会显示 HTTPS,单击浏览器地址栏的挂锁图标,即可查看证书详细信息,包括颁发机构和网站所有者的公司名称。

1.1Https的优点:

  1. 认证用户和服务器,确保数据发送到正确的客户机和服务器 。(验证证书)

  2. 加密并维护数据的完整性,确保数据在传输过程中不被改变。(加密,摘要算法)

一般支持HTTPS的网站,都是CA(Certificate Authority)机构颁发的证书,一般机构颁发的证书都是需要交费的,购买受信任机构颁发的证书每年要交 100 到 500 美元不等的费用,到期就需要续费。如果证书过期、已被吊销或者非证书所代表的域名,都是不被浏览器信任的。不被浏览器信任,也就无法通过网络直接访问。

我们可以使用自签名的方式,花一分钱让网络能正常的访问获取到服务器数据,访问链接时手动信任该证书或忽略证书验证,以后就不会继续拦截了。

自签名证书不适合大众,大众看见浏览器给出的警告??(提示“不安全”),感觉怪吓人的!

如果用于网站的证书需要被大众信任,就不要使用自签发的证书,建议向证书签发机构购买一个。

通过自签发的方式,可以加密数据,还是适合公司内部使用的。

如果已经购买了https证书,网络框架正常使用就好了,下面介绍的是没有购买https证书,又想用https加密数据,以okhttp网络框架为例,如何实现自签名证书。

2.什么是自签名证书( self-signed certicates)

自签名证书就是没有通过受信任的证书颁发机构 自己给自己颁发的证书.

SSL 证书大致分三类:

由安卓认可的证书颁发机构(如: VeriSign、DigiCert), 或这些机构的下属机构颁发的证书.

没有得到安卓认可的证书颁发机构颁发的证书.

自己颁发的证书, 分临时性的(在开发阶段使用)或在发布的产品中永久性使用的两种.

以下是客户端配置

2.1 Okhttp中使用自签名证书

OkHttp是一款开源的处理网络请求的轻量级框架,有Square公司贡献,用于替代HttpUrlConnection与Apache HttpClient。OkHttp使用完全教程

2.2 如何生成keystore

通过JDK自带的keytool.exe 生成一个自己的证书,终端输入 keytool -genkey -v -keystore android.keystore -alias wenzhibin -keyalg RSA -validity 20000 -keystore /Users/jxxxx/yanhuomatou2015.keystore ,然后回车,按提示填写余下的环节即可生成证书如下图:

1.jpg

注意:wenzhibin是keystore文件的别名,20000 是keystore文件的有效期(天),/Users/jxxxx/是生成到哪里去(自己指定一个路径),yanhuomatou2015.keystore是keystore文件的名字。

2.3通过keystore文件如何导出自签名证书

终端输入 keytool -exportcert -alias wenzhibin -file yanhuomatou2015.cer -keystore yanhuomayou2015.keystore ,回车即可导出证书。

2.jpg

2.4如何使用自签名证书

首先获取证书流有两种方式,

第一种方式:将导出的证书放到assets文件夹里面,然后获取(这种方式证书会被打包到apk里)

第二种方式:打开证书,拷贝证书里的内容,定义成字符串常量,再将字符串转为流的形式(这种方式证书就不会被打包到apk里)

然后创建秘钥,添加证书进去,接着创建信任管理器工厂并初始化秘钥

最后获取SSL上下文对象,并初始化信任管理器

3.jpg

3.信任所有证书(不建议使用)

如果服务端更换了证书,那么客户端同样需要更换对应https证书才行,否则无法正常交互获取不到数据。此时如果客户端不换证书又想获取到服务器数据,可以通过实现X509TrustManager接口,达到信任所有证书的目的。如下图:

4.jpg

以下是服务端配置

4.准备工作,首先需要安装Tomcat。

4.1登录Apache Tomcat官网,

地址 http://tomcat.apache.org ,点击左边的Download,选择需要下载的版本。

5.jpg

4.2 右键Finder—>前往文件夹—> ~/Library/ 目录下。

把下载完成的压缩包解压,命名为Tomcat,拷贝到这里。

6.jpg

4.3 打开终端,输入 cd /Users/jxxxxx/Library/Tomcat/bin,然后回车

7.png

(ps:jxxxxx是你mac电脑的用户名。也可以直接输入 cd,然后把Tomcat的bin目录拖到终端即可)

4.4再输入:./startup.sh ,回车

8.png

如果出现Permission denied就是操作失败,缺少权限。再输入 sudo chmod 755 *.sh,回车,接着输入 ./startup.sh,就可以启动Tomcat了:

9.jpg

出现Tomcat started就说明服务器打开了。

(ps:sudo sh shutdown.sh 关闭服务器,然后再输入sudo sh startup.sh 打开服务器,表示服务器重启)

4.5打开我们的浏览器

然后网址输入 http://localhost:8080/,如果出现一只猫,则证明配置成功~(Tomcat部署在自己电脑上,所以可以用localhost代替具体的ip地址)

5.修改,配置Tomcat 参数

5.1在ROOT目录下新建json数据,如图

10.jpg

5.2在conf文件夹下。

11.jpg

12.jpg

之前生成的keystore文件拷贝到conf文件夹下,并打开serve.xml,修改配置,注意,红框里的内容都是新添加进去的配置,而且keystoreFile=“填写自己的keystore文件名” keystorePass=“keystore文件密码”。

5.3 最后保存退出。

打开终端 输入 sudo sh shutdown.sh,再输入sudo sh startup.sh ,待服务器重起成功。

6.浏览器测试https自签名证书效果

13.jpg

14.jpg

15.jpg

手动信任证书点击”高级“—>“继续前往”,最终看到了服务器返回了yanhuomatou2015.json的数据。

7.android网络请求okhttps框架测试https自签名证书效果:

7.1使用android原生框架实现,如下图

16.jpg

17.jpg

7.2除了上面的原生框架实现。

还可以用第三方框架实现,以okhttp框架为例,如下图:

18.jpg

19.jpg

总结:不管用原生还是第三方框架,都能成功获取tomcat服务器的数据,如下图android studio打印的:

20.jpg



作者:文质彬_已然未然

原文链接:https://blog.csdn.net/yanhuomatou2015/article/details/109161789


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1、你的测试职业发展是什么?测试经验越多,测试能力越高。所以我的职业发展是需要时间积累的,一步步向着高级测试工程师奔去。而且我也有初步的职业规划,前3年积累测试经验,按如何做好测试工程师的要点去要求自己,不断更新自己改正自己,做好测试任务。2、你认为测试人员需要具备哪些素质做测试应该要有一定的协调能力,因为测试人员经常要与开发接触处理一些问题,如果处理不好的话会引起一些冲突,这样的话工作上就会不好做。还有测试人员要有一定的耐心,有的时候做测试很枯燥乏味。除了耐心,测试人员不能放过每一个可能的错误。3、你为什么能够做测试这一行虽然我的测试技术还不是很成熟,但是我觉得我还是可以胜任软件测试这个工作...
            13 15 1601
            分享
          • 基本技术问题:游戏测试的基本流程:分析测试需求-制定测试计划-设计测试用例-(可能会进行冒烟测试)-执行测试-生成测试报告OSI七层协议:应用层-表示层-会话层-传输层-网络层-数据链路层-物理层TCP与UDP的差别:游戏测试与软件测试之间的关系:1、游戏测试是软件测试的一部分游戏测试简单说就是发现游戏里的问题(BUG)并进行改进,从而提升游戏产品的质量。游戏测试作为软件测试的一部分,它具备了软件测试所有的一切共同的特性:①测试的目的是发现软件中存在的缺陷。②测试都是需要测试人员按照产品行为描述来实施。产品行为描述可以是书面的规格说明书,需求文档,产品文件,或是用户手册,源代码,或是工作的可执...
            3 3 1821
            分享
          •   两个熟悉的场景:  ·生产环境出现问题,解决问题,原因复盘、责任分配到人;  · 无休止的测试-回归-再测试-再回归测试,已经投入了很大精力,但仍对项目质量不信心;  如果自己所负责或参与的项目经常遇到上面的两种情况,不妨从项目测试流程角度,去思考原因以及破开瓶颈的方法。  测试流程拆解  需求评审  通过参与技术设计评审,可以为测试方案提供依据。例如:核心业务是否需要接口测试、新老数据兼容问题、测试场景的数据构造以及测试所需的工具等,都可以在这个阶段进行思考和产出。  另外,可以有效的评估需求影响范围和风险点,避免遗漏。  此阶段是质量的基石,通过测试左移,尽早发现需求设计缺陷...
            0 0 939
            分享
          •   软件测试是用来验证软件解决方案或产品是否符合要求和期望的过程。软件测试的旨在发现缺陷,并证明软件是适合使用的。有许多测试方法、类型和技术可用于验证功能和非功能需求。  测试自动化是使用其他软件来自动化手动测试或在应用程序中执行手动用户操作的过程。在手动测试不可能或费时的情况下,用其他软件的帮助来验证软件是一个好主意。  自动化测试是使用专门的软件工具验证软件解决方案,通常涉及自动化功能作为测试过程的一部分。  自动化测试是使用特殊的软件,与被测试的软件分开,来控制和执行测试,包括实际结果与预测结果的比较和报告。应用程序被称为被测应用程序(AUT the application under ...
            0 0 433
            分享
          • 曾经有一个乐队在他们的演出条款中明确的写道:演出前,承办方必须提供巧克力豆,但绝对不许出现棕色豆;如有违反,乐队立即取消演出。相信不少的同学在看到这个条款的时候第一反应都是,搞艺术的人怪癖真多!!!真相是,多年后,这个乐队的主唱范·海伦在自传中揭晓这一霸王条款的来由:“乐队怎样检测承办方的重视程度?这似乎很难!而把棕色巧克力豆的条款夹在合同里,就是确认承办方是否认真阅读了所有条款的一个办法!在合同中巧妙‘布雷’,如果承办方不幸中招儿,那就没得谈!”事实上,这一条款出台后,乐队再没有为安全问题伤过脑筋。上述这种Event Tracking的方式放在互联网应用中,俗称就是“埋点”。从IT开发的角度...
            1 1 2727
            分享
      • 51testing软件测试圈微信