如何启用https以及https的优势(https原理解析)
如何启用https以及https的优势(https原理解析)after a few days...赵云:行,那咱试试。花花:赵云,来来来,上次的方案不太好哦。我用同样的方式给辅助瑶妹也发了个密钥,结果她游走来游走去把密钥给弄丢了。还有那个小鲁班,逃跑的过程中秘钥竟然被对手复制了,对方就能窃取我们的消息,结果导致我们团灭啊。另外我还得保存你们每个人的密钥,好麻烦啊,我也可能弄丢呀。对称加密密钥的管理是个让人头疼的事。赵云:那咋办哩?花花:咱用非对称加密(比如RSA)看看效果,我这提前生成一对公私钥。你每次发消息前来我这拿下公钥,然后用公钥加密,我这边可以用私钥解密。当然,我给你发消息用私钥加密,你用公钥也可以解密。非对称加密(比如RSA)底层实现是基于欧拉定理,安全性是毋庸置疑的,同时我也不用管理那么多密钥了,你我都方便了。
赵云:花花,我要给你发消息,内容为'发起进攻',且不能被别人知道哈,更不能被别人篡改,应该怎么发呢?
花花:我给你个密钥,你发消息前用密钥加下密,然后发密文给我,我收到消息后用同样的密钥解密出来就行了。这也就是对称加密 由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。
赵云:好的,这个听上去可行,咱就这样干吧。
还没过几天花花受不了,急忙找到赵云。
花花:赵云,来来来,上次的方案不太好哦。我用同样的方式给辅助瑶妹也发了个密钥,结果她游走来游走去把密钥给弄丢了。还有那个小鲁班,逃跑的过程中秘钥竟然被对手复制了,对方就能窃取我们的消息,结果导致我们团灭啊。另外我还得保存你们每个人的密钥,好麻烦啊,我也可能弄丢呀。对称加密密钥的管理是个让人头疼的事。
赵云:那咋办哩?
花花:咱用非对称加密(比如RSA)看看效果,我这提前生成一对公私钥。你每次发消息前来我这拿下公钥,然后用公钥加密,我这边可以用私钥解密。当然,我给你发消息用私钥加密,你用公钥也可以解密。非对称加密(比如RSA)底层实现是基于欧拉定理,安全性是毋庸置疑的,同时我也不用管理那么多密钥了,你我都方便了。
赵云:行,那咱试试。
after a few days...
赵云:花花啊,这几天我打野发育太慢啦,和你互动每次用非对称加密好费时间呀,另外,你给我发的消息,法师王昭君咋知道的啦,我和她用的公钥是不是一样的啊。
花花:你说的没错,你们用的公钥是一样的,另外非对称加密相对于对称加密是要慢不少。(思考中...)这样吧,这两种加密方式咱们结合着用吧。你也不用每次发消息都来拿公钥,刚开局的时候你来我这拿到公钥,然后你自己随机生成一个对称密钥,用我给你的公钥加密你的对称密钥传给我,这样我们两就有相同对称密钥,后面就用这个密钥加密传输的消息。一局对战结束后,就废弃这个对称密钥。这样你不用一直存着固定的密钥,另外你们每个人生成的密钥也不一样。这样既保证了安全又保证的效率。
赵云:花花,你的方案香啊,发育与配合两不误呀!刚拿个4杀,哈哈...
After a few months...
花花:赵云 刚才我发的消息是撤退呀,你咋上去了啊,我们再回来救你,你已挂啦,然后我们也跑不了了,团灭啦!!!
赵云:啊,可是我收到的消息是发起进攻啊,我还正生气呢,以为你卖我呢!
花花:看来咱消息被窃取篡改了。
赵云:那是咋被窃取的呢?
花花:我们的密钥都被代理了,额,我想到解决方案了。走,咱去找狄大人(ca机构)去。
狄大人:你们算是找对人了。这样,花花先在我这生成一个凭证(数字证书),包括她的公钥和地址(域名)。数字证书中有一个经过hash算法的签名,这个签名用我的私钥加密。赵云请求花花时,花花把把数字证书传给他。
赵云:那我咋解密啊?
狄大人:你放心,在你们身上早就内置了我放的公钥(终端内置了一些主流的CA机构证书,证书内包括公钥),拿着我的公钥去解密就可以啦。
赵云:那中间人也可以代理你呀?
狄大人:不不不,他代理不了,你解密完成后,对比下证书的地址和你请求的地址(域名)是不是一致的,因为证书上地址是唯一的,只要地址不一样,那就是不可信任的。另外可以根据解密出来的hash算法验证签名是否一样。不一样就是篡改过,当然没有我的私钥,即使改了你们也不认识,也就不可信任。
花花:那像fiddler charles是怎么实现https信息抓取的呢?
狄大人:他们也会让你们同意安装他们的证书,信任他们,也就是你们自己同意让人家代理的。所以https也不是绝对的安全,如果用户不懂,被诱导安装不安全的证书,信息一样可以被窃取篡改。下图是https整体流程图。
花花:明白了。下面我来生成个证书吧,看看自签证书具体是怎么做的。
服务器端证书
1.生成花花的私钥openssl genrsa -des3 -out c:/dev/server.key
2.由私钥创建待签名证书 openssl.exe req -new -key c:/dev/server.key -out c:/dev/pub.csr
自建CA
1.创建CA私钥
openssl.exe genrsa -out c:/dev/myca.key 2048
2.生成CA待签名证书
openssl.exe req -new -key c:/dev/myca.key -out c:/dev/myca.csr
3.生成CA根证书
openssl.exe x509 -req -in c:/dev/myca.csr -extensions v3_ca -signkey c:/dev/myca.key -out myca.crt
4.对服务器证书签名
openssl x509 -days 365 -req -in c:/dev/pub.csr -extensions v3_req -CAkey c:/dev/myca.key -CA c:/dev/myca.crt -CAcreateserial -out c:/dev/server.crt
免费签名
https://freessl.cn