本文最后更新于 2025-01-13,转载请标明原作者!

Let's Encrypt是一个开源的证书颁发机构(CA),致力于提供免费的SSL/TLS证书,以加强网站的安全性。它促进了在互联网上实现加密通信的重要性。Let's Encrypt的官网是:[https://letsencrypt.org/]

一、安装snapd

sudo apt update && sudo apt install snapd

二、安装Certbot

sudo snap install --classic certbot

三、创建符号链接

sudo ln -s /snap/bin/certbot /usr/bin/certbot

四、获取证书

sudo certbot certonly --standalone

按照提示输入邮箱,域名等信息。输入前需要关闭占用80端口的程序,例如nginx等。

五、自动续订证书

sudo certbot renew --dry-run

六、配置证书到Nginx

生成的证书一般在 /etc/letsencrypt/live/你的域名/ 下。有如下4个文件:

修改Nginx配置文件nginx.conf。示例:

server{
  listen 80;
  listen 443 ssl;
  client_max_body_size 1024m;
  #请填写绑定证书的域名
  server_name yourdomain.com;
  #请填写证书文件的相对路径或绝对路径
  ssl_certificate  /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
  #请填写私钥文件的相对路径或绝对路径
  ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
  ssl_session_timeout 5m;
  #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  #请按照以下协议配置
  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_prefer_server_ciphers on;

  location / {
    proxy_set_header Host $http_host;
    proxy_set_header Range $http_range;
    proxy_set_header If-Range $http_if_range;
    proxy_redirect off;
    # the max size of file to upload
    client_max_body_size 1024m;
    proxy_pass http://127.0.0.1:8090;
    #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;
  }
}