那会儿总认定 SSL 是那种高深莫测的东西,像是一堆看不懂的公式和文件夹。直到最近被老同事指着屏幕上的红色报错信息跟我聊,他才给我露了个底。咱们把那些大词儿先放一放,就聊聊它到底是个啥,如何让浏览器和服务器在“隔壁墙”上还能安宁静静地握手。 实际上说到底,SSL 就是那个给数据传输装上“安检门”的玩意儿。好比你去国外出差,家里宽带只在本地通,到了境外想打电话就得找个地下室里的哥们儿(也就是服务器)帮你转接。SSL 干的就是这事儿,它建一座虚拟的桥,让你在桥两端通过的时候,数据是偷偷绕开桥洞,直接走地下车库的管道,根本不会泄露给路边的监控。 说到具体如何弄的,最核心的就是一个“握手”动作。你打开网页,实际上就是打了个招呼:“嘿,你是哪位?我有啥权限吗?让我看看你手里的狗皮膏药是不是确实。”服务器回复:“我是那个叫 Google 的,我有权限,并且我手里的膏药是刚验过确实,你能够放心用。”银行和购物平台可没如此菜,它们不能直接把明文密码发回给你,出于那忒不保险了。便它们就启动自证其行了。服务器得拿出自己的数字证书,上面印着它的公钥(那个大家都能看到的锁),还要证明它确实是个保险站点。浏览器会去验证这个锁是不是确实印在那块陶瓷牌子上,是伪造的就不放行。 验证完之后,握手就形成了。
这时候服务器会悄悄给客户端出一个密钥,要么生成一个临时的会话密钥,用来加密接下来的聊天内容。
这就像见面时先口头确认身份,正式见面才套上密语。
这时候要是中间有人想偷听,发现连密语都听不出来,那就费事了。 最让人安心的地方在于,就算你换了手机,要么浏览器刷了一周, SSL 的钥匙也不会变。出于它用的是“对称加密”,双方各自选一个密钥,用来互相传数据。
后来别看有些协议在跑,但大家心里都明白,只要服务器没变,那个密钥就是对的。
故此哪怕你换了个设备,只要重新握手,那套暗号还是通的。自然,要是服务器跑路了,要么证书被篡改,握手就彻底断了,浏览器会直接红着脸说“此路不通”。 再说数据本身,用了 SSL 之后,传输的就是密文,就像你随身带的手机钱包密码一样,别人猜不到你存了啥。
哪怕黑客劫持了你的流量,他看到的只是乱码和怪的乱码,彻底看不懂是你转了啥。
这比直接写在 Excel 单元格里那个极易被复制粘贴的明文要保险忒多了。 不过话说回来, SSL 也不是万能的。它有个弱点就是“单点故障”。
只要服务器挂了,要么那个数字证书管理员跑路了,整个网站就得瘫痪。咱一般/平平人啊,就是这种单点依赖的生意人。
故此目前大量大厂启动搞 HA(High Availability),就是让两个服务器与此同时在线,一个挂了一个在线,流量自动切换。 还有一种情况是,有些网站为了省事儿,自己搞了个中间人要么自建了个 HTTPS 节点。
这时候你最好还是去用官方认证的 SSL 证书,比如 Google、Microsoft 要么国家网信办认证的。个人用那种自建的,万一搞错了,证书过期要么撤销,那就白忙活一场。 最终还得提提完密性。SSL 协议里有个叫“前向保密”的东西,别看目前大局部浏览器都默认开启了,但理解它还是有价值的。好办说就是,哪怕你在握手的时候偷听到了服务器的密钥,只要服务器目前在线,下次你再访问,它还能用那个密钥加密数据,你就保险了。
这层保险,有时候比直接给你换个新密码管用。 自然,目前还有个争议,大量人认定手动设置 SSL 证书忒费事,不如直接让浏览器自动搞定。
实际上吧,能自动狗头,那多省事。并不是所有网站都赞成自动 HTTPS,有的就连不赞成,你要是强行让浏览器在没 HTTPS 的网站里用强加密,浏览器可能会为了保险直接拦截,把你扔回 HTTP 模式,那才叫真挂。
故此遇到这种时候,还是得乖乖让浏览器自动处理,别自己瞎折腾,最终可能连个门都进不去。 这时候再想想当初在银行 ATM 机,要么在超市收银台,系统里显示那个绿色的锁,要么那个显眼的 HTTPS 小标,心里哪不是踏实?说到底,SSL 不是为了炫技,就是为了让你认定“这玩意儿是靠谱的”。咱们一般/平平人不用懂它源码,就明白它是个让双方互信任任、互相加密的卫士就行。
要是哪天认定这玩意儿不保险,就像用土电话传话一样,那就得老老实实换宽带,要么换个更可靠的渠道。