经典面试题21 - HTTPS 和 SSL证书原理

96
豆志昂扬
0.4 2017.08.18 18:14* 字数 1131

问题

阐述HTTPS和SSL证书的原理。

解答

HTTPS (Hyper Text Transfer Protocol Secure) 对比HTTP而言,数据传输更安全,通常用来传输私密性的数据,如在线交易/订单处理/银行数据等,不过随着安全意识的普及,非传统安全领域的网站也在转向HTTPS。如苹果要求App Store内的应用都要支持HTTPS。

HTTPS 通过安全协议如SSL/TLS 来保证数据传输, SSL和TLS都是基于非对称加密算法,而RSA算法是非对称加密算法中的佼佼者。

RSA的公钥和私钥是互相对应的。RSA会生成两个密钥,持有者可以把任何一个用于公钥,另一个就是私钥。顾名思义,私钥会被严密保管,除了拥有者以外禁止其他角色接触,如在一个网站/远程服务商内,私钥妥善存储在服务器端。任何被公钥加密的东西只能被私钥解密,反过来任何被私钥加密的东西也只能被公钥解密

私钥和密钥叠加使用,从而达到双方之间秘密通信,最终实现身份验证和秘密通信

  • 私钥加密公钥解密,能证明“私钥拥有者” 的唯一身份,这就是签名。
  • 公钥加密私钥解密,确保发送的信息,只能被“私钥拥有者” 接收,从而实现安全传输

假设用私钥加密,来传递数据,因为可能有多个公钥持有者,从而失去对信息保护的目的,这是不允许的。

另外通过签名还可以校验数据完整性,发送者把传输信息的原文做一次哈希,然后用私钥加密哈希作为签名,并一起发布出去。当公钥持有者接收数据后,可以利用持有的公钥解密签名,如果解密成功,并且解密出来的哈希值确实和数据原文一致,那么就证明了数据内容的完整性。

SSL 证书
在实现HTTPS过程中,SSL证书的作用是不可或缺的。

具体的看看SSL证书工作的过程:


  • 当浏览器或服务器尝试连接支持支持SSL的网络服务器时,浏览器或服务器会要求网络服务器表明自己的身份。
  • 网络服务器发送一份自身持有的SSL证书给浏览器或服务器,浏览器或服务器根据一定的规则(和本地存储的CA根证书列表对比) 判断是否信任远程服务,如果信任,则发送一份消息给远程服务器, 否则中断继续连接。
  • 网络服务器接收到消息后,发送一份包含数字签名的确认信息,开始建立SSL加密的会话。
  • 会话建立后,加密的数据顺畅地在客户端和网络服务器之间传递。

当用户在使用HTTPS的网页时,网站会在开始时发送SSL证书到浏览器,证书内包含建立安全连接的公钥,浏览器和网站以此为基础开始"SSL 握手", 握手的过程中产生共用的密钥,这样安全连接在用户和网站之间就建立起来了。

当建立HTTPS使用可信任的证书时,浏览器会在地址栏显示挂锁标志, 地址栏会变为绿色如果网站安装了Extended Validation Certificate, 用户看到这个颜色会感到"绿坝"在保护着他。

SSL证书通常由权威的证书组织签发,浏览器,操作系统和移动设备里会维护一组受信任的CA根证书, 如果被访问网站返回的证书不被信任,浏览器将会显示不予信任的警告信息,而带来用户流失,因为用户缺少安全感。

更多

经典面试100题 - 持续更新中
获取更多内容请关注微信公众号豆志昂扬:

  • 直接添加公众号豆志昂扬
  • 微信扫描下图二维码;
日记本
Web note ad 2