Let's Encrypt
Let's Encrypt 是一个免费的、自动化的证书颁发机构,可以为你的网站提供免费的 HTTPS 证书。这里使用 Certbot 来申请证书。
前提
- Ubuntu 20.04
- 你的域名已经解析到服务器
- 你的服务器已经安装了 Nginx
安装 snapd
snapd 是一个包管理器,可以用来安装 Certbot。
sudo apt update
sudo apt install snapd
更新 snapd 到最新版本。
sudo snap install core; sudo snap refresh core
安装 Certbot
sudo snap install --classic certbot
配置 Nginx
先为服务配置 80 端口的访问。
server {
listen 80;
server_name example.com www.example.com; #你的域名
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:1000/; #你的服务地址
}
}
执行签发证书命令
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginx
执行完毕后,Certbot 会询问你的邮箱地址以及需要签发证书的域名,按照提示操作即可。
操作完成后,Certbot 会自动为你的 Nginx 配置文件添加 HTTPS 配置。结果应该类似于下面的配置。
server {
server_name example.com www.example.com;
client_max_body_size 1024m;
location / {
proxy_set_header HOST $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:1000/;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = www.example.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name example.com www.example.com;
return 404; # managed by Certbot
}
检查自动续订
Certbot 会自动为你的证书设置自动续订,可以通过下面的命令来检查。
sudo certbot renew --dry-run
其他操作系统或平台
进入后可以选择你的操作系统和平台,然后按照提示操作即可。