使用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/


使用acme.sh为你的网站整点ssl证书
https://featherp.icu/2024/10/12/使用acme-sh为你的网站整点ssl证书/
作者
羽毛P
发布于
2024年10月12日
许可协议