Acme 脚本申请证书,是我们用到的最常见的一种证书的申请方式,它有很多的申请方法,大家只需要找到一种适合自己的也就好了。
不管用下面的何种方式申请,都需要安装 Acme,有一部分的申请场景需要用到相关的插件,所以我们需要提前安装。
下面环境的安装方式,大家根据自己的系统选择命令安装就好了:
- CentOS 命令
yum update -y #更新系统
yum install -y curl #安装curl
yum install -y socat #安装socat
- Debian/Ubuntu 命令
apt update -y #更新系统
apt install -y curl #安装curl
apt install -y socat #安装socat
- 安装 Acme 脚本
curl https://get.acme.sh | sh
2021 年 6 月 17 日更新:
从 acme.sh v 3.0.0 开始,acme.sh 使用 Zerossl 作为默认 ca,您必须先注册帐户(一次),然后才能颁发新证书。
登录/注册地址:Log In - ZeroSSL具体操作步骤如下:
1、安装 Acme 脚本之后,请先执行下面的命令(下面的邮箱为你的邮箱) ~/.acme.sh/acme.sh --register-account -m xxxx@xxxx.com
2、其他的命令暂时没有变动
- 80 端口空闲的验证申请
如果你还没有运行任何 web 服务, 80 端口是空闲的, 那么 Acme.sh 还能假装自己是一个 WebServer, 临时监听在 80 端口, 完成验证
~/.acme.sh/acme.sh --issue -d mydomain.com --standalone
- Nginx 的方式验证申请
这种方式需要你的服务器上面已经部署了 Nginx 环境,并且保证你申请的域名已经在 Nginx 进行了 conf 部署。(被申请的域名可以正常被打开)
~/.acme.sh/acme.sh --issue -d mydomain.com --nginx
- DNS 验证申请证书(支持泛解析)
设置 Cloudflare API 令牌
验证 DNS 并申请证书
#以下填写CF账户的API密匙和自己的账户邮箱,API密匙在账户个人资料API令牌的Global API Key
export CF_Key="4f9794c701b6e27884f0da0bab6454de07552"
export CF_Email="xcf8013@gmail.com"
~/.acme.sh/acme.sh --issue --dns dns_cf -d cloudduo.cn -d *.cloudduo.cn
mkdir /root/cert
~/.acme.sh/acme.sh --installcert -d cloudduo.cn --key-file /root/cert/private.key --fullchain-file /root/cert/cert.crt
~/.acme.sh/acme.sh --upgrade --auto-upgrade
chmod -R 755 /root/cert
- DNS 手动模式
手动 dns 方式, 手动在域名上添加一条 txt 解析记录, 验证域名所有权。
警告:不能自动续签,证书到期依然手动申请,很麻烦,建议使用dns api模式申请,可以自动续签。
这里使用ssl1.yunbaike.xyz为例演示.
第一步骤:
~/.acme.sh/acme.sh --issue -d yunbaike.xyz -d *.yunbaike.xyz --dns dns-01
第二步骤:
然后到CF平台等DNS管理页面,在其ssl1.yunbaike.xyz域名管理页面,(上图所示:从acme脚本获取TXT验证信息,复制粘贴到DNS添加解析记录相应位置,)
第三步骤
然后回到服务器终端,使用以下命令验证域名解析
~/.acme.sh/acme.sh --issue -d yunbaike.xyz -d *.yunbaike.xyz --dns dns-01 --renew
- http 的方式验证申请
这种方式需要你的服务器上面已经部署了网站环境。(被申请的域名可以正常被打开)
原理:Acme 自动在你的网站根目录下放置一个文件, (这个文件可以被互联网访问)来验证你的域名所有权,完成验证. 然后就可以生成证书了.
实例代码:(后面的路径请更改为你的 网站根目录 绝对路径 )
~/.acme.sh/acme.sh --issue -d mydomain.com -d www.mydomain.com --webroot /home/wwwroot/mydomain.com/
- 安装证书到指定文件夹
注意, 默认生成的证书都放在安装目录下: ~/.acme.sh/ , 请不要直接使用此目录下的证书文件。 正确的使用方法是使用 --install-cert 命令,并指定目标位置, 然后证书文件会被copy到相应的位置,比如下面的代码
~/.acme.sh/acme.sh --installcert -d mydomain.com --key-file /root/private.key --fullchain-file /root/cert.crt
上面的 /root/private.key 以及 /root/cert.crt 是把密钥和证书安装到 /root 目录,并改名为 private.key 和 cert.crt
更新证书
目前证书在 60 天以后会自动更新, 你无需任何操作. 今后有可能会缩短这个时间, 不过都是自动的, 你不用关心.
更新 Acme 脚本
升级 Acme.sh 到最新版本
~/.acme.sh/acme.sh --upgrade
如果你不想手动升级, 可以开启自动升级:
~/.acme.sh/acme.sh --upgrade --auto-upgrade
之后, acme.sh 就会自动保持更新了.
上面的申请方式并不是全部的 SSL 证书申请方式,只是较为常见而已。