1、什么是https?什么是https证书?什么是TLS?
答:HTTPS是一种通过计算机网络进行安全通信的传输协议,经由HTTP进行通信,利用SSL/TLS建立全信道,加密数据包。HTTPS使用的主要目的是提供对网站服务器的身份认证,同时保护交换数据的隐私与完整性。
答:HTTPS证书,又称SSL证书,是一种数字证书。由CA(Certificate Authority证书颁发机构)颁发。
答:TLS是传输层加密协议。
2、根CA从哪里来?
答:每个浏览器都有根证书库,所以大多数操作系统的根CA证书是默认安装的。
- 为什么需要CA机构颁发证书?
答:防止”中间人“攻击,同时可以为网站提供身份证明。
3、数字证书是如何生成的?
答:先hash再加密。网站把自己的公钥和其他信息提供给CA,CA会对这些信息和公钥进行哈希运算得到一串更短的字符(提高加解密速度,非对称加密效率较差),然后用CA自己的私钥对这串哈希字符进行加密,就得到“数字签名”了。
所以虽然“数字证书”的网站信息都是明文的,但是核心就在于CA的“数字签名”了。因为加密的私钥只有CA知道。
4、浏览器如何保证网站发来的数字证书的合法性?
答:
a、公钥验签。用CA公钥给“数字证书”里的“数字签名”进行解密,得到一串哈希字符。
然后对“数字证书”的内容进行同样的哈希运算,也得到一串哈希字符。
然后比较两串哈希字符串是否一致。如果一致,说明“数字证书”是靠谱的,没有被篡改。
b、域名对比。浏览器还会对比证书里的“主题背景”的CN公用名,或者“扩展程序”里的“证书主题背景的备用名称”,是否和域名一致,一致那就证明这份证书是该网站的。
c、有效期检查。浏览器还会检查证书的有效期是否过期。
以上第3点和第4点,就是典型的 CA私钥签名,公钥验签。
5、https用的是对称加密还是非对称加密?
答:HTTPS 在内容传输的加密上使用的是对称加密,非对称加密只作用在证书验证阶段。
6、为什么数据传输是用对称加密的?
第一:非对称加密的加解密效率是非常低的,而 http 的应用场景中通常端与端之间存在大量的交互,非对称加密的效率是无法接受的。
第二:在 HTTPS 的场景中只有服务端保存了私钥,一对公私钥只能实现单向的加解密,所以HTTPS 中内容传输加密采取的是对称加密,而不是非对称加密。
7、 使用https会被抓包吗?
答:会被抓包,HTTPS 只防止用户在不知情的情况下通信被监听,如果用户主动授信,是可以构建“中间人”网络,代理软件可以对传输内容进行解密。
8、HTTPS必须在每次请求中都要先在SSL/TLS层进行握手传输密钥吗?
答:显然每次请求都经历一次密钥传输过程非常耗时,那怎么达到只传输一次呢?靠“session”。
服务器会为每个浏览器(或客户端软件)维护一个session ID,在TSL握手阶段传给浏览器,浏览器生成好密钥传给服务器后,服务器会把该密钥存到相应的session ID下,之后浏览器每次请求都会携带session ID,服务器会根据session ID找到相应的密钥并进行解密加密操作,这样就不必要每次重新制作、传输密钥了!
9、https 总结:
① 证书验证阶段:
1)浏览器发起 HTTPS 请求;
2)服务端返回 HTTPS 证书;
3)客户端验证证书是否合法,如果不合法则提示告警。
② 数据传输阶段:
1)当证书验证合法后,在本地生成随机数;
2)通过公钥加密随机数,并把加密后的随机数传输到服务端;
3)服务端通过私钥对随机数进行解密;
4)服务端通过客户端传入的随机数构造对称加密算法,对返回结果内容进行加密后传输。