一、现实例子
我讲一个老王和翠花的故事,在他们很小的时候,老王还是小王,翠花还是小花,他们青梅竹马,两小无猜......后来,悲剧了,翠花家搬到了大河对岸的村子里。
多年后,小王长成了老王,他十分想念翠花,有一天老王隔河大喊:"喂,翠花,你好吗!",老王在请求沟通,专业术语叫"请求"。
翠花听到老王的声音,隔河大声回应:"我很好,你也好吧?"
以上,翠花在回应老王在请求沟通,专业术语叫"响应"。
由于二人的通话没有加密,所以,二人的喊话,河两岸的路人都能听到,这多不好意思呀!私密话都不敢说,总不能天天问好吧?
再者,多年不见了,也可能有人会模仿翠花回应老王,也可能老张会假装老王向翠花发出请求。
所以,二人需要通过书信、打电话等方式对他们的对话内容进行加密,通过身份认证(私人手机号码,身份证等)确定对方真实身份再进行进一步的沟通交流。
还有,需要对其通话内容完整性进行保护,比如不能将翠花这一句"我很好,你也好吧?"传达的不完整,例如传达为"我很你吧"。这就更悲剧了!
个人身份证由国家公安机关颁发,个人手机号码由电信部门进行实名认证后分配后给用户使用。通过以上方法,老王可以和翠花相互验证对方是不是当年的小五和小花。
二、网民老王与翠花公司的网站
类似的,网民老王通过浏览器访问翠花公司网站服务器时,为防止有酸菜公司、罂粟花公司假冒翠花公司公司建立假冒站点(或钓鱼网站)欺骗网民老王,需要可信的CA机构颁发网站SSL证书以证明网站的确是翠花公司的。从更全面的安全角度出发,在一些高安全场景下,翠花公司也可能需要通过TLS客户端证书等技术手段进一步验证来访者是否为老王真实身份。
这里说的可信的CA机构类似于公安部门,网站证书相当于个人身份证,目的是为了证明网站的身份。与公安部门强调公民必须办理身份证不同的是,翠花公司需要向CA机构提交自身证明材料,经CA机构核实后才给翠花公司颁发证书,认证和提供证书服务是CA机构的收费服务。
所以,网站SSL证书主要提供数据加密传输、身份验证、数据完整性保护等作用。
三、翠花网站SSL证书的申请过程
翠花申请SSL证书的标准流程如下:
生成(1)证书签名请求(CSR)文件:在翠花公司服务器上使用工具生成一个包含翠花公司网站域名、翠花公司信息等的CSR文件。此过程也会同时生成一个(2)私钥文件,私钥必须严格保密。
向CA提交申请:翠花公司将(1)证书签名请求(CSR)文件提交给一家CA机构,并根据要求提供相应的验证材料(营业执照、法人身份证等)。
CA审核验证:CA机构会根据验证域名所有权、审核企业营业执照或进行更严格的第三方核查。
颁发与安装证书:验证通过后,CA会向翠花公司颁发(3)SSL证书。翠花公司需要将(2)私钥文件以及(3)SSL证书部署到公司网站服务器上,并配置Web服务器以启用HTTPS。
在证书申请流程中,最基本且必需的文件是这三个。但在证书颁发后的部署和运行阶段,需要长期保密保管并在服务器上配置的核心文件是私钥文件和SSL证书文件。"
四、SSL证书的技术原理
技术原理为通过握手协议、记录协议、警报协议3个子协议分工合作,在不可信的网络环境中为客户端和服务器之间建立了一条可信的、加密的、防篡改的安全通道。
(一)握手协议
通过握手协议完成服务器身份认证并获取到服务器公钥,这正是SSL/TLS握手阶段最核心的2个成果。
1.服务器发送证书:
服务器将其SSL证书(通常是一个证书链,包含服务器证书和中间CA证书)发送给客户端。
核心作用:这个证书中包含了服务器的公钥,以及由CA机构签名的服务器身份信息。
2.客户端验证证书并获取公钥:
客户端(如浏览器)收到证书后,会执行一套严格的验证流程,这正是身份认证的关键:
信任链验证:检查证书链是否可追溯至一个客户端内置的、受信任的根证书颁发机构(CA)。这确保了证书的签发方是可信的。
信息验证:检查证书是否在有效期内,以及证书中声明的域名是否与正在访问的网站域名完全匹配。
核心作用:一旦验证通过,客户端就确信:"我手里的这个公钥,确实属于我正要通信的那个真实的服务器。" 至此,服务器身份认证完成,客户端也安全地获取了服务器的公钥。
3.客户端使用公钥加密信息:
认证通过后,客户端会生成一个用于后续对称加密的预备主密钥。
然后,它使用从服务器证书中刚刚获取并验证过的公钥,对这个预备主密钥进行加密,并发送给服务器。
核心作用:由于只有拥有对应私钥的服务器才能解密此信息,这个过程确保了预备主密钥的安全传输,实现了安全的密钥交换。
简单的说,握手协议的过程可以类比为一个安全的"介绍信"机制:
认证:CA机构颁发的证书就是服务器的"介绍信"。客户端通过验证"介绍信"的真伪(证书签名)和内容(域名、有效期)来确认服务器的身份。
获取公钥:这张被验证为真实的"介绍信"上,就清晰地写着服务器的"公开联系方式"(公钥)。客户端可以放心地使用这个公钥来加密只有服务器才能解密的信息。
在握手阶段,密钥交换使用了非对称加密技术:即客户端使用服务器的公钥加密'预备主密钥',服务器使用自己的私钥解密获取它。
预备主密钥是生成会话密钥的"种子"和核心输入。客户端和服务器使用预备主密钥、结合双方交换的随机数,通过一个标准的密钥派生函数,最终计算出用于记录协议中对称加密和完整性验证的真正会话密钥。
(二)记录协议
握手成功后,就由记录协议负责"包装"和"运输"所有上层应用数据(如HTTP)。它接收来自应用层的数据,进行分片、压缩、添加消息认证码,然后使用握手阶段商定的会话密钥进行对称加密,最后添加头部信息,通过TCP连接传输。接收方则执行反向的解密、验证、重组等操作。
加密技术:使用了对称加密安全交换技术。即客户端和服务器之间所有往来的请求和响应数据,都使用上一步生成的同一个会话密钥进行加密和解密。
(三)警报协议
这是安全连接的"预警系统"。当通信的任何一方检测到错误(如证书无效、消息验证失败、连接需要关闭)时,就会通过警报协议向对方发送一条警报消息。如果是致命错误,双方会立即终止SSL连接,防止不安全的数据传输。
五、SSL/TLS的"混合加密"机制
我们今天常说的"SSL",其实指的是它的现代化身"TLS"。
非对称加密:安全性高,但计算非常复杂,速度慢。用于SSL握手协议阶段。
对称加密:计算简单,速度极快,比非对称加密快上百甚至上千倍。用于SSL记录协议阶段。
如果SSL全程使用非对称加密,虽然安全,但会带来巨大的计算开销,导致网站访问速度极慢。
事实上, SSL/TLS使用"混合加密"机制,完美地结合了二者的优点:用安全的非对称加密来交换密钥,再用高效的对称加密来处理海量的实际数据。