经常听到一个说法,https 比 http 安全。为什么呢,因为https打头的网站,无法抓取其数据。最近特意去查了下原因,补了下知识
HTTPS 百科简介
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer 或 Hypertext Transfer Protocol Secure,超文本传输安全协议),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。
详解
- 针对”以安全为目标的HTTP通道“进行理解,这是对https目标的阐述,也是对其作用的描述。怎么实现,即HTTP下加入SSL层。SSL是广泛用于Web浏览器与服务器之间的身份认证和加密数据传输。提供认证用户和服务器,加密数据以防止数据中途被窃取;从而维护数据的完整性,确保数据在传输过程中不被改变。怎么使用SSL呢,需要我们生成SSL证书,如果是线上站点需要,可以从腾讯云购买,然后拿到证书文件放到服务器配置中即可,而如果是你本地测试需要,也是可以自己生成证书,在浏览器中导入证书,看到效果的。(我之前有试过windows生成证书并配置,踩了很多坑,之后会写个文章记录一下。)
- 怎么理解”HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层“,举个例子,你的域名为:local.test.com, 你在vhosts中分配的端口是80,而在httpd-ssl中分配的端口是443,这时候,当你在访问http://local.test.com,是80,而如果访问https://local.test.com,是443 。这样子大概能够理解了。(一般的访问流程中,访问端口是默认的端口80,在配置了https协议后,加了https,才会访问443端口;如果你想要指定访问443,那么你可以在伪静态类文件中,加上
//Apache自动跳转到 HTTPS
RewriteCond %{SERVER_PORT} 443
- 说到SSl证书,它实际用到了非对称加密。顺便扯上一点。对称加密与非对称加密的区别很简单,对称加密即加密与解密方式都相同,加密和解密使用同一个秘钥,所以叫做对称加密。对称加密只有一个秘钥,作为私钥;而非对称加密则是加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。对称加密算法相比非对称加密算法来说,加解密的效率要高得多。但是缺陷在于对于秘钥的管理上,以及在非安全信道中通讯时,密钥交换的安全性不能保障。