http 披上了一件叫https的铠甲

话说小明最近表现特别好,公司突然找他谈心,要给涨20%工资。这让他有点摸不着头脑,想了半天只记得自己在前程无忧上投过几份简历。小明心里嘀咕,难道简历里的数据泄露了?仔细一琢磨,原来他一直用的HTTP协议特别不安全,所有请求都像是光着膀子跑步,不仅公司能查,黑客也能轻易篡改。 为了挡住这种“裸奔”的局面,安全专家们就给HTTP披上了一件叫HTTPS的铠甲。这下可好了,HTTP再不是只在应用层跑的高速公路了,而是加了一层加密通道。这个通道里的SSL和TLS就像是个保险箱,把密钥、证书和身份都锁起来,只有合法的双方才能打开。 以前那种对称加密方案确实快,只要客户端和服务器有一把共享的钥匙就行。不过这就像钥匙在自家门口挂着一样方便,一旦被偷了就麻烦大了。后来大家就想出了个办法:服务器发个公钥给所有人用,自己留着私钥;客户端先用公钥把一小段对称密钥锁好送过去,服务器再用私钥解开。 这就引出了个新问题:这把公钥是谁发的?会不会有人冒充?为了确认身份,就有了CA机构签发的证书。这个证书就像身份证一样记录着域名和有效期,最重要的是CA用自己的私钥做了签名背书。 当客户端第一次访问服务器时,服务器会把这个带着CA签名的证书发过来。客户端就用浏览器里自带的CA公钥去解密签名,再自己生成一份同样的签名副本进行核对。如果两者对上号,那就说明证书是真的;接着解开证书包拿到服务器的公钥Key1。 接下来握手就顺利了:客户端生成一个随机的对称密钥Key2,用Key1把它锁好发过去;服务器用私钥解开拿到Key2;以后所有数据都用Key2对称加密传送。这样一来,即使有黑客截获了数据也只能看到乱码。 整个过程中CA私钥的签名很难被中间人篡改,所以这种方式彻底杜绝了“中间人攻击”。HTTPS虽然比HTTP多绕了几道弯子,但却把身份验证、数据加密和完整性校验都做到了位。在现在数据泄露、诈骗这么多的时代,把网站升级成HTTPS真的是最划算的安全投资之一。