安装证书
安装脚本
1 | # 安装 sh 脚本 |
重载配置
1 | source ~/.bashrc |
如果用的 zsh 用:
1 | source ~/.zshrc |
以下都是以 zsh
为例:
域名验证
为了验证域名所有权,Let’s Encrypt 支持两种方式来验证:
- 域名的 DNS: 配置一个随机的 TXT 记录来验证
- 域名的访问: 配置一个随机的 URL 地址来验证
这里推荐使用 DNS 验证方式。
以阿里云为例,首先在
1 | 访问控制 > 阿里云子账户 > 用户管理 |
中添加用户,给此授予 DNS 管理权限
(可以在界面中输入DNS
搜索相关权限)
然后创建 AccessKey
,生成 AccessKeyId
和 AccessKeySecret
,保存待用
在 .zshrc
中添加:
1 | export Ali_Key="AccessKeyId" |
然后
1 | source ~/.zshrc |
颁发证书
生成证书
可以对单域名、多域名、泛域名进行颁发
1 | acme.sh --issue --dns dns_ali -d 'mapledu.cn' -d '*.mapledu.cn' |
这里会进行域名的 DNS 验证,中间会等待 120 秒来验证正确性,验证成功后会有成功标记。
1 | [Mon May 21 19:41:35 CST 2018] Registering account |
该命令执行后,会在计划表里添加计划。
1 | crontab -l |
复制证书
前面证书生成以后, 接下来需要把证书 copy 到真正需要用它的地方.
注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/, 请不要直接使用此目录下的文件,
例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用,
而且目录结构可能会变化.
正确的使用方法是使用 –installcert 命令,并指定目标位置, 然后证书文件会被 copy 到相应的位置:
1 | acme.sh --installcert -d "mapledu.cn" -d "*.mapledu.cn" \ |
nginx 配置
nginx 配置是注意配置的是 key-file
和 fullchain-file
文件:
1 | ssl_certificate /etc/nginx/cert.d/mapledu.cn/fullchain.cer; |
特别是 ssl_certificate
项,应该配置生成的 fullchain.cer
,而不是 mapledu.cn.cer
。否则在微信小程序 https 证书验证中会出错。
通用脚本
也可以将颁发证书和安装证书两个命令合到一块,通用脚本如下:
1 | domain="mapledu.cn" |
更新 acme.sh
目前由于 acme 协议和 letsencrypt CA 都在频繁的更新, 因此 acme.sh 也经常更新以保持同步.
升级 acme.sh 到最新版 :
1 | acme.sh --upgrade |
如果你不想手动升级, 可以开启自动升级:
1 | acme.sh --upgrade --auto-upgrade |
之后, acme.sh 就会自动保持更新了.
你也可以随时关闭自动更新:
1 | acme.sh --upgrade --auto-upgrade 0 |
参考: