从事web开发的程序员应该没有人没过http和https这两个词,就算不是很熟悉也应该会知道https比http安全。https是加密的也将成为主流未来将会取代http等。
稍微了解一点的还会知道https和http最大的区别就是前者在http协议的基础上套了一层SSL/TLS协议,用SSL/TLS协议加密http报文后再传输。今天我们就来谈谈SSL/TLS协议的核心——证书。
SSL/TLS简单科普
SSL(安全套接层,英语:Secure Sockets Layer,缩写:SSL),进化版叫TLS(传输层安全性协议 英语:Transport Layer Security,缩写:TLS),这两个统称SSL/TLS协议,是一种非对称加密协议,被广泛地用于Web浏览器与服务器之间的身份认证和加密数据传输。
简单来说,这个协议在web中的应用原理就是客户端(如:浏览器)向服务器传输HTTP报文前会先向服务器发起请求说:
“我要用SSL协议和你通信了!”
服务器收到请求后知道客户端要用SSL协议通信并将自己的公钥和证书发送回给客户端,客户端收到服务器发回的证书和公钥,验证证书合法后用服务器给的公钥加密http报文,再传输给服务器。
这个过程和TCP的三次握手很像,事实上这个过程就叫SSL握手。握手完毕后客户端就用服务器的公钥加密HTTP request的报文传给服务器,服务器用私钥解密收到的HTTP request报文,处理完业务逻辑后用私钥加密HTTP response