HTTPS
超文本传输安全协议是超文本传输协议和TLS/SSL的组合,用以提供加密通讯及对网络服务器身份的鉴定。HTTPS报文中的任何东西都被加密,包括所有报头和荷载,因此通常一个攻击者所能知道的只有在两者之间有一连接。
HTTP和安全协议(TLS/SSL)都属于应用层。安全协议运行于HTTP之下,传输层之上,为HTTP提供一个类似于TCP的套接字。安全协议接收HTTP报文后将其加密,然后将加密结果交给传输层套接字;或从传输层套接字接收报文,解密后交给上层的HTTP。
HTTPS通过数字证书进行身份认证,数字证书需向数字证书认证机构(Certificate Authority, CA)获取。浏览器需预先安装信任的CA的证书,也可手动导入(如goagent在local目录下找到ca.crt),作用是证明此CA证书中列出的用户合法拥有证书中列出的公开密钥。关于根证书(Root CA certificate),CA也有上下级,且CA都有一份证书。下级CA的证书由上级颁发,由此一直到达最高级CA,它也有证书,且由自己给自己颁发,这个证书就称为根证书。
一个到某网站的HTTPS连接可被信任,当且仅当:
- 用户相信互联网上相关的节点是值得信任的,或者本协议的加密层(TLS/SSL)不能被窃听者破坏
- 用户相信证书颁发机构仅信任合法的网站
- 用户相信他们的浏览器正确实现了HTTPS且安装了正确的证书颁发机构
- 被访问的网站提供了一个有效的证书,即证书由一个被信任的证书颁发机构签发
- 该证书正确地验证了被访问的网站
在这些信任之下,可以认为网上交易对于用户的金融账户是安全的。虽然看了这些觉得非常不安,但理论和事实同时证明目前这些信任还是没有问题的,可以放心使用HTTPS。