nginx 配置 Let's Encrypt 证书

HTTPS 与网络安全

以 nginx 和 Let's Encrypt 为例,实际操作下怎么给服务器安装证书。
第一步,在服务器安装 Let's Encrypt 的官方辅助工具 Certbot。Ubuntu 可以使用 apt 一键安装。sudo apt install certbot python3-certbot-nginx

第二步,Certbot 在本地生成公钥和私钥,然后请求 Let's Encrypt 为 example.com 颁发证书。

第三步,Let's Encrypt 会生成一个临时 token,并要求 Certbot 将 token 放到指定路径 http://example.com/.well-known/acme-challenge/yyyy。Let's Encrypt 会访问该路径验证 token 是否匹配。

第四步,验证通过后 Let's Encrypt 会使用自己的私钥对服务器公钥和证书进行数字签名,然后发送给 Certbot。

第五步,Certbot 会自动修改 nginx 的配置,这样网站的 https 就配置好了。

listen 443 ssl; 
server_name example.com;
# 域名证书(包含公钥和证书链)
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
# 私钥
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

需要注意的是,私钥从未离开过服务器,只有公钥被发送到了 Let's Encrypt 服务器。