本文记录如何使用acme.sh申请免费的ssl证书,为个人网站使用https。

下载acme

acme.sh是开源项目,托管在github上,项目地址 :https://github.com/acmesh-official/acme.sh

在服务器上直接clone代码库

[email protected]:acmesh-official/acme.sh.git

到证书颁发机构网站注册账号

acme使用的证书颁发机构是zerossl,网站地址:https://app.zerossl.com/dashboard

登陆注册账号后生成一个开发者EAB凭证(点击Developer页面最下方的Generate)

image-20230530224230846

在弹出框中记录下EAB KID和EAB HMAC key(后续会用到)

执行脚本将账号与EAB信息绑定

cd ./acme.sh && ./acme.sh --email 你的注册邮箱 --register-account --server zerossl --eab-kid 记录的EAB-KID --eab-hmac-key 记录的EAB-HMAC-KEY

启动你的需要颁发证书的网站

我是用Nginx部署的静态博客,你也可以按你熟悉的web容器部署你需要颁发证书的网站,确保http80端口通过域名正常访问你的网站。

执行脚本为网站颁发证书

./acme.sh --log --issue --server zerossl -d 你的网站域名 --webroot 你的网站根目录

记得确保你的网站根目录是正确的。。。我在这里坑了一会,应该是脚本验证网站时核对了内容。若不匹配则验证失败。

证书颁发成功后会显示如下信息

image-20230530224247639

安装颁发的证书

./acme.sh --install-cert -d 你的网站域名 --key-file 生成的key路径 --fullchain-file 生成的全链条证书路径 --reloadcmd "service nginx force-reload"

reloadcmd请根据你实际http容器调整,若不清楚请参照脚本github文档

配置nginx证书

正常配置nginx证书,并调整监听端口为443

image-20230530224303086

配置完成后reload Nginx配置

打开网页验证是否已经正常可用https

image-20230530224320161

配置证书自动续期

由于申请的证书有效期为90天,则需要在到期之前续期,放可保证网站可用。

./acme.sh -d 你的网站域名 --install-cronjob

执行脚本后会生成一条crontab任务,执行crontab任务时会提示下次续期的时间

image-20230530224334551

至此基于acme为网站申请90天免费ssl证书,并自动续期的教程到此结束。