HTTP超文本传输协议,我们都知道它是用明文传输,这样就不可避免的消息内容容易被泄露。
如果是你,你会怎么做让信息即使在传输过程中被别人窃取看到了,也无法让别人知道你所传达的信息?请你思考一下……………………………………………………
思考了没
好好想一下
开始说了哦!
当然是加密了,密文别人不就看不懂了。
那么现在又有问题了,我们常用的有对称加密、非对称加密。如果客户端和服务端通信单独的使用对称加密或者非对称加密,是否会出现问题呢?给你们一点思考的时间………………………………
自觉思考好之后往下看。
只使用对称加密:
对称加密中用到的密钥叫做私钥,加密过程中的私钥与解密过程中用到的私钥是同一个密钥。对称加密的算法是公开的,一旦私钥泄密,密文就很容易被破解。而且要维持每个客户端的秘钥不一致整套加密才有意义,这样就增加了维护困难。因为对称加密需要双方协商一致,容易导致密钥邪泄漏
只使用非对称加密:
效率低下,无法适应大量交互。公钥可以解开私钥加密的信息,并且公钥是公开的。
看来单独使用还是不安全的,那么如果我们将二者结合起来。
客户端使用非对称加密用公钥把对称加密中密钥发送到服务端,之后就用私钥解密得到密钥。之后就使用对称加密。
通过上边这句话,你是否发现了问题:客户端的公钥从哪来?怎么确定客户端公钥是服务端给的?
这个时候我们就要知道证书这种东西了。
数字证书是一个经证书授权中心数字证书的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。
数字证书是一种权威性的电子文档,可以由权威公正的第三方机构,即CA(例如中国各地方的CA公司)中心签发的证书,也可以由企业级CA系统进行签发。
让服务端拿到证书即可,这就很好的解决了所有问题。最后补充一点知识点:
SSL(Secure Socket Layer 安全套接层)是基于HTTPS下的一个协议加密层!
TLS(传输层安全)是更为安全的升级版 SSL。由于 SSL 这一术语更为常用,因此我们仍然将我们的安全证书称作 SSL。
事实上我们现在用的都是TLS,但因为历史上习惯了SSL这个称呼