我是 HTTP 请求和安全领域的新手,但从我所读到的内容来看,如果您希望对请求和响应进行加密,请使用 HTTPS 和 SSL,这样会很好。上一个问题中的某个人发布了指向此应用程序的链接http://www.charlesproxy.com/,这表明实际上可以嗅探 HTTPS 请求,并以纯文本形式查看请求和响应。
我尝试使用 facebook.com 登录,我确实能够以纯文本形式查看我的用户名和密码。这太容易了。这是怎么回事?我认为这就是 HTTPS 的全部意义——加密请求和响应?
我是 HTTP 请求和安全领域的新手,但从我所读到的内容来看,如果您希望对请求和响应进行加密,请使用 HTTPS 和 SSL,这样会很好。上一个问题中的某个人发布了指向此应用程序的链接http://www.charlesproxy.com/,这表明实际上可以嗅探 HTTPS 请求,并以纯文本形式查看请求和响应。
我尝试使用 facebook.com 登录,我确实能够以纯文本形式查看我的用户名和密码。这太容易了。这是怎么回事?我认为这就是 HTTPS 的全部意义——加密请求和响应?
这在他们关于SSL 代理的页面中进行了解释,可能没有足够的解释。
根据定义,代理是中间人:客户端连接到代理,代理连接到服务器。
SSL 做了两件事:
第二部分很重要,而且看起来很糟糕:您坐在浏览器前,惊讶地发现您的浏览器正在连接到代理,而您希望它连接到 Facebook。从技术上讲,代理不是在嗅探 HTTPS 流量,而是在转发它。
您的浏览器知道它已连接到 Facebook,因为该站点有一个证书,上面写着“我真的www.facebook.com
”。公钥密码学,通过我不会进入这里的方式,确保只有私钥的持有者才能启动与此证书的有效连接。这只是成功的一半:您只有服务器声称它确实是www.facebook.com
而不是randomhijacker.com
. 您的浏览器会另外检查证书是否已由证书颁发机构验证。您的浏览器或操作系统附带了它信任的证书颁发机构列表。同样,公钥加密确保只有 CA 可以发出您的浏览器将接受的证书。
当您连接到代理时,您的浏览器会收到一个证书,上面写着“我真的www.facebook.com
”。但此证书并非由您的浏览器默认信任的 CA 签署。所以:
https://www.facebook.com/
;无论哪种方式,您都告诉浏览器信任代理。确实如此。如果您开始信任随机的陌生人,则 SSL 连接是不安全的。
推荐阅读以获取更多信息: