https 初步了解

2017-01-16  本文已影响16人  皇马船长

1. https 简单介绍

概述

HTTP协议属于明文传输协议,交互过程以及数据传输都没有进行过加密,通信双方也没有进行身份验证,通信过程非常容易遭到劫持,篡改等安全问题,为了提高网络传输的安全性,HTTPS应运而生.相比HTTP,HTTPS提供了以下三个特性:

接下来需要了解几个重要的概念

06070134_FZAi.png 20170113160933951.png

工作流程

20170113193549689.png
  1. 客户端向服务器发送请求,并告诉服务器支持的算法列表;
  2. 服务器选择一种算法,并将自己的证书返回给客户端,证书包含服务器域名和公钥等信息;
  3. 客户端得到证书后进行验证,验证通过的话就生成一个随机值,并用证书中的公钥进行加密
  4. 传递加密信息,目的就是让服务器得到这个随机值,以后客户端与服务器的通信就可以通过这个随机值来进行加密解密;
  5. 服务器用自己的私钥解密客户端传过来的随机值,然后把内容进行对称加密,即将信息和私钥通过加密算法混在一起,这样除非知道私钥,不然无法获取到内容,而客户端与服务器都知道这个私钥,所以只要加密算法够强大,私钥够复杂,数据就很安全了;
  6. 将加密后的信息发给客户端,客户端还原信息
  7. 客户端用之前生成的私钥解密服务器发过来的信息,便获取到了解密后的内容;

2. 在android中如何使用

使用https 需要区分是自签名证书还是花钱向权威机构申请的证书 ,那么这两个证书有什么区别 ?
什么是自签名证书( self-signed certicates)
自签名证书就是没有通过受信任的证书颁发机构, 自己通过JDK自带工具keytool去生成一个证书。

SSL 证书大致分三类:

只有第一种, 也就是那些被安卓系统认可的机构颁发的证书, 在使用过程中不会出现安全提示.

对于向权威机构((简称CA,Certificate Authority))申请过证书的网络地址,用OkHttp或者HttpsURLConnection都可以直接访问 ,不需要做额外的事情 。但是申请需要$$ (每年要交 100 到 500 美元不等的费用)。
CA机构颁发的证书有3种类型:

**下面主要介绍一下使用自签名证书的情况 **
具体流程参考 ,http://blog.majiajie.me/2016/05/11/Android-%E5%81%B6%E9%81%87HTTPS/

参考文档

https时代来了,你却还一无所知?
Android 偶遇HTTPS : 介绍android 使用自签名证书实现https请求
初探HTTPS协议
Android Https相关完全解析 当OkHttp遇到Https

上一篇下一篇

猜你喜欢

热点阅读