使用acme.sh为你的网站整点ssl证书
前言
SSL/TLS加密已经成为互联网中不可缺少的组成部分,时至今日,基本上你看到的所有网站均启用了十分安全的HTTPS协议,以增强网站的安全性。怎么去互联网上整点可口的SSL证书塞入自己的小网站已成为一个站长的必备部署技能,本文将使用 acme.sh ,从zerossl自动化的申请签发和自动续签酸甜可口的SSL证书。
本文不包含使用Nginx/Apche等web服务器部署的部分,望周知
前期准备
你应当拥有一个专属于你自己的域名,并确保此域名有能正常指向你的服务器的记录。我这里使用CloudFlare给我的域名做DNS解析。
安装acme.sh
由于众所周知的特色网络环境,github经常抽风导致acme.sh的安装脚本常常不能正常工作,故使用git clone的方式将仓库clone下来安装
git clone --depth 1 https://github.com/acmesh-official/acme.sh.git
cd acme.sh
./acme.sh --install -m [email protected]
在acme.sh的安装中,使用 -m 参数传入的是你的邮箱地址,此邮箱地址将作为acme.sh向你的CA申请ssl证书的帐号使用,你也可以用此邮箱登入你的CA的web页面管理证书
配置acme.sh
acme.sh支持两种完成 认证挑战 的方式
http认证
DNS认证
本文将使用DNS认证的方式完成申请证书必须的认证挑战流程,以供CA验证你为此域名的实际拥有者
接下来配置DNS提供商的APIkey,使得acme.sh可以向DNS解析中添加TXT记录以便认证
export CF_Key="your cloudflare Global API key"
export CF_Email="your cloudflare account"
然后添加acme.sh配置,生成和配置ssl证书
acme.sh --issue -d "yourdomain.com" -d "*.yourdomain.com" \
--dns dns_cf \
--reloadcmd "systemctl restart nginx"
reloadcmd 参数可以指定当证书配置完成之后运行的指令,本文配置为重启nginx以加载证书
在此过程中,acme.sh会自动化的完成证书的认证和下载,证书默认将会放到acme安装目录下。
至此,你已经把酸甜可口的SSL证书拿到手了!
配置nginx以使用SSL证书进行认证
使用文本编辑器编辑网站配置,默认应该在 /etc/nginx/sites-enabled/ 目录下
server{
listen 443 ssl;
ssl certificate /root/.acme.sh/your.domain.com_ecc/your.domain.com.cer;
ssl certificate_key /root/.acme.sh/your.domain.com_ecc/your.domain.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
root /www/your.domain.com/public/;
index index.html index.htm;
}
}
写在最后
acme.sh将会在证书即将过期时自动续签,因此不必担心Zerossl的90天过期限制。
参考资料:
How to install · acmesh-official/acme.sh Wiki · GitHub
https://www.cloudflare.com/zh-cn/learning/ssl/what-is-an-ssl-certificate/