当前位置: 首页 > 科技观察

网络文章:朋友采访的https认证和加密流程

时间:2023-03-20 12:55:24 科技观察

本文转载自微信公众号《偷偷摸摸》,作者cscw。转载本文请联系SneakUp公众号。采访者:HTTPS的认证和加密过程是怎样的,如何保证内容不被篡改?朋友们:1.https是基于tcp协议的。客户端首先会向服务器发起连接建立好友:2,然后服务器将其证书返回给客户端,证书中包含公钥S.pub、颁发机构、有效期等信息.友人:4、客户端生成一个随机的对称加密密钥Z,用服务器的公钥S.pub加密后发送给服务器。友人:5、客户端和服务端用对称密钥Z加密数据,进行http通信。面试官:根证书如何保证颁发的证书安全有效?1-服务器会预先生成一个非对称加密密钥,私钥S.pri自行保管;而公钥S.pub会被发送给CA机构进行签名认证友:2-CA也会预先生成一个非对称加密密钥,其私钥C.pri用于对服务器的公钥S.pub进行签名生成CA证书friend:3-CA组织将生成的CA证书签名返回给服务器,即服务器刚才给客户端的证书friend:4-因为CA(CertificateAuthority)比较权威,很多浏览器都会内置一个包含其公钥(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,springclould系统中的ribbon和feign面试官:有没有遇到过使用https证书的问题,如果有,是什么问题?朋友:当然,有一次使用apache-httpClient加载自定义证书(无CA认证),测试服务器抛出证书不可信任,但是本地运行没有问题。朋友:原因是证书是在本地生成的,当时已经默认添加到根证书中了。下载了,但是测试服务器jre的证书根目录(/lib/security/cacerts)没有这个证书,放在项目资源下的证书不能不生效。面试官:哦,你是怎么解决的?网友:三解。1-重写TrustManager,无条件信任证书;2-将证书添加到jre的根证书目录;3-通过CA认证面试官:网络数据抓取不懂的朋友:可以使用tcpdump命令抓取linux系统包中的tcp请求数据,抓取的数据输出到文件;然后可以用wireshark软件在window中加载tcp数据文件,可以提供接口分析面试官:讲的还不错,那我们换个话题,说说mysql事务....朋友:对,我也是稍微了解一些事务...图片参考文章说明HTTPS建立过程[1]什么是摘要、签名和数字证书?[2]什么是数字签名?[3]参考[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