zoukankan      html  css  js  c++  java
  • SSL、数字签名、CA 工作原理通俗描述

    SSL(Secure Socket Layer) 是一种加密技术,可以提供对称加密和非对称加密。由于它在协议层里正好是在传输层与应用层之间,这就决定了上层应用必须经过它,这就是它广泛流行和易于实现的原因。


    对称加密有md5,sha1。由于md5已被学者证明可以计算出加密冲突,即它有一定的不安全性,所以建议用sha1加密。


    非对称性加密有RSA,即密码有一对,一个私钥,一个公钥,公钥可以让所有人知道,私钥只有自己知道。


    这样理解,服务器产生一对密钥,公钥给别人即客户端,客户端用它来加密,加密后发给服务端,服务端用自己的私钥解密后得到数据。


    数字签名就和上面的过程相反,即数据由服务端用私钥加密,客户端用服务端的公钥解密,解得出来就说明这数据包的确是出服务端发过来的。


    数字签名是由服务端自己签的,但没人去验证这个服务端是不是你所要访问的真实的,所以需要第三方来帮忙检验,就和支付宝处于第三方来协调的位置一样。这个第三方就叫CA。


    所以服务器产生的公钥就交给CA,CA用CA自己的私钥加密,即数字签名,加密生会生成证书,证书还是要交给服务端,放在服务端那边。当客户端访问服务端时,服务端就会把这个证书安装到客户端上。


    客户端就会用CA提供的CA自己的公钥来解密这个证书,(当然这个CA是浏览器预装时嵌入的可信的CA,如果不是预装时嵌入的CA,此时就没有CA的公钥,就解不了,就会弹出告警。)解得开就说明这个证书是某个CA认证过了的,是可信的,解开后就会得到数据,而这个数据就是服务端的公钥,此时用这个公钥与服务端进行数据传输。


    数据传输过程中,由于RSA方式加解密速度非常慢,所以会把对称与非对称两者结合起来用,即用RSA把对称加密的密码进行加密传输,再用对称密码进行加解密,这样就可以提高效率,且是安全的。

  • 相关阅读:
    正则表达式的三种模式【贪婪、勉强、侵占】的分析
    php实用的文件上传类
    php简单实用的验证码生成类
    phpstorm不安装apache就可以本地测试PHP
    Ajax技术——带进度条的文件上传
    Mybatis 多表查询及查询结果映射
    关于textarea包在div的自适应问题
    Luogu P3200 [HNOI2009]有趣的数列
    群&置换群&burnside
    卡特兰树
  • 原文地址:https://www.cnblogs.com/lpfuture/p/6023960.html
Copyright © 2011-2022 走看看