SSL(安全套接层,Secure Sockets Layer),及其继任者 TLS (传输层安全,Transport Layer Security)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 会在传输层对网络连接进行加密。 |
SSL的用处
通过 SSL 加密,网站与用户之间的数据交互会更加安全,能够避免大多数的网络窃听问题。通常在登录以及涉及交易等安全要求比较高的情况下,应该要求强制 SSL 加密。
实际上,仅仅在登录页面提供 SSL 并不能真正解决安全问题,在公共 Wi-Fi 等公开环境下,攻击者依旧能够获得用户的登录 cookie 从而假冒用户身份,因此对网站进行全站加密是很有必要的。
2015 年,豆瓣、百度等众多网站终于在难以忍受运营商劫持以及嵌入广告等问题后,开启了全站 HTTPS,是国内 HTTPS 应用的一大里程碑。
Let's Encrypt 是什么?
Let's Encrypt 是由互联网安全研究小组(ISRG,一个公益组织)于 2015 年末推出的数字证书认证机构,将通过旨在消除当前手动创建和安装证书的复杂过程的自动化流程,为安全网站提供免费的 SSL/TLS 证书。
Let's Encrypt 的使用相对简单,并且完全免费,是很多中小网站的首先。
certbot 是什么?
根据官方介绍,Certbot 是一个简单易用的 SSL 证书部署工具,由 EFF 开发,前身即 Let’s Encrypt 官方(Python)客户端。Certbot 同时也支持其它支持 ACME 协议的 CA。
简单来说,cerbot 就是一个简化 Let's Encrypt 部署,和管理 Let's Encrypt 证书的工具。
安装和使用安装
cerbot/Let's Encrypt 支持众多 Linux 发行版,也支持 BSD 平台,可直接使用相应的包管理工具进行安装:
Ubuntu 16.04
sudo apt-get install letsencrypt -t jessie-backports # Debian 8
sudo apt-get install letsencrypt # Debian testing/unstable
sudo dnf install letsencrypt # Fedora
sudo pacman -S letsencrypt # Arch
Ubuntu 14.04、CentOS、BSD 以及 Mac 下可以通过脚本安装:
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
获取证书
certbot-auto certonly # 如果安装的是 letsencrypt 把 certbot-auto 替换成 letsencrypt 即可
自动续期
certbot-auto renew --quiet # CentOS/RHEL
部署 Nginx
# 将所有 HTTP 请求指向 HTTPS
server {
server_name example.com;
listen 80;
return 301 https://$server_name$request_uri;
}
# 监听 HTTPS 请求
server {
server_name example.com;
listen 443 ssl;
# TLS 基本设置
ssl_certificate /path/to/your/fullchain.pem;
ssl_certificate_key /path/to/your/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
# 网站的其它设置不变
# [...]
}