今天继续给大家介绍Linux运维相关知识,本文主要内容是CA认证与HTTPs原理知识。
一、https与ssl
我们在访问网站时,使用的比较常见的是https协议,https协议其实就是在http协议的基础上,添加了ssl,可以在互联网上提供内容加密的功能,目前,主流网站都是使用的https。SSL,即Secure Socket Layer,安全套接字层,可以在一个不安全的公网环境中,安全的传输密钥。关于密钥传递的问题,涉及到密码学中非对称加密的原理知识,客户端与服务端通过SSL在交换密钥后,就能够生成同样的密钥,这个密钥对于双方而言是明确且一致的,但是,如果有其他人监听了双方的所有通信,它依旧无法还原处双方生成的密钥。
二、证书与CA
ssl解决了密钥传输与加密的问题,然而,如何验证对方网站的身份呢?这就需要引入数字证书与CA了。
CA,即Certificate Authority,证书颁发机构的简称。如何利用CA认证我们要访问的网站身份呢?很自然的,我们想到,可以选择我们一个都信任的机构,作为CA,比如指名互联网公司、政府相关部门等等。一个网站在注册域名时向CA请求验证,CA在验证通过后,立即颁发一个凭证给该网站,我们只需要检查这个网站的凭证是否合法,就可以明确该网站是否是合法的了。在这里,这个凭证就是数字证书。与普通的证书不同,由于引入了非对称密码体制,由CA签发的证书包含了CA对于证书的签名,因此网站自身无法模仿CA给自己签名,这就解决了这套体制下安全性的问题。此外,随着当前互联网规模的不断扩大,单个CA已经无法解决日益增长的网站需求,因此引入了多级CA的概念,我们可以选择只信任一个或者几个CA机构,并且把这些CA机构作为根CA。根CA又可以选择对其他几个CA机构进行认证,其他的CA机构可以选择对三级的CA进行认证,这样,就形成了一个树状的结构,分担了单个CA的服务压力。
三、申请证书过程
如果一个站点要申请CA认证,首先,它需要先生成证书请求文件CSR(Certificate Signing Request),CSR内包含该站点的基本信息,如主机名、域名、IP位置等等,以及该站点提前生成的公钥。接下来,该站点把证书发送给CA,CA会通过各种方式对该站点进行身份验证,当通过验证后,就可以给该站点生成证书,CA会对CSR文件进行处理后,用自己的私钥进行签名,并且把签名值附加在证书中,这样,一张证书就完成了。可以看出,一张证书包含了站点的基本身份信息、站点的公钥和CA机构的签名。
站点申请证书流程如下:
四、用户访问网页过程
这样,用户在访问网页的过程,就如下图所示:
用户访问网页后,站点首先向用户发送自己的证书,用户在收到证书后,会检查证书的有效性,同时还会使用CA的公钥验证证书的签名,如果验证成功,说明该证书的确是由CA签发,该站点身份认证通过。如果该CA不是根CA,即用户选择不信任该CA,还可能继续查询该CA机构的证书,直至查询至一个用户信任的根CA机构。我们使用的家用电脑,都会默认配置了一些信任的证书,如下所示:
在完成上述操作后,接下来就可以与该站点协商加密算法,传递密钥并进行加密通信。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200