Let's Encrypt签发免费ssl证书
侧边栏壁纸
博主昵称
yuc

  • 累计撰写 291 篇文章
  • 累计收到 0 条评论

Let's Encrypt签发免费ssl证书

yuc
yuc
2024-04-30 / 最后修改: 2024-04-30 07:32 / 0 评论 / 301 阅读 / 正在检测是否收录...
安装 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.

几个问题:

  1. 在目前的方案中 Let's Encrypt 验证的是 80 端口,那么如果在没有 80、443 等情况下,是否能够使用非标准端口签发到证书
  2. 在签发证书的时候需要设置 验证文件 的写入目录,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 的上一层目录

0

评论

博主关闭了当前页面的评论