原理网上都有,我这里写点干货。用SSL通信的本质是啥?本质就是客户端拿着认真机关的证书 ca.crt 去认证对方网站到底是不是你要访问的。
为啥会这样?因为有人会写一个假的网站啊。人家可以写一个假的页面然后把你的流量骗过去(及流量劫持)。然后你在这个假的网站上输入了用户名密码之后就等着信息被滥用吧。
为了避免这样的情况,所以才有SSL这个工具。客户端以后每次访问一个重要的网站时就要拿着发证机关(Cerficate Authority)的证书和对方连接的时候验证一下。咋验证的呢?你连接的时候对方也有要给证书,这个证书也是CA发给他们的,里面的内容进行了加密,只要拿CA发给客户的那个证书对接一些就知道对面网站的那个证书是不是真的。这就是SSL的基本逻辑。当然,还有一个就是通信的过程也是加密了的,这样就不太容易被窃听的人看明白(即中间人攻击)。那个你大概知道一下就OK。
所以SSL等于解决了两个问题,1 流量劫持 2 中间人攻击。
把基本逻辑搞定之后就可以干活了:
以下内容是在linux命令行里完成的:
一 、 生成CA证书
首先要明确一下,互联网上那些大型网站的https都会是有一些专门的CA机构给他们做认证。我们这里是做实验,所以自己做CA 然后自己给自己认证。所以我们先生成一个CA证书,客户端访问服务器时就是拿着这个玩意来和服务器做认证的。
# 1.先创建 CA 私钥,这个是用来生成ca.crt用的
$ openssl genrsa -out ca.key 2048