前提条件
- 你需要已经配置好多租户 DNS
- 你的网站应该可以通过有效的域名访问
- 你需要在服务器上拥有 root 权限
注意:Let’s Encrypt 证书每三个月就会过期
使用 Bench 命令
只需运行:
sudo -H bench setup lets-encrypt [site-name]
你会遇到几个提示,请根据情况逐一回应。这个命令还会在 root 用户的 crontab 中添加一条记录(这需要更高的权限),用于每月尝试续期证书。
自定义域名
你也可以为自定义域名设置 Let’s Encrypt。只需使用 --custom-domain 选项
sudo -H bench setup lets-encrypt [site-name] –custom-domain [custom-domain]
续期证书
要手动续期证书,你可以使用:
sudo bench renew-lets-encrypt
手动方法
下载合适的 Certbot-auto 脚本到 /opt 目录
https://certbot.eff.org/
停止 nginx 服务
$ sudo service nginx stop
运行 Certbot
$ ./opt/certbot-auto certonly –standalone
在 Let’s Encrypt 初始化之后,系统会提示你输入一些信息。具体的提示内容可能会因你之前是否使用过 Let’s Encrypt 而有所不同,但我们会带你走完第一次的流程。
在提示处,输入一个用于接收通知和丢失密钥恢复的电子邮件地址:
然后你必须同意 Let’s Encrypt 订阅协议。选择“同意”:
然后输入你的域名。注意,如果你想让单个证书适用于多个域名(例如 example.com 和 www.example.com),请确保把它们都包含进去:
证书文件
获取证书后,你将得到以下 PEM 编码的文件:
- cert.pem:你域名的证书
- chain.pem:Let’s Encrypt 链证书
- fullchain.pem:cert.pem 和 chain.pem 合并后的文件
- privkey.pem:你证书的私钥
这些证书存储在 /etc/letsencrypt/live/example.com 文件夹下
为你的站点配置证书
进入你的 erpnext 站点目录下的 site_config.json
$ cd frappe-bench/sites/{{site_name}}
将以下两行添加到你的 site_config.json 中
“ssl_certificate”: “/etc/letsencrypt/live/example.com/fullchain.pem”,
“ssl_certificate_key”: “/etc/letsencrypt/live/example.com/privkey.pem”
重新生成 nginx 配置
$ bench setup nginx
重启 nginx 服务器
$ sudo service nginx restart
自动续期(实验性)
以 root 或具有超级用户权限的用户登录,运行 crontab -e 并输入:
在每月第一个星期一续期 letsencrypt 证书,并在执行时收到电子邮件
MAILTO=”[email protected]”
0 0 1-7 * * [ “$(date ‘+%a’)” = “Mon” ] && sudo service nginx stop && /opt/certbot-auto renew && sudo service nginx start