一、面试者经常回答的几种
1、https是安全的,http是不安全的。
2、https = http + ssl。
3、http传输的报文是明文,https传输的报文是密文。
二、我一般会继续问以下问题
1、报文是在什么时候加密的?加密就安全了?
2、加密解密是使用了什么算法?对称加密算法还是非对称加密算法?
三、https是如何一步步地做到安全的
1、如果是对报文加密,听过加密算法的同学,就举手说了,这个我会!!
2、在互联网环境下,如果服务端对所有的客户端通讯都使用相同的对称加密算法,也就没有安全可言!
解决办法是:每个客户端采用不同的对称加密算法~~ 服务端和客户端需要协商,应该使用哪种对称加密算法。协商过程是没有加密的,还是会被中间人拦截!
有人会说了,对这个协商过程进行对称加密就好了。仔细想下,能行得通吗?
3、如何对协商过程进行加密?
使用非对称加密算法
私钥加密后的密文,只要是公钥,都可以解密。
公钥加密后的密文,只有私钥,才可以解密。
** 私钥只有一个人有,而公钥可以发给所有的人。**
https使用非对称加密算法进行对称加密算法的协商过程。
4、协商的问题是解决了,但是要达到服务器针对每个客户端使用不同的对称加密算法,同时,我们也不能让第三者知道这个对称加密算法是什么,怎么办?
使用随机数生成对称加密算法,让服务端和客户端的每次交互都是新的加密算法。
5、客户端怎么得到非对称加密的公钥?
a、服务端将公钥发送给每一个客户端。----这个过程本身就不安全
b、服务端将公钥放到一个远程服务器,客户端请求得到。----增加了一次请求
c、使用第三方机构(数字证书签发机构CA)的公钥。
我们不能直接将服务器的公钥传递给客户端,
而是第三方机构使用它的私钥对我们的公钥进行加密后,
再传给客户端。
客户端再使用第三方机构的公钥进行解密。
6、数字证书
使用数字证书签发机构颁发的证书来保证非对称加密过程本身的安全。
CA颁发数字证书给服务端。
a、签署合同,确认支付方式
b、准备CSR,并选择确认方式
c、在线提交申请
d、确认申请颁发证书
服务端拿到证书后,我们就可以将证书配置到自己的服务器上了。
7、数字签名
分辨同一个机构下的不同证书!
类似于毕业证书的证书编号,只要拿着这个证书编号上相关机构查询,从而判断毕业证书的真伪。
证书存放在客户端,第三方机构的验证功能也放在客户端的本地,避免去远端进行校验。
最后的问题就是客户端怎么验证证书的真伪呢?
客户端根据证书的内容md5求值,得到的证书编号,与证书中的证书编号相同,则验证通过。
总结:数字签名就是证书编号。
8、SSL/TLS协议
为了让客户端与服务端安全地协商出一个对称加密算法。