资讯专栏INFORMATION COLUMN

Https的介绍和使用

testbird / 755人阅读

摘要:的握手阶段是采用的是非对称加密。爱丽丝确认数字证书有效,然后生成一个新的随机数,并使用数字证书中的公钥,加密这个随机数,发给鲍勃。爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成对话密钥,用来加密接下来的整个对话过程。

简介

超文本传输安全协议(英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure)。
SSL,Secure Sockets Layer 的缩写,1994年由网景设计的,1999 年,互联网标准化组织接替网景公司,发布了 Transport Sockets Layer 即 TSL。
所谓 HTTPS 就是在 TCP 传输层和 HTTP 应用层之间加入了 TSL/SSL 层,用于加密和解密。

加密

对称加密

对称加密是一种最简答,也最快的加密解密方式。对称,即加密和解密都是用的相同的秘钥。常见的对称加密方法有 DES、3DES、AES、RC5、RC6 等。 https 的传输阶段就是采用对称加密的 http 传输。

非对称加密

加密和解密需要两个不同的秘钥。一般分为公钥和私钥,公钥用于加密,能够提供数字签名的功能,可以任意向外发布;私钥只有持有者保管,通过公钥加密的密文在不安全的网络上传输,只有私钥持有者可以解开获得明文(即使获得了密文和公钥,也无法数以年记的时间内解开)。常见的非对称加密算法有 RSA、ElGamal、背包算法、Rabin、迪菲-赫尔曼算法、椭圆曲线加密算法。 https 的握手阶段是采用的是非对称加密。

数字证书

wiki定义

用于公开密钥基础建设的电子文件,用来证明公开密钥拥有者的身份。此文件包含了公钥信息、拥有者身份信息(主体)、以及数字证书认证机构(发行者)对这份文件的数字签名,以保证这个文件的整体内容正确无误。电脑系统或其他用户可以通过一定的程序核实证书上的内容,包括证书有否过期、数字签名是否有效,如果信任签发的机构,就可以信任证书上的密钥,凭公钥加密与拥有者进行可靠的通信。

申请数字证书

服务端通过非对称加密算法生成一对公钥和私钥,向 Certificate Authority 即证书认证中心,简称 CA 提供拥有者身份信息和服务端公钥,通过后 CA 会颁发包含服务端公钥,拥有着身份信息和使用 CA 私钥对证书内容的摘要进行加密的密文,即数据签名。

如何确认数字证书有效

验证证书是否有效

客户端通过查看证书的有效时间,以及域名等来判断内容是否有效。

验证证书是否可信

客户端通过预存的相对应的 CA 根证书的公钥,对数字签名进行解密获取证书的摘要与通过对证书内容进行哈希运算得到的摘要进行对比,相等的话则证明数字证书是该 CA 颁发的是可信的。不相等,则客户端会提示证书不可信。

原理

开始加密通信之前,客户端和服务器首先必须建立连接和交换参数,这个过程叫做握手handshake
假定客户端叫做爱丽丝,服务器叫做鲍勃,整个握手过程可以用下图说明。

握手阶段分成五步。

爱丽丝给出协议版本号、一个客户端生成的随机数Client random,以及客户端支持的加密方法。

鲍勃确认双方使用的加密方法,并给出数字证书、以及一个服务器生成的随机数Server random

爱丽丝确认数字证书有效,然后生成一个新的随机数Premaster secret,并使用数字证书中的公钥,加密这个随机数,发给鲍勃。

鲍勃使用自己的私钥,获取爱丽丝发来的随机数,即Premaster secret

爱丽丝和鲍勃根据约定的加密方法,使用前面的三个随机数,生成对话密钥 session key,用来加密接下来的整个对话过程。

为什么一定要用三个随机数来生成对话密钥,我们来看下面的解释

不管是客户端还是服务器,都需要随机数,这样生成的密钥才不会每次都一样。由于SSL协议中证书是静态的,因此十分有必要引入一种随机因素来保证协商出来的密钥的随机性。

对于RSA密钥交换算法来说,Premaster secret本身就是一个随机数,再加上hello消息中的随机,三个随机数通过一个密钥导出器最终导出一个对称密钥。
Premaster secret的存在在于SSL协议不信任每个主机都能产生完全随机的随机数,如果随机数不随机,那么cPremaster secret就有可能被猜出来,那么仅适用 Premaster secret 作为密钥就不合适了,因此必须引入新的随机因素,那么客户端和服务器加上Premaster secret 三个随机数一同生成的密钥就不容易被猜出了,一个伪随机可能完全不随机,可是是三个伪随机就十分接近随机了,每增加一个自由度,随机性增加的可不是一。

部署

Let"s Encrypt 是一个免费的,自动化的,开放的 CA 机构。通过 certbot ,选择相应的web服务和服务器版本,就可以很快的安装 nginx 的插件和证书。下面以 ubuntu 和 nginx 为例。

安装源及软件

$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get update
$ sudo apt-get install python-certbot-nginx 

安装证书

$ sudo certbot --nginx certonly # 不加 certonly,可以自动配置 nginx,省略下一步

配置 NGINX
在相应的 server 模块中加入如下配置

{ 
#省略部分配置...;
listen 443;
ssl on; 
ssl_certificate /path/to/server.crt; # 证书路径
ssl_certificate_key /path/to/server.key; # 私钥路径
}

重新生成证书

$ sudo certbot renew --dry-run

参考

wikipedia https
wikipedia ssl/tsl
SSL/TLS协议运行机制的概述
图解SSL/TLS协议

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/11253.html

相关文章

  • 超全App 测试工具大全,收藏这篇就够了【附带官网|GitHub地址】

    摘要:三性能测试工具官网介绍腾讯开源的的随身调测平台,支持和。官网介绍腾讯游戏部门开发的移动全平台性能测试分析工具平台。百度的服务目前主要为收费服务。 随着移动互联网的高速发展,App 应用非常火,测试工程师也会接触到各种 app 应用。除了人工测试之外,也可以通过一些测试工具来提高我们的测试效率...

    MRZYD 评论0 收藏0
  • 前端每周清单半年盘点之 JavaScript 篇

    摘要:前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点分为新闻热点开发教程工程实践深度阅读开源项目巅峰人生等栏目。背后的故事本文是对于年之间世界发生的大事件的详细介绍,阐述了从提出到角力到流产的前世今生。 前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。欢迎...

    Vixb 评论0 收藏0
  • TiKV 源码解析系列文章(一)序

    摘要:而源码解析系列文章则是会从源码层面给大家抽丝剥茧,让大家知道我们内部到底是如何实现的。我们希望通过该源码解析系列,能让大家对有一个更深刻的理解。 作者:唐刘 TiKV 是一个支持事务的分布式 Key-Value 数据库,有很多社区开发者基于 TiKV 来开发自己的应用,譬如 titan、tidis。尤其是在 TiKV 成为 CNCF 的 Sandbox 项目之后,吸引了越来越多开发者的...

    LeviDing 评论0 收藏0
  • 前端每周清单半年盘点之 CSS 篇

    摘要:前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点分为新闻热点开发教程工程实践深度阅读开源项目巅峰人生等栏目。它能够为我们提供类似于预处理器命名空间等多方面的辅助。 前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。欢迎关注【前端之巅】微信公众号(ID:f...

    RaoMeng 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<