码迷,mamicode.com
首页 > Web开发 > 详细

HTTPS基本原理与应用

时间:2017-04-09 21:42:02      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:https   ca证书   自签名证书   

HTTP存在的问题

1、无法保证访问到受信网站
当我们要访问一个网站时,如何才能保证这个网站就是我们要的?假设场景如下:

2、无法保证数据私密性和完整性
HTTP协议的数据在传输过程中使用明文传输,很容易被抓取和篡改,可使用tcpdump工具进行验证。

HTTPS的解决思路

1、网站受信鉴权
引入第三方授信服务商,由授信服务商提供网站证书签名,保证网站可信。

2、数据私密性和完整性
HTTPS协议利用网站证书签名来生成相应的公钥和密钥,对数据报文进行加解密处理。

HTTPS的流程和原理

以app<- - - ->server为例

前提
向第三方授信服务商购买证书,或在服务器生成本地证书,并将证书放到网站服务器的指定路径下,同时将证书发给客户端app保存在本地。

https的工作流程
1、校验服务器:客户端向CA机构认证服务器信息
2、协商会话密钥:客户端和服务器协商会话加密密钥
3、加密通讯:客户端和服务器使用会话密钥加密数据报文

注:由于非对称加密的算法复杂,占用较多CPU资源,实际使用时会放弃第7、8两步。


HTTPS的配置
以本地自签名证书为例

证书生成
由于没有向第三方申请证书,我们使用openssl生成本地证书来演示https的配置。

nginx配置https端口转发
1、nginx需要安装支持ssl的模块。
2、在nginx配置文件中新增https端口转发配置

证书生成

1、制作证书私钥:
>openssl genrsa -des3 -out test_yunqixin_service.crt 1024

2、使用证书私钥制作解密后的证书私钥:
>openssl rsa -in test_yunqixin_service.crt  -out test_yunqixin_service_nopass.key

3、使用证书私钥生成证书签名:
>openssl req -new -key test_yunqixin_service.crt -out test_yunqixin_service.csr
提示输入证书信息:Common Name (eg, your name or your server‘s hostname) []:
此处我们输入网站域名:test.yunqixin.site,
这很重要,必须输入证书绑定的域名

4、使用证书私钥和签名生成证书crt文件:
>openssl x509 -req -days 10000 -in test_yunqixin_service.csr -signkey test_yunqixin_service_nopass.key -out test_yunqixin_service.crt

证书生成
经过上面四个步骤,得到.crt文件和.key文件,内容如下。
这两个文件也是需要配置到nginx的配置文件里面。



nginx配置https端口转发
1、ssl配置:端口(默认443)、ssl协议及版本、ssl加密方式、证书路径
2、nginx转发配置:与http转发配置一致

https效果

HTTPS基本原理与应用

标签:https   ca证书   自签名证书   

原文地址:http://andrewli.blog.51cto.com/7625043/1914193

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!