我之前使用acme.sh签发了网站证书,其生成的证书保存于~/.acme.sh/website.com目录下,如图是我的网站服务器上的例子:
file

在nginx中配置证书的时候,我选择了图中的mikumikumi.xyz.cer为公钥,配置如下图:
file

然而此文件的证书链实际上不完整,访问网站的时候会出现问题:
file

file

实际上公钥应该使用fullchain.cer文件,它才是包含完整证书的公钥文件。但是直接使用此文件并不是正确的做法。

默认生成的证书都放在安装目录下:~/.acme.sh/, 请不要直接使用此目录下的文件。这里面的文件都是acme.sh内部使用的,而且目录结构可能会变化。

正确的使用方法是使用acme.sh的--installcert选项,并指定目标位置,然后证书文件会被安装到相应的位置。

例:

acme.sh \
--installcert -d mikumikumi.xyz \
--key-file /root/ssl_cert/mikumikumi.xyz/mikumikumi.xyz.key \
--fullchain-file /root/ssl_cert/mikumikumi.xyz/mikumikumi.xyz.cer \
--reloadcmd "nginx -s reload"
  • -d表示要操作的网站证书(必须是之前生成过的)。
  • --key-file表示私钥文件要复制到的位置。
  • --fullchain-file表示包含完整证书链的公钥文件要复制到的位置。
  • --reloadcmd表示自定义的重新加载证书的命令。

之后在nginx中使用安装后的证书文件即可。

默认情况下,证书将每60天更新一次。更新证书后,将通过自定义命令自动重新加载Web服务。


参考: