使用acme.sh生成letsencrypt证书

使用acme.sh生成免费的letsencrypt证书,并实现自动更新letsencrypt证书。

安装 acme.sh

acme.sh的安装方式很简单,使用官方的安装命令即可。

1
curl  https://get.acme.sh | sh
  • 安装命令会将acme.sh安装至 ~/.acme.sh/ 路径下
  • 自动创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书

测试是否安装成功

使用 acme.sh 命令

1
acme.sh

如果显示 Command ‘acme.sh’ not found, 运行下面的命令,创建 一个 bash 的 alias。

1
alias acme.sh=~/.acme.sh/acme.sh

生成证书

生成证书有两种方式

  •  http验证
  •  dns 验证

    推荐使用http验证,dns验证需要提供api id 和 api key 才能实现自动更新证书

http验证

前提

  • 拥有服务器控制权
  • 服务器网站根目录路径
  • 域名已经解析到服务器以及网站根目录,并能正常访问

生成证书

将 readonly.info 替换为需要生成证书的域名

1
acme.sh --issue -d readonly.info --webroot  /home/wwwroot/readonly.info/

如果你用的 apache/nginx服务器, acme.sh 还可以智能的从 apache/nginx的配置中自动完成验证, 你不需要指定网站根目录

1
2
acme.sh --issue -d readonly.info --apache
acme.sh --issue -d readonly.info --nginx

DNS验证

参考官方wiki链接

安装证书

默认生成的证书都放在安装目录 ~/.acme.sh/ 里面的一个与域名同名的文件夹。
官方不推荐直接使用目录下的证书。那我们就需要将生成的证书复制到自己用到的目录下, 例如 /home/wwwroot/certs/readonly.info/
在这里推荐官方推荐的安装证书的命令:

Apache

1
2
3
4
5
acme.sh --install-cert -d readonly.info \
--cert-file /home/wwwroot/certs/readonly.info/cert.pem \
--key-file /home/wwwroot/certs/readonly.info/key.pem \
--fullchain-file /home/wwwroot/certs/readonly.info/fullchain.pem \
--reloadcmd "service apache2 force-reload"

Nginx

1
2
3
4
acme.sh --install-cert -d readonly.info \
--key-file /home/wwwroot/certs/readonly.info/key.pem \
--fullchain-file /home/wwwroot/certs/readonly.info/cert.pem \
--reloadcmd "service nginx force-reload"

–reloadcmd  命令是重启web服务器命令,可根据自身实际情况进行修改

🎉 至此证书已经成功生成