使用Let’s Encrypt设置HTTPS

前提条件

  1. 你需要已经配置好多租户 DNS
  2. 你的网站应该可以通过有效的域名访问
  3. 你需要在服务器上拥有 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