安装 acme
下载 acme 代码,设置邮箱,设置签发服务为 letencrypt
git clone --depth 1 https://github.com/acmesh-official/acme.sh.git
cd acme.sh
acme.sh --install -m username@example.com
source ~/.bashrc
acme.sh --upgrade --auto-upgrade
acme.sh --set-default-ca --server letencrypt</code></pre>
签发证书
创建签发目录 /opt/acme
,并且配置 nginx 可以访问到 /opt/acme/.well-known/acme-challenge
mkdir -pv /opt/acme
acme.sh --issue -d yuc.pub -d www.yuc.pub -d blog.yuc.pub -w /opt/acme
在签发的时候会在设置的目录中生成验证文件,外部 letencrypt 会访问这个文件,以验证域名权限, 多个 -d 指定多个域名,可以签发一个证书内包含多个域名,这样的话就省略了配置多个证书的问题
在签发完成后可以看到回显是 success,这时候就可以安装签发下来的证书了,
这里以 nginx 服务器为例,配置把证书直接安装到 nginx ssl 的文件路径,并且加上重载指令,可以立即生效
acme.sh --install-cert -d yuc.pub --key-file /www/server/panel/vhost/nginx/ssl/server.key --fullchain-file /www/server/panel/vhost/nginx/ssl/server.crt --ca-file /www/server/panel/vhost/nginx/ssl/server.ca.crt --reloadcmd 'nginx -s reload'
PS.
几个问题:
- 在目前的方案中 Let's Encrypt 验证的是 80 端口,那么如果在没有 80、443 等情况下,是否能够使用非标准端口签发到证书
- 在签发证书的时候需要设置 验证文件 的写入目录,Let's Encrypt 访问的路径大概为:
http://xxx.com/.well-known/acme-challenge/jM4tgDtjHjLCbLHepHaP96Kmt_MIA46Bhuu33t7rKK4
而 nginx 设置的 location 为 /.well-known/acme-challenge
, root 目录设置为 /opt/acme
,如果设置 acme -w
的路径为 /opt/acme/.well-known/acme-challenge
则一直签发失败,提示地址访问 404,在 acme-challenge 目录下也没有找到任何文件。经过排查应该设置 root 目录,也就是 .well-known 的上一层目录
评论