由于HTTPS可以提供加密、数据完整性和身份验证三重关键保护,已经成为大公司网站的标配;但是国内一些政府、银行和教育网站安全意识薄弱,2020年了,支持HTTPS的网站屈指可数,实施HTTPS其实并不复杂,甚至借助免费资源,能够轻松帮助网站升级HTTPS。
认识HTTPS
很长一段时间网站一直使用HTTP(超文本传输协议)协议传输数据,但是它具有如下不安全的特点:
- 明文传输、易被监听。
- 响应内容不加验证,导致容易被篡改
- 身份被冒充
1994年网景公司(Netscape)首次提出HTTPS,一直到2010年代初,才开始被网站广泛采用,以确保各类型的网页真实,保护账户和保持用户通信,身份和网络浏览的私密性。
什么是HTTPS?
HTTPS(超文本传输安全协议)是一种互联网通信协议,可确保在用户的计算机与网站之间所传递的数据的完整性和机密性。每当访问网站时,用户都希望自己的在线体验安全无虞且具有私密性。因此,主流浏览器和搜索引擎都会建议您采用 HTTPS 来保护用户与您网站之间的连接(无论您网站上提供了什么内容)。
所有使用 HTTPS 发送的数据都可通过传输层安全协议 (TLS) 得到保护。该协议可提供三重关键保护:
- 加密 – 对所交换的数据进行加密,以使其免受窥探。这意味着在用户浏览网站期间,没有人能够“听到”其会话内容,也无法在多个网页上跟踪其活动或窃取其信息。
- 数据完整性 – 不管是有意还是无意,在数据传输期间数据都无法被修改或损坏,也不会被检测。
- 身份验证 – 证明用户可与目标网站通信,这有助于保护用户免遭中间人攻击并建立用户信任,进而带来其他商业效益。
实施 HTTPS 时的最佳做法
使用强大的安全证书
在为网站启用 HTTPS 的过程中,您必须获得安全证书。证书由数字证书认证机构 (CA) 颁发,该机构会采取有关措施,确认您的网站地址是否确实属于您的组织,从而保护访问者免受中间人攻击。在设置证书时,您可以选择 2048 位密钥,来确保高级别的安全性。如果所持证书的密钥(1024 位)安全性较弱,请将其升级到 2048 位。选择网站证书时,请注意以下几点:
- 从提供技术支持的可靠 CA 处获取证书。一般来说,高质量的 SSL 证书需要购买,而且价格不菲。如果对站点的要求没有那么高,也可以在一些网站上申请免费证书,比如阿里云。
- 确定所需证书的类型:适用于单个安全源的单个证书(例如:www.example.com)。适用于多个已知安全源的多网域证书(例如www.example.com、cdn.example.com、example.co.uk)。适用于具有多个动态子域名的安全源的通配型证书(例如:a.example.com、b.example.com)。
HTTPS配置实战
春节假期,为了方便进行微信小程序调试,抽空对自己的域名truemen.cn支持了HTTPS。由于域名和云服务器都在阿里云,因此在阿里云上申请了免费的个人证书,然后是修改nginx配置。具体配置也是参考如下文章https://yq.aliyun.com/articles/635258?spm=a2c4e.11153940.0.0.2a014af0sAeibQ。
需要特别注意的有如下几点:
- nginx配置文件增加对https 443端口监听,重启nginx后,仍然会无法不支持https访问
- 这时应检查阿里云服务器的安全组权限规则,需增加对443端口的入口权限配置
- 如果还是不支持,那么需要检查防火墙设置
- systemctl status firewalld
- firewall-cmd –zone=public –add-port=443/tcp –permanent
- systemctl reload firewalld