说明
- http是非加密的,会有安全问题
- https在http基础上进行了公私钥加密
- ssl证书是ca证书的一种
- 证书需要在自己服务器里备一份
非对称加密算法
非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。
另一方面,甲方可以使用自己的私钥对机密信息进行签名后再发送给乙方;乙方再用甲方的公钥对甲方发送回来的数据进行验签。
总结:公钥和私钥是成对的,它们互相解密。公钥加密,私钥解密。私钥数字签名,公钥验证。
问题
- 为什么需要中心机构的参与?
- 现实中我们给任何一个网站发起请求,是根据服务器的地址直接发送,但是没法避免其他人也说这个地址是他的,于是我们(客户端)不知道到底是哪一个公钥是真的,这就容易发错目标地址而导致信息泄露。这就需要给公钥颁发证书,证书包含地址。
中心机构对公钥进行数字签名,就生成了证书
- 怎么办?
由此双方决定,引入一个权威机构,由这个第三方证明自己就是拥有这个公私钥对的服务器,给双方颁发身份证,当进行对话时,服务器把身份一亮,然后让这个机构出来给用户证明一下(也就是用机构的公钥进行解密验证),双方通信开始
这个过程就像是你出生,然后去派出所登记身份证
证书问题
- 如果相信根证书,那么下面的证书都是可信的,相反,根证书出了问题,就全部不可信
补充
- ca机构生成证书后,服务端自己拿回来然后在服务器存一份。当浏览器端发出请求,服务端通过ngnix把证书给客户端进行验证。客户端这里有自己信任的机构的名单,如果这个证书签发者在名单里,直接通过对方公钥验证签名的真实性与合法性(是否已经过期),如果不通过,浏览器就弹出不安全提示,直到这个客户端把ca的根证书设置进信任名单里。这个过程不再需要向ca证书颁发机构那里发出请求,如果证书已经在服务器端。
- 客户端发送请求:客户端发送获取ca证书的请求, 服务器发送过来证书然后客户端验证合法性, 开始发出业务请求
- tsl的四次握手:首先进行双方证书的合法性验证,然后确定对方的身份,最后进行通讯。
- https协议必须要有ca证书(很多加密协议都需要有),证书有免费的,自制的,加钱的,自己决定用哪一种,一般免费的
- WebSocket是HTML5中的协议,支持持久连接,HTTP不支持持久连接
- HTTP是单向协议,只能由客户端发起,做不到服务器主动向客户端推送信息。