有两种安装方式, 其一是手动的. 由于我已经将系统升级到debian8, 故应该可以用Cerbot自动安装证书.
UPDATE(2021/12/27)
可以使用acme自动更新脚本.
- 下载脚本
curl https://get.acme.sh | sh
或者更新
acme.sh --upgrade
- 申请证书
好几种办法, 自动的话需要脚本操作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
- 申请证书, 支持泛域名
acme.sh --issue --dns dns_cf -d *.vanabel.cn -d vanabel.cn -d www.vana
bel.cn
- 安装证书
可以看到申请好的证书放在
~/.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号之前)
- 添加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
- 安装
jessie backports
:
sudo apt-get update
sudo apt-get install certbot -t jessie-backports
sudo apt-get install python-certbot-nginx -t jessie-backports
- 为每个网站添加证书:
sudo certbot --nginx
这时会列出网站列表, 直接回车表示全选.
由于我以前为部分网站添加过证书, 此时会提示是否覆盖, 直接选E(expand and replace)即可.
FAQ
如果提示tsl handshake失败, 或者Challenge failed for domain xxxx.yourdomain.com.cn
可能是你网站配置的问题. 建议关闭cloudflare, 即DNS配置中使用直连, 不要经过cloudflare.注意, debug log放在
/var/log/letsencrypt/letsencrypt.log
, 有问题的话可以查看.-
成功后, 你会看到原来的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