HTTPS学习笔记
写在前面
现在越来越多的网站开始使用HTTPS协议进行数据的传输,很有必要全面学习一下。之前工作里面也经常接触,但是都是一知半解,也就是照着相关教程操作,能实现目的就完事。现在趁着有空,决定把这个仔细学习一下。
原理
全称:Hyper Text Transfer Protocol over Secure SocketLayer。实现方式是在HTTP层和TCP层之间加入SSL层。
SSL协议加密方式
SSL协议即用到了对称加密也用到了非对称加密(公钥加密),在建立传输链路时,SSL首先对对称加密的密钥使用公钥进行非对称加密,链路建立好之后,SSL对传输内容使用对称加密。
认证方式
HTTPS按照认证方式分为单向认证和双向认证。下面是两种方式的握手过程
单向认证:
双向认证:
单向认证和双向认证的应用范围
一般web应用都是采用单向认证的,原因很简单,用户数目广泛,且无需在通讯层做用户身份验证,一般都在应用逻辑层来保证用户的合法登入。
但如果是企业应用对接,情况就不一样,可能会要求对client(相对而言)做身份验证。这时需要做双向认证。(需要在服务器上配置认证)
SSL证书申请与规则
SSL证书可以向CA机构通过付费的方式申请,也可以自己制作。 CA机构颁发的证书价格非常昂贵,而且有效期一般只有一年到三年不等(年数不同,价格也不同),过期之后还要再次交钱申请,因此一般只有企业才会申请证书。但是随着个人网站的增多,目前也有针对个人的SSL证书服务,价格相对便宜一些,国内的话400多块钱就能申请到一个,国外更是有免费的SSL证书可以申请。 在申请SSL证书时需要向CA机构提供网站域名,营业执照,以及申请人的身份信息等。
此外,一个证书一般只绑定一个域名,如果CA机构心情好的话,会免费再绑一个,比如你要申请域名时绑定的域名是 ,那么只有在浏览器地址是 的时候,这个证书才是受信任的,如果地址是或者,那么这个证书由于访问的域名与证书绑定的域名不同,仍然会被浏览器显示为不受信任的。
CA机构也提供申请通配符域名(例如,*.),通配符域名相当于绑定了主域名下的所有域名,因此使用起来非常方便,但是价格也超级昂贵,一个通配符域名一年大概得5000块钱,只有企业才可以申请。
证书的验证过程
证书以证书链的形式组织,在颁发证书的时候首先要有根CA机构颁发的根证书,再由根CA机构颁发一个中级CA机构的证书,最后由中级CA机构颁发具体的SSL证书。我们可以这样理解,根CA机构就是一个公司,根证书就是他的身份凭证,每个公司由不同的部门来颁发不同用途的证书,这些不同的部门就是中级CA机构,这些中级CA机构使用中级证书作为自己的身份凭证,其中有一个部门是专门颁发SSL证书,当把根证书,中级证书,以及最后申请的SSL证书连在一起就形成了证书链,也称为证书路径。在验证证书的时候,浏览器会调用系统的证书管理器接口对证书路径中的所有证书一级一级的进行验证,只有路径中所有的证书都是受信的,整个验证的结果才是受信。根证书的有效期长,支持的用途多以方便颁发不同用途类型的中级证书;中级证书用途单一,有效期相对短一些,但是比具体的SSL证书要长很多。
交叉证书
通常来讲,交叉证书可以用来提高网站的可信度和可靠性:GlobalSign的交叉证书可允许浏览器和应用,使用GlobalSign的RootCA R1或者Root CA R2证书,来验证GlobalSign签发的HTTPS证书的完整性。然后,在软件验证一个网站的HTTPS证书时,上述的交叉证书会为软件创造两条可能的信任路径。只要浏览器信任GlobalSign的RootCA R1或者R2证书,浏览器就会信任该网站的HTTPS证书。
证书吊销列表即CRL
CRL是一个具有时间戳的列表,在其中列出了所有已经吊销或挂起的数字证书信息。在CRL中包含本次更新日期和下次更新日期两个字段,用户可由这两个日期信息确定当前拥有的CRL是否是最新的,以及管理CRL缓冲区(即在CRL下次更新之前,用户可以一直使用原来的CRL缓冲区)。由于CRL中含有CA的数字签名,因此CRL可以存储于网络上的任何节点。
引用列表
1、/duanbokan/article/details/50847612
2、/question/458464295876388645.html
3、/w3cnote/https-ssl-intro.html
4、/news/116786.html
5、/item/%E8%AF%81%E4%B9%A6%E5%90%8A%E9%94%80%E5%88%97%E8%A1%A8/4198011?fr=aladdin
如果觉得《HTTPS学习笔记》对你有帮助,请点赞、收藏,并留下你的观点哦!