本文转载自微信公众号「潜行前行」,作者cscw。请联系潜行微信官方账号转载本文。
面试官:HTTPS其认证加密过程是什么,如何确保内容不被篡改
- 朋友:1,https是基于tcp如果达成协议,客户端将首先与服务器建立链接
- 朋友:2,然后服务端将其证书返回给客户端,包括公钥S.pub、发行机构和有效期等信息
- 朋友:3.通过浏览器内置的根证书可以获得证书(包括C.pub)验证其合法性
- 朋友:4.客户端生成随机对称加密密钥Z,公钥通过服务端S.pub向服务端加密
- 朋友:5.客户端和服务端通过对称钥匙Z加密数据http通信
面试官:如何保证签发的证书安全有效?
- 朋友:1-服务器将提前生成非对称加密钥S.pri保留自己;公钥S.pub则发给CA机构进行签名认证
- 朋友:2-CA它还将提前生成一个不对称的加密钥C.pri公钥用于服务器S.pub签名生成CA证书
- 朋友:3-CA该机构将生成签名CA证书返回给服务器,即刚才服务端给客户端的证书
- 朋友:4-因为CA(证书颁发机构)更权威,所以很多浏览器会内置其公钥(C.pub)证书称为根证书。然后,根证书可以用来验证颁发证书的合法性
面试官:如果发生无限套娃,根证被篡改怎么办?
- 朋友:无解,这是需要的CA根证准确,不手动强制修改本地根证就可以了,因为没有原根证认证的证书不能自动加入根证
面试官:你说得有点快。
- 朋友:https加密过程
- 朋友:服务证通过CA机构签名认证的过程如下
面试官:你前面说过CA机构将用密钥签名、签名和加密服务器的公钥。你怎么理解?
- 朋友:使用非对称加密算法时,签名用于表示私钥的加密过程
- 朋友:如果用公钥加密数据,那就是加密
- 朋友:相反,用私钥加密数据被称为签名图片
面试官:那CA什么是证书?
- 朋友:CA该证书旨在确保服务端的公钥准确,未修改
- 朋友:证书通常包含这些内容(1) 服务端公钥;(2) 证书发行人(CA)证书数字签名;(3) 证书使用的签名算法;(4) 其他信息,如证书发布机构、有效期、所有者信息等。
面试官:你说的HTTPS使用加密算法时,加密算法哪些类型?
- 朋友:加密算法分为三类:单向加密、对称加密算法和非对称加密算法
面试官:对称加密和非对称加密有什么区别吗?
- 朋友:当使用对称加密时,加密和解密使用相同的密钥;非对称加密是两个密钥,公钥加密需要私钥解密,私钥加密需要公钥解密。私钥不能加密,私钥解密
面试官:MD5、SHA、Base64和RSA什么类型的算法,对称还是不对称?
- 朋友:MD5、SHA,摘要算法可分为单向加密算法,其计算的摘要信息不可逆转地恢复到原始数据
- 朋友:RSA属于非对称加密算法
- 朋友:而Base64它通常被称为数据编码,而不是加密算法
面试官:用过什么?HTTP客户端工具
- 朋友:apache的CloseableHttpClient、jdk9的httpClient和spring clould体系里的ribbon、feign
面试官:你有用过吗?https证书问题,如果有,是什么问题呢?
- 朋友:当然,有一次使用apache-httpClient加载自定义证书(未通过)CA认证),试验服抛出证书不能信任,但本地运行没有问题
- 朋友:原因是证书是在当地生成的当时默认加入了根证书,测试服jre的根证书目录(/lib/security/cacerts)没有这个证书,放在项目里resource证书不能生效
面试官:哦,你是怎么解决的?
- 朋友:三种解决方案。1-重写TrustManager,无条件信任证书;2-把证书加到jre根证书目录;3-通过CA认证
面试官:网络数据抓包不懂
- 朋友:在linux可使用系统tcpdump命令对tcp请求数据抓取包,将抓取的数据输出到文件中;然后可以window使用wireshark软件加载tcp它可以提供界面分析
面试官:讲得还不错,那下面我们换个话题,聊聊mysql事务....
- 朋友:是的,我对事务有一点了解...图片
参考文章
- 图解HTTPS[1]
- 什么是签名和数字证书?
- 什么是数字签名?
Reference
[1]图解HTTPS建立过程:
https://www.cnblogs.com/softidea/p/6958394.html
[2]摘要、签名与数字证书都是什么?:
https://www.jianshu.com/p/b2774634041a
[3]什么是数字签名?
http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html