半夜收到邮件通知,之前签发的博客站点 [SSL](https://ixianhao.com/ "View all posts in SSL") 证书到期了。通过 [KeyManager](https://keymanager.org/) 申请亚洲诚信证书,发现 KM 已经不支持这一产品,遂又动了搞自动签发的念头。于是通过 [FreeSSL.cn](https://freessl.cn/) 自动签发。  ([FreeSSL.cn](https://freessl.cn/) ) 是一个免费提供 HTTPS 证书申请、HTTPS 证书管理和 HTTPS 证书到期提醒服务的网站,旨在推进 HTTPS 证书的普及与应用,简化证书申请的流程。通过注册 [FreeSSL.cn](https://freessl.cn/) 账号,可以对申请的证书进行保存和在线管理。 # 添加 FreeSSL ACME域名 因为平时会用到二级域名做测试,所以干脆对 `*.ixianhao.com` 进行证书签发。创建证书时使用 `*.ixianhao.com`。  输入要创建证书的域名 界面跳转到控制台,此处点击下一步即可。  配置 ACME 域名 # 配置域名 DNS 解析 一开始,会让你对持有域名进行 `DNS验证`,首先根据 提示 DCV 配置提示配置一下 `DNS`: * 主机记录:`_acme-challenge` * 记录类型:`CNAME` * 记录值:`ncghshkhkhuigkzxxe.dcv2.httpsauto.com` > 跟以前手动配置不一样,此处自动签发用了 `CNAME` 而不是 `TXT` 记录,配置的时候要留意  提示配置 DCV 域名托管在阿里云上,配置 DNS 的过程轻车熟路,生效速度也很快。上面的图是配置完成验证后的结果,如果没验证成功,需要等个 5-10 分钟等待 DNS 解析生效。  在阿里云上配置 DNS `DNS` 验证通过后就可以开始签发 SSL了。通过验证后会得到以下的界面,但实际上不需要等待 DCV 验证通过,也可以直接点击「完成」,通过页面「证书申请」按钮,选择添加域名后同样可以得到 `acme.sh` 的部署命令提示。 > 截图中应该是 [FreeSSL.cn](https://freessl.cn/) 的 Bug,我使用了泛域名,提示的命令对 `*` 并没有做转义,会导致后续执行失败,下文会提到。  acme.sh 部署命令 # 安装 acme.sh 推荐阅读 [ACME v2证书自动化快速入门](https://blog.freessl.cn/how-to-install-cert-in-nginx/) 一文。当然,相关文中的操作也可以参考下方: 先来安装个 `acme.sh` 客户端,命令中的 `email` 可以替换为你自己的邮箱地址(虽然我还没搞懂有什么用,应该是后续发送通知邮件的吧)。 > 我是直接在 root 下操作的,非 root 用户可能安装后会有些问题,建议用 `sudo su` 切换至 root 用户操作。 如果上面官方下载地址失败 或者 太慢,可以选用国内的备用地址  安装 acme.sh > 安装脚本会给当前 Shell 添加 alias 别名,安装完成后需要 `omz reload` 重载下 Shell,如果不是用 `oh-my-zsh` 的自行百度或退出当前用户重新登陆一次就好。 # 请求签发 SSL证书 根据上文的部署命令,执行 `acme.sh --issue` 请求签发会得到 `zsh: no matches found: *.normalcoder.com` 的错误提示,这是因为 FreeSSL.cn 提示的命令对泛域名的 `*` 符号没有做转移处理。 > 命令中的 `https://acme.freessl.cn/v2/DV90/directory/********************` 是 FreeSSL的专属 ACME地址, **专属 ACME地址需要注意保密** ,这非常重要。此处做了脱敏,可以根据自己情况替换。 中间可能会有多次等待签发订单,脚本会自动重试,完成后会把签发证书内容和文件位置打印出来,当看到 **Cert success** 时证书就已经签发并下载到本地了。  请求签发SSL # 安装证书到 Web 服务器 `acme.sh` 针对不同的 Web Server 提供了不同的证书安装参数。以下为 `Apache` 和 `Nginx` 的安装命令,对应只需要替换签发下来的证书文件路径即可。最后一行是写入证书后调用 `service` 重启对应服务,无需改动。 因为我用的 `Nginx`,于是执行结果如下,有关 Nginx 如何配置网站 SSL可参考 [Nginx 如何配置证书?](https://blog.freessl.cn/acme-quick-start/) 安装证书到 Nginx  ``` acme.sh --install-cert -d niupi.com \ --key-file /var/www/certificate/niupi.com.key \ --fullchain-file /var/www/certificate/niupi.com.pem \ --reloadcmd "service nginx force-reload" ``` 至此,利用 FreeSSL ACME v2自动化签发 SSL 证书完成。 ## 写在最后 最近新购买了几个域名在使用FreeSSL ACME v2 自动化签发 SSL 证书时发现老是失败。  经过几天的研究,包含更换注册账号等操作。一概无法解决。最后在跑命令的同时,在腾讯云申请了免费的一年证书后,居然神奇的可以了。原来只需要找一个网站申请一个亚洲诚信的免费证书,即可自动化签发。 FreeSSL自动签发证书失败问题至此解决!希望这个小发现可以帮助到您! Loading... 半夜收到邮件通知,之前签发的博客站点 [SSL](https://ixianhao.com/ "View all posts in SSL") 证书到期了。通过 [KeyManager](https://keymanager.org/) 申请亚洲诚信证书,发现 KM 已经不支持这一产品,遂又动了搞自动签发的念头。于是通过 [FreeSSL.cn](https://freessl.cn/) 自动签发。  ([FreeSSL.cn](https://freessl.cn/) ) 是一个免费提供 HTTPS 证书申请、HTTPS 证书管理和 HTTPS 证书到期提醒服务的网站,旨在推进 HTTPS 证书的普及与应用,简化证书申请的流程。通过注册 [FreeSSL.cn](https://freessl.cn/) 账号,可以对申请的证书进行保存和在线管理。 # 添加 FreeSSL ACME域名 因为平时会用到二级域名做测试,所以干脆对 `*.ixianhao.com` 进行证书签发。创建证书时使用 `*.ixianhao.com`。  输入要创建证书的域名 界面跳转到控制台,此处点击下一步即可。  配置 ACME 域名 # 配置域名 DNS 解析 一开始,会让你对持有域名进行 `DNS验证`,首先根据 提示 DCV 配置提示配置一下 `DNS`: * 主机记录:`_acme-challenge` * 记录类型:`CNAME` * 记录值:`ncghshkhkhuigkzxxe.dcv2.httpsauto.com` > 跟以前手动配置不一样,此处自动签发用了 `CNAME` 而不是 `TXT` 记录,配置的时候要留意  提示配置 DCV 域名托管在阿里云上,配置 DNS 的过程轻车熟路,生效速度也很快。上面的图是配置完成验证后的结果,如果没验证成功,需要等个 5-10 分钟等待 DNS 解析生效。  在阿里云上配置 DNS `DNS` 验证通过后就可以开始签发 SSL了。通过验证后会得到以下的界面,但实际上不需要等待 DCV 验证通过,也可以直接点击「完成」,通过页面「证书申请」按钮,选择添加域名后同样可以得到 `acme.sh` 的部署命令提示。 > 截图中应该是 [FreeSSL.cn](https://freessl.cn/) 的 Bug,我使用了泛域名,提示的命令对 `*` 并没有做转义,会导致后续执行失败,下文会提到。  acme.sh 部署命令 # 安装 acme.sh 推荐阅读 [ACME v2证书自动化快速入门](https://blog.freessl.cn/how-to-install-cert-in-nginx/) 一文。当然,相关文中的操作也可以参考下方: 先来安装个 `acme.sh` 客户端,命令中的 `email` 可以替换为你自己的邮箱地址(虽然我还没搞懂有什么用,应该是后续发送通知邮件的吧)。 > 我是直接在 root 下操作的,非 root 用户可能安装后会有些问题,建议用 `sudo su` 切换至 root 用户操作。 如果上面官方下载地址失败 或者 太慢,可以选用国内的备用地址  安装 acme.sh > 安装脚本会给当前 Shell 添加 alias 别名,安装完成后需要 `omz reload` 重载下 Shell,如果不是用 `oh-my-zsh` 的自行百度或退出当前用户重新登陆一次就好。 # 请求签发 SSL证书 根据上文的部署命令,执行 `acme.sh --issue` 请求签发会得到 `zsh: no matches found: *.normalcoder.com` 的错误提示,这是因为 FreeSSL.cn 提示的命令对泛域名的 `*` 符号没有做转移处理。 > 命令中的 `https://acme.freessl.cn/v2/DV90/directory/********************` 是 FreeSSL的专属 ACME地址, **专属 ACME地址需要注意保密** ,这非常重要。此处做了脱敏,可以根据自己情况替换。 中间可能会有多次等待签发订单,脚本会自动重试,完成后会把签发证书内容和文件位置打印出来,当看到 **Cert success** 时证书就已经签发并下载到本地了。  请求签发SSL # 安装证书到 Web 服务器 `acme.sh` 针对不同的 Web Server 提供了不同的证书安装参数。以下为 `Apache` 和 `Nginx` 的安装命令,对应只需要替换签发下来的证书文件路径即可。最后一行是写入证书后调用 `service` 重启对应服务,无需改动。 因为我用的 `Nginx`,于是执行结果如下,有关 Nginx 如何配置网站 SSL可参考 [Nginx 如何配置证书?](https://blog.freessl.cn/acme-quick-start/) 安装证书到 Nginx  ``` acme.sh --install-cert -d niupi.com \ --key-file /var/www/certificate/niupi.com.key \ --fullchain-file /var/www/certificate/niupi.com.pem \ --reloadcmd "service nginx force-reload" ``` 至此,利用 FreeSSL ACME v2自动化签发 SSL 证书完成。 ## 写在最后 最近新购买了几个域名在使用FreeSSL ACME v2 自动化签发 SSL 证书时发现老是失败。  经过几天的研究,包含更换注册账号等操作。一概无法解决。最后在跑命令的同时,在腾讯云申请了免费的一年证书后,居然神奇的可以了。原来只需要找一个网站申请一个亚洲诚信的免费证书,即可自动化签发。 FreeSSL自动签发证书失败问题至此解决!希望这个小发现可以帮助到您! Last modification:April 10, 2024 © Allow specification reprint Support Appreciate the author AliPayWeChat Like 如果觉得我的文章对你有用,请随意赞赏