向更安全的「HTTPS」迁移
1 HTTP 和 HTTPS
超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的 WWW 文件都必须遵守这个标准。设计 HTTP 最初的目的是为了提供一种发布和接收 HTML 页面的方法。(引用自:百度百科)
HTTP
协议是一个被用于在浏览器和服务器之间传输信息的应用层协议,HTTP 协议以明文的方式发送信息,不对数据进行加密。 这就会带来安全隐患,如果信息在传输过程中被拦截,那么就可以直接得到发送的信息,所以很多敏感数据不适合用这种协议传输,比如一些卡号、密码等。
HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版。即 HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。(引用自:百度百科)
「安全」就是HTTPS
协议的最大特性之一,它解决了 HTTP 协议的不安全问题。除此之外,还可以确保网站的「真实性」,它是如何做到的呢?
简单来说,就是把先前的明文传输换成密文传输,具体可以看这篇文章「HTTPS 为什么安全」。
2 Let’s Encrypt
要想的网站上启用 HTTPS,就需要从证书颁发机构(CA)获取证书(一种文件)。而 Let's Encrypt
是由非营利性互联网安全研究组(ISRG)提供的免费,自动化和开放的证书颁发机构。
3 实战
使用 certbot
添加 https 证书,它是基于 letsencrypt
的一个工具。
3.1 安装 Certbot
1 | apt install certbot |
3.2 生成 key
1 | # 单个域名 |
3.3 可能碰到的问题
问题 1:
domain names was not valid, has an _ (underscore) in the name or equested domain domain is not a FQDN.
解决方案:二级域名中不能包含下划线_,请修改二级域名。
问题 2:
Problem binding to port 443: Could not bind to IPv4 or IPv6.
解决方案:先关闭 Nginx,再生成 key。
3.4 自动续期
certbot 的有效期只有90天,需要一个定时任务来检查和自动续期。
1 | systemctl start certbot.timer |
4 参考
向更安全的「HTTPS」迁移