HTTPS 是什么
它其实就是网站的保镖版 HTTP。平常你用普通HTTP上网,你浏览器和网站服务器之间传的东西,不管是密码、聊天内容还是信用卡号,都是"裸奔"的,谁都能半路偷看或者篡改。
HTTPS 就不同了,它在你们开始传东西之前,先让浏览器和服务器互相打个招呼、对对暗号。搞明白身份无误后,它们就一起用只有它们俩懂的"密码本"把信息变成一堆乱码再传。这样即使有人半路偷看,看到的也是谁也看不懂的乱码,完全不知道你在看啥、干啥、输啥。
另外,它还有"身份证"认证那套。正经用HTTPS的网站,都得先去专门的、大家信得过的发证机关申请一个数字证书,证明"我就是我,不是假冒的"。你浏览器访问时,会先把这个"身份证"拿出来核对一下。要是身份没问题,地址栏旁边会显示个小锁标志,告诉你现在是安全连接。所以,HTTPS最主要就是解决了三个痛点:一是防止坏人偷看隐私;二是防止坏人在半路偷偷改内容;三是帮你确认这网站是真网站,不是骗子仿冒的。
臭名昭著的 "运营商劫持"
简单说,这就是你交钱用的宽带公司(移动、电信、联通这些),在你毫不知情、也没同意的情况下,偷偷在你打开网页或者手机APP时动手脚。你正刷着网页或者用着APP呢,它们会在你看的内容里面硬塞进它们想让你看的东西,最常见的就是各种烦人的弹窗广告、悬浮广告,或者强行把你的搜索转到它们合作的页面。
为什么它们能这么干呢?因为它就像是你上网必经之路的"收费站"。你从家里或手机到任何一个网站的所有数据都要经过它们控制的服务器。这个特殊位置给了它们动手脚的机会。它们可以趁信息在你电脑/手机和网站之间传输时,偷偷拦截、查看,甚至修改里面的内容,硬生生插进它们的广告或者推广链接,然后才让你看到被篡改后的页面。
这种行为最讨厌的地方在于它偷偷摸摸、强行介入,完全不顾你的意愿。它不仅严重干扰你正常上网,加载那些乱七八糟的广告拖慢网速,更关键是侵犯你的知情权和选择权,有些强行跳转的链接甚至可能不安全。好在现在很多大网站(尤其是银行、购物那些)都用了HTTPS加密,能有效防止这种中间环节的偷看和篡改,对这种劫持是有力的遏制。

"加密" 是什么
本质上,加密就是一种把信息"上锁"的操作。它用一套特定的数学规则和一把"钥匙"(专业叫密钥),把你原本看得懂的东西(比如一句话、一个文件、甚至一次网络操作),变成一堆完全看不出含义的乱码。想象一下,你把"你好"这两个字,用只有你和朋友知道的规则打乱重排,变成比如"*#G$L"这种谁都看不懂的样子,这就是加密过程。
为什么要这么做?核心目的就是保密和防篡改。比如你在网上输密码、刷银行卡、或者发私密消息,这些信息在传输或存储时,如果被人截获或偷看,原始内容就暴露了。而加密之后,即使别人拿到了这个加密结果(密文),没有正确的那把"钥匙",他们对着这堆乱码也只能干瞪眼,完全不知道原来的信息是啥。
要想把这堆乱码变回有用的信息,就得用对应的"钥匙"进行反向操作,这叫解密。这个"钥匙"特别关键,只有授权的人或系统才有。比如你登录一个加密的网站,你的浏览器和网站的服务器会安全地交换"钥匙",然后它们就能互相看懂对方发过来的加密信息了,旁边的人却无法解读。所以,加密就是保护信息安全最基本也最重要的一道防线。
在加密和解密的过程中, 往往需要一个或者多个中间的数据, 辅助进行这个过程, 这样的数据称为密 钥 (正确发音 yue 四声, 不过大家平时都读作 yao 四声) .
加密解密到如今已经发展成一个独立的学科: 密码学. 而密码学的奠基人, 也正是计算机科学的祖师爷之一, 艾伦·麦席森·图灵

另一位祖师爷冯诺依曼

如果1938年图灵答应担任冯·诺依曼的助手,无法想象这两位大佬的合作会给人类社会带来怎样的光明,但是历史就是这么戏剧,1954年6月8日早晨,图灵被管家发现死于英国曼彻斯特家中的床上,享年41岁.
HTTPS 的工作过程
既然要保证数据安全, 就需要进行 "加密". 网络传输中不再直接传输明文了, 而是加密之后的 "密文". 加密的方式有很多, 但是整体可以分成两大类: 对称加密和非对称加密
引入对称加密
这其实是最简单直接的一种加密方式。简单理解就是:加密和解密都用同一把钥匙(专业术语叫"密钥")。就像你有一把钥匙,既能锁门(加密),也能开门(解密)。你想把一段信息(比如一封信、一个文件)变成只有特定人能看懂的东西,你就用这把特定的"密钥"配合一套数学规则把它打乱成乱码(加密)。对方收到乱码后,再用一模一样的"密钥"和规则,把它变回你原来的信息(解密)。
这种方式最大的好处就是速度快、效率高。因为它背后的数学计算通常比别的加密方式(比如非对称加密)简单得多。所以当你需要加密非常大量的数据,比如要加密你电脑硬盘上的所有文件,或者网站和浏览器之间传输大量网页内容时,对称加密就显得非常有用,速度快、不卡顿。
但它也有个关键的缺点或者说挑战:如何安全地把这把共同的"密钥"交给对方? 因为既然加密解密都是用同一把密钥,那在通信开始前,你和对方都必须先安全地拥有这把密钥。如果这把钥匙在传递过程中被坏人截获了,那他就能轻易地解密你们所有加密的信息。想象一下,你配了一把家门钥匙,得怎么才能绝对安全地送到朋友手里?这就是对称加密的核心安全问题,通常需要借助其他方法(比如非对称加密)来解决"密钥配送"的问题。常见的对称加密算法有AES(现在用的最多)、DES(较老)等等。

引入非对称加密
它和对称加密最大的不同点在于,它用的是两把钥匙,一套组合:一把是公开的(公钥),一把是绝对私有的(私钥)。想象一下,公钥就像是你家专用的信箱投递口------谁都可以往里投信件(加密信息),但只有你有私人钥匙(私钥)才能打开信箱取出里面的信(解密信息)。反过来也行不通,用公钥加密的东西,公钥自己是解不开的。
它解决了对称加密那个最头疼的问题:密钥的安全配送。因为公钥是可以光明正大地给全世界看的,不需要藏着掖着。比如一个网站想接收加密信息,它就把自己的公钥发给你。你用这个公钥把你要发的敏感信息(比如密码、信用卡号)加密成一堆乱码,只有拥有对应私钥的那个网站才能解开。即使有人中途截获了加密信息和公钥,没有私钥也毫无办法。
这把私钥的角色极其关键,必须牢牢保管在主人手里,绝不外泄。它除了能解开用自己公钥加密的信息,还有一个超级能力:数字签名。主人可以用私钥对一段信息(比如一份合同、一封邮件)生成一个独一无二的"签名"。别人用主人的公钥可以验证这个签名确实是主人用私钥签的,并且能确认信息在签名后没有被篡改过。这就像盖了一个只有主人才能盖的特殊印章,证明了来源和完整性。
所以非对称加密的核心就是:利用两把匹配钥匙的数学关系,解决了安全通信中"怎么安全获得开锁工具"这个难题,并且额外提供验证身份和防篡改的能力(签名)。常见的算法就是RSA(最老牌)和ECC(椭圆曲线,效率高更省资源)。

但是接下来问题又来了: 客户端如何获取到公钥? 客户端如何确定这个公钥不是黑客伪造的?
比如黑客可以当双面间谍,假扮先服务器向客户端发消息,然后假扮服务器向客户端发消息

引入证书
简单说,证书就是一个网站或者服务在网络上的"电子身份证"。它最主要的作用就是向访问者证明"我就是我,不是冒牌货"。比如你想上某个银行的官网,证书就是银行向全世界喊话:"看,这确实是我的网站,这是我的公钥,你们要信就信它!"
这个证书里面核心包含了几样东西:持有者的身份信息(比如网站域名)、这个实体使用的公钥 (还记得非对称加密的公钥吧?)、以及一个有效期 (表明这个证不是永久有效的)。最关键的是,证书是由一个大家都(相对)信得过的第三方权威机构,也叫证书颁发机构(CA) ,用它们的私钥对这个信息组合做了一个数字签名盖了个章。
为什么要搞这个第三方盖章呢?就是为了解决信任问题。如果没有CA,网站自己给自己发一个证书说自己是谁就是谁,那骗子网站也能这么做,你根本没法分辨真假。CA在发证之前,会先(理论上)去核实申请者的真实身份。然后,当你的浏览器访问一个使用HTTPS的网站时,它会把这个网站提供的证书拿过来。
浏览器会做一系列验证:检查证书上的签名是不是某个它信任的根CA用私钥签的(这个根CA的公钥早就装在浏览器里了)、证书上的域名和你正在访问的网站域名是否一致、证书是否还在有效期内等等。只有这些都通过了,浏览器才认为这个证书有效,才会信任网站的身份并建立安全连接(比如显示那个小锁图标)。如果验证不过,它就会弹出警告。所以,证书的核心就是靠可信的第三方背书,让你能确认网站的真实身份,并把公钥安全地交到你手里,是建立网络信任关系的基础设施。

总结
HTTPS 工作过程中涉及到的密钥有三组.
第一组(非对称加密): 用于校验证书是否被篡改. 服务器持有私钥(私钥在注册证书时获得), 客户端持有公 钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥). 服务器使用这个私钥对证书的 签名进行加密. 客户端通过这个公钥解密获取到证书的签名, 从而校验证书内容是否是篡改过.
第二组(非对称加密): 用于协商生成对称加密的密钥. 服务器生成这组 私钥-公钥对, 然后通过证书把公钥 传递给客户端. 然后客户端用这个公钥给生成的对称加密的密钥加密, 传输给服务器, 服务器通过私钥解 密获取到对称加密密钥.
第三组(对称加密): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密.