使用acme.sh为网站申请免费ssl证书
本文记录如何使用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)
在弹出框中记录下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 你的网站根目录
记得确保你的网站根目录是正确的。。。我在这里坑了一会,应该是脚本验证网站时核对了内容。若不匹配则验证失败。
证书颁发成功后会显示如下信息
安装颁发的证书
./acme.sh --install-cert -d 你的网站域名 --key-file 生成的key路径 --fullchain-file 生成的全链条证书路径 --reloadcmd "service nginx force-reload"
reloadcmd请根据你实际http容器调整,若不清楚请参照脚本github文档
配置nginx证书
正常配置nginx证书,并调整监听端口为443
配置完成后reload Nginx配置
打开网页验证是否已经正常可用https
配置证书自动续期
由于申请的证书有效期为90天,则需要在到期之前续期,放可保证网站可用。
./acme.sh -d 你的网站域名 --install-cronjob
执行脚本后会生成一条crontab任务,执行crontab任务时会提示下次续期的时间
至此基于acme为网站申请90天免费ssl证书,并自动续期的教程到此结束。