Vega做代理访问https网站的注意事项
证书用到的算法最主要的是非对称加密,非对称加密主要有公钥和私钥
公钥加密的内容只能用私钥去解密
对称加密不一样,你用这个密码加密,你也用这个密码解密
例如压缩文件的加密与解密都是要用同一个密码
公私钥是由一次数学计算产生的一对密钥对,一个称为公钥,一个称为私钥
公钥是扔出来给所有人看,所有人看到都没关系,但是经过公钥加密的内容,回传给服务器,只有服务器用自己的私钥才能解密
在公私钥加密体系里,私钥的安全性是保障安全的根本,私钥一旦泄露,整个安全体系就没有安全性可言
客户端访问https服务器,客户端发出请求,服务器第一次返回的不是页面,而是一张公钥证书,客户端拿到公钥以后,会在本地随机生成一个对称密钥,这个对称密钥是用来加密后来通信过程中的数据部分
所有的数据都必须要通过这个对称密钥来加密
对称加密加密解密都是同一个密钥,服务器也要有相同的对称密钥才能解密客户端发来的内容
如果直接以明文的方式将密钥发给服务器,则很容易被人嗅探的,整个传输过程就没有加密可言
因此整个传输过程的关键是如何将对称密钥传到服务器那里,一般客户端会用服务器发过来的公钥对对称密钥进行加密
发给服务器,服务器收到后会用自己的私钥来解密,这样双方都拿到这个对称密钥,后续通信过程中数据的加密解密都是用这个对称密钥,非对称密钥只是在首次通信时实现对称密钥的交换时用到
在具体数据的传输过程中,我们还要通过哈希值来对数据的完整性做校验,假如有人窃取了数据,即使你拿到加密的对称密钥
对内容进行修改,还是可以通过哈希校验来发现数据已被篡改,篡改的数据在服务器端是被拒绝接受的
虽然在访问速度上,https要比http慢,但随着https的传输过程的不断优化,在用户体验上已经和http没有什么差别了
我们会遇到这样一种情况,在访问一些网站时,浏览器会提示不安全,并且提示你不要访问,而一些大的网站且不会出现此类问题】
这是因为证书的问题,在于证书是由谁生成的,从哪来的。
像一些大的网站,证书都不是自己随便生成一个,服务器可以创建自己的所谓的自签名的证书,就是自己给自己发一个证书
但是这种自签名的证书都没有第三方对其的认可
这些大网站的证书都是由证书颁发机构CA颁发的,客户端浏览器默认已经信任了这些证书颁发机构了,它是通过安装这些证书颁发机构颁发的根证书来实现对这些证书的默认的信任
这些证书颁发机构的根证书里面都含有这些证书颁发机构的公钥,安装了这些根证书就相当于我们这台机器有了他们的公钥了
当这些网站它们向这些证书颁发机构申请证书时,申请下来的证书都是由CA所签发的,进行签名的
什么是签名?
签名就是给你这个证书,然后对你整张证书的内容进行哈希计算,生成一个哈希值,然后再把这个哈希值用根颁发机构的证书的私钥进行加密,生成一堆数据
然后再发给证书的申请者(也就是这些网站)
当这个网站拿到这个证书后,当有人向它发出访问请求时,它就会将证书的公钥信息和签名信息一起发给客户端使用者,客户端在收到这个信息后,它会查看证书
里面的签名信息,如果签名声称是由某个服务器颁发的,客户端就会使用对应的证书颁发机构的根证书的公钥来解密这里面的哈希值,如果成功解密,拿到这个哈希值
这时候通过拿到证书,客户端会对证书里面的内容进行哈希运算,在本地生成一个H2,如果计算得到的结果和服务器的哈希值一样,就会确认这个证书一定是对应的证书颁发机构颁发的
目的:实现对目标网站身份的确认,
如果一个WEB服务器生成的是自签名的证书,则这个证书不被浏览器所信任,因为客户端没有根证书
自签名的证书虽然浏览器不信任,但如果强行访问,之后的通信步骤都是一样的
只是缺少了一个对其身份真实性认证的过程,不确定对方的服务器是不是你想要访问的服务器
现在存在DNS欺骗等手段,会将你引向黑客的服务器
浏览器告警是因为这个证书无法证明你所访问的网站是真实的所有者
通过Vega做中间代理访问,如果是访问https的网站,访问请求到了Vega代理之后,Vega在本地也会生成自己自签名的证书
请求发到Vega那里时,Vega就会将自己的公钥发给浏览器,然后浏览器生成会话密钥,再把会话密钥通过公钥加密发给Vega
完成密钥交换,浏览器与Vega之间会话用的密钥都是Vega生成的
另一方面Vega会和你要访问的目标Web服务器进行通信,他们两个通信的过程是使用真正的由证书颁发机构颁发的证书来进行加密的
这个时候由于Vega是一个自签名的证书,它返回的是一个自签名的证书
如果你在另外一台机器使用Vega代理,再用本机浏览器借用Vega去访问,浏览器报错,这就不一定确定你用的Vega代理是你自己的代理
有可能是别人通过地址欺骗,让你去访问另外一个人的代理,当你访问他时,他就在本地用自己的私钥去解密你的请求,他也会把你的请求发出去给目标服务器
当然这里面的数据已经被他篡改了,而传回来的数据也有可能被篡改了,所以没有能力去防护这种基于地址欺骗的攻击
想要防护,只能将vega这张证书安装到本地的浏览器中去,让浏览器信任这张证书,这样访问一般不会出错,如果出错,则是地址被欺骗了,把你的流量转去另外
一台服务器上了,而这台服务器上的证书你是不信任的,因此才引起报错
如何安装Vega证书
证书颁发时是颁发给域名,不是IP地址
默认操作系统已经已经将世界上权威的证书颁发机构已经做了信任了
查看浏览器信任的证书:
edit->preference->Advance->Certificates->view Certificates->Authorities(这一栏全是证书颁发机构的根证书)
将Vega证书添加给浏览器受信任,打开Vega代理的情况下,访问网址http://vega/ca.crt 在浏览器上勾选Trust this CA to identify websites
点击OK即可