最近项目有个需求,TCP服务器实现基于证书通信加密,之前没做过,花了一些时间调研,今天整理下。
SSL(Secure Sockets Layer 安全套接字协议)
简而言之就是非对称加密算法
私钥自己持有,公钥发给对方,对方在发送信息的时候使用公钥进行加密数据,当接收到数据之后使用私钥进行解密。
数字证书也就是你的身份证
CA 也叫证书颁发中心,可以类比为公安局,公安局可以对你发放身份证。
拿着你的身份证去CA验证。
先预想一个场景,如果有10台计算机,10台计算机需要记住相互之间的公钥(publickey),
那有100台计算机,1000台呢? 他们之间都需要记住相互的公钥吗?
答案肯定是不能,那如何解决这些问题呢?
其实很简单,有个第三方中介机构。记住了这些1000台的公钥相对应的资料。
这种机构称为认证机构(Certification Authority, CA)。
CA开一个证明这是计算机A的信息,发给B计算机。
B计算机通过CA的证明,可以确认这是A计算机的信息。
◆ 如何生成证书?
A计算机将自己的【公钥A】给CA
CA用自己的【私钥CA】给【公钥A】加密,生成【数字签