网络安全之TLS/SSL

TLS/SSl

TLS/SSl 是非对称的公钥私钥结构。服务器和客户端有着自己的公私钥。
公钥用于加密数据
私钥用于解密数据
每个公钥只能由对应的私钥才能打开。在安全通信之前,服务器和客户端互换公钥。服务器使用客户端的公钥加密,客户端使用自己的私钥解密。客户端使用服务器的公钥加密。服务器使用自己的私钥解密。
可以把公钥理解成一把锁,私钥理解成开这把锁的钥匙。这就好比两人互换礼物,每人一把钥匙一把锁,两人将锁交换后,把礼物锁上,再用自己的钥匙打开。这样就算有人设法得到了礼物,也只能得到锁,没有钥匙打开礼物。

证书

TLS/SSl固然好,但是缺点在于无法确定公钥的来源者是不是目标服务器。 也就是说,公钥有可能是其他人给的。他得到了客户端或服务器的公钥后,自己也可以仿制一个服务器或客户端,虽然不能解密公钥,但是却可以充当一个中间人,他可以用锁头把炸弹锁进盒子,递给受害人。
为了解决这种问题,可以使用数字证书签名机制。
通过权威的CA机构颁发证书,客户端验证证书,即可验证服务器真伪。

网络安全之TLS/SSL

另外,使用如openssl工具可以实现自颁发证书。

生成一个RSA私钥
openssl genrsa -des3 -out dev.key 1024
生成一个CSR证书请求文件
openssl req -new -key dev.key -out dev.csr
签发证书
openssl x509 -req -days 365 -in dev.csr -signkey dev.key -out dev.crt

签发证书后,在本地安装,选择受信任的根证书颁发机构。