HTTPS是为了确保网络上服务器和客户端通信安全所采取的一种安全机制,那么在安全要求较高的互联网通信场景中有哪些不安全因素呢?

    被客户端请求的服务器端是否是值得被信任的,如在网上登陆支付宝或其他银行网页进行付款操作,此时我们一定要确定这个网站是官方的且是安全的。这一块儿由数字证书以非对称加密来实现认证,下面详述。

    通信过程中是否是安全的,而不是黑客伪装服务器端进行的。这时需要一个密钥和一个对称加密算法来进行保障。

    初次客户端对服务器端进行身份认证时怎么确认服务器端确实是证书里提到的那个。此处使用非对称加密算法如RCA实现,下面是详述。

    好了,了解了这些后进入正题,首先给出一个数字证书的构成如下:


    数字证书原理及HTTPS实现过程 - 图1

    HTTPS实现过程(客户端以C代指,服务器端以S代指):

    C发起请求到S;

    S收到后将证书发送给C;

    C会按照证书中提到的证书颁发机构在本地计算机上寻找该机构是否是被信任的,如果是被信任的则按照本地计算机上记录的证书颁发机构的公钥对证书中的指纹和指纹算法进行解密,并按照指纹算法对证书中的明文进行计算,最后将得到的指纹和证书中所带指纹进行比对,一致则证明该公司是被证书颁发机构认证安全的;

    之后C随机生成一个字串并计算其hash值,然后只将字串明文发送给S;

    S收到后计算字串hash值并以自己的私钥对该hash值进行加密,然后将其发回给C;

    C收到后以公钥进行解密得到一个hash值,和第四步得到的hash值比较,相同则表明该公司确实是证书中所提到的公司;

    确认完后C会生成一个密钥和一个对称加密算法,将其以证书中的公钥加密后发送给S;

    S收到后用自己的私钥解密得到该加密算法和密钥,以后S和C的通信就靠这个密钥和加密算法完成。至此HTTPS通信过程完成。
    —————————————————-
    ©著作权归作者所有:来自51CTO博客作者admin_init的原创作品,如需转载,请与作者联系,否则将追究法律责任
    数字证书原理及HTTPS实现过程
    https://blog.51cto.com/u_11987715/1928010