使用acme.sh脚本申请证书 作者: 毕世平 时间: 2020-09-23 分类: 默认分类 前言:`acme.sh`是一个非常好用的用来申请证书的脚本,它开源在Github,它极大地降低了申请证书的难度,支持使用cloudflare api等众多api来申请证书。 本文主要介绍使用此脚本来申请ssl证书,给你的http请求加把锁,具体会使用`cloudflare api`来介绍。 ## 准备条件: - 一台被分配了公网IP的主机 - 一个域名(建议购买收费域名) - 电脑ssh客户端 - 能解决遇到问题的个体 ## 一、安装脚本文件 以`root`用户ssh连接到主机,使用下面命令安装脚本: apt update && apt -y install socat //更新源并安装socat wget -qO- get.acme.sh | bash //安装此脚本 source ~/.bashrc //让别名生效,此后无论在哪里直接使用acme.sh,不用输绝对路径 # 由于最新acme.sh脚本默认ca变成了zerossl,现执行下面命令修改脚本默认ca为letsencrypt acme.sh --set-default-ca --server letsencrypt ## 二、配置证书 ## 2.1 获取Cloudflare api key 注册好cloudflare账号,把域名dns的解析权限交给cloudflare处理,这样以后只需要在cloudflare这里配置解析记录。按照图示获取`cloudflare api key`。 ![key.png](https://shiping.date/usr/uploads/2020/09/1913753488.png) ## 2.2 申请证书(二选一) 这里假定你的域名是`yourdomain.com`,执行下面命令申请证书: ### 2.2.1 dns方式验证 export CF_Key="slfjksjffjfhfhkjhfksjf" //此处替换成你自己的Key export CF_Email="yourcloudflare@gmail.com" //此处填写你给Cloudflare绑定的邮箱账号 acme.sh --issue --dns dns_cf -d yourdomain.com -d www.yourdomain.com -k ec-256 **说明**:Cloudflare现已不支持`.tk .cf .ml`等免费申请来的域名后缀使用此dns验证方式,付费域名才受支持,免费域名使用下面2.2.2方式。脚本申请到的证书和key都放在`~/.acme.sh/yourdomain.com_ecc`目录下。 ### 2.2.2 http方式验证 执行下面命令前请保证你80端口没有被别的程序使用,如果有,kill掉,执行下面命令前需要你先在cloudflare dns那里添加好A记录,可以开启cloudflare cdn(cdn对此http方式验证无影响): acme.sh --issue --standalone -d yourdomain.com -d www.yourdomain.com -k ec-256 **说明**:跟上面一样,脚本申请到的证书放在`~/.acme.sh/yourdomain.com_ecc`目录下 ## 2.3 安装证书到指定位置 假定linux主机里已有`/root/ssl`目录,现在要把证书和key安装到此目录下,那么执行下面的命令即可: acme.sh --installcert -d yourdomain.com -d www.yourdomain.com --fullchain-file /root/ssl/web.crt --key-file /root/ssl/web.key --ecc ## 三、证书更新 从letscncrypt申请到的证书有效期是90天,但脚本会每60天会对证书进行更新,后续可能会缩短这个时间,都是自动的。 # 手动强制更新证书 acme.sh --renew -d yourdomain.com -d www.yourdomain.com --force --ecc ### 参考链接: - [acme.sh在github开源地址](https://github.com/acmesh-official/acme.sh "acme.sh在github开源地址") 标签: none