🚧 🚧 🚧 页面施工中,欢迎稍后回来!🚧 🚧 🚧

使用 Let's Encrypt 生成免费的 SSL 证书

§ 什么是 SSL?

SSL(安全套接层,Secure Sockets Layer),及其继任者 TLS (传输层安全,Transport Layer Security)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 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 平台,可直接使用相应的包管理工具进行安装:

sudo apt-get install letsencrypt -t jessie-backports # Debian 8
sudo apt-get install letsencrypt     # Debian testing/unstable, Ubuntu 16.04
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;

        # 网站的其它设置不变
        # [...]
}

参考链接: