使用 Let’s Encrypt为网站添加SSL证书

有两种安装方式, 其一是手动的. 由于我已经将系统升级到debian8, 故应该可以用Cerbot自动安装证书.
UPDATE(2021/12/27)
可以使用acme自动更新脚本.

  1. 下载脚本
curl https://get.acme.sh | sh

或者更新

acme.sh --upgrade
  1. 申请证书
    好几种办法, 自动的话需要脚本操作DNS, 故需要添加API.
    以Cloudflare为例, 需要添加
export CF_Token="***"
export CF_Account_ID="***"

其中CF_Token在创建令牌(控制DNS); CF_Account_ID在登录cloudflare后页面的右下方

API
Zone ID
***
Click to copy
Account ID
***
Click to copy
  1. 申请证书, 支持泛域名
acme.sh --issue --dns dns_cf  -d *.vanabel.cn -d vanabel.cn -d www.vana
bel.cn
  1. 安装证书
    可以看到申请好的证书放在
~/.acme.sh/*.vanabel.cn/

目录下, 需要copy到nginx相应目录.

acme.sh --install-cert -d *.vanabel.cn --key-file /etc/letsencrypt/live
/vanabel.cn/privkey.pem  --fullchain-file /etc/letsencrypt/live/vanabel.cn/fullchain.pem --reloadcmd "service nginx force-reload"

如果以前nginx没有配置过, 则还需要修改网站对应的nginx配置.

UPDATE(2019年5月22)

官方建议用certbot-auto来替代certbot, 参考https://certbot.eff.org/lets-encrypt/debianjessie-nginx.

使用官方建议的方式安装:

wget https://dl.eff.org/certbot-auto
sudo mv certbot-auto /usr/local/bin/certbot-auto
sudo chown root /usr/local/bin/certbot-auto
sudo chmod 0755 /usr/local/bin/certbot-auto

然后使用

certbot-auto -d yoursub.domain.com  --nginx

更新证书.

再次注意, cloudflare使用直连, 否则更新不成功.

Debian8(2018年10月26号之前)

  1. 添加backports到sources.list
    首先确定原来的源是那种类型:
sudo cat /etc/apt/sources.list

我的是jessie

deb http://ftp.debian.org/debian jessie main contrib non-free
deb http://ftp.debian.org/debian jessie-updates main contrib non-free
deb http://security.debian.org jessie/updates main contrib non-free

故添加

sudo echo "deb http://ftp.debian.org/debian jessie-backports main" >>/etc/apt/sources.list

若为stretch, 这改为

sudo echo "deb http://ftp.debian.org/debian stretch-backports main" >>/etc/apt/sources.list
  1. 安装jessie backports:
sudo apt-get update
sudo apt-get install certbot -t jessie-backports
sudo apt-get install python-certbot-nginx -t jessie-backports
  1. 为每个网站添加证书:
sudo certbot --nginx

这时会列出网站列表, 直接回车表示全选.

由于我以前为部分网站添加过证书, 此时会提示是否覆盖, 直接选E(expand and replace)即可.

FAQ

  1. 如果提示tsl handshake失败, 或者Challenge failed for domain xxxx.yourdomain.com.cn
    可能是你网站配置的问题. 建议关闭cloudflare, 即DNS配置中使用直连, 不要经过cloudflare.

  2. 注意, debug log放在/var/log/letsencrypt/letsencrypt.log, 有问题的话可以查看.

  3. 成功后, 你会看到原来的nginx 网站配置文件已经新添加了ssl 证书的配置. 且显示消息

    IMPORTANT NOTES:

    • Congratulations! Your certificate and chain have been saved at
      /etc/letsencrypt/live/xxxx.yourdomain.com.cn/fullchain.pem. Your cert will
      expire on 2019-01-24. To obtain a new or tweaked version of this
      certificate in the future, simply run certbot again with the
      "certonly" option. To non-interactively renew all of your
      certificates, run "certbot renew"

    • If you like Certbot, please consider supporting our work by:

      Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
      Donating to EFF: https://eff.org/donate-le

你可能感兴趣的:(使用 Let’s Encrypt为网站添加SSL证书)