使用ACME申请泛域名SSL证书
安装acme.sh curl https://get.acme.sh | sh -s email=my@example.com 创建 一个 bash 的 alias方便你使用 alias acme.sh=~/.acme.sh/acme.sh 注册(可选) acme.sh --register-account -m my@example.com 使用DNS API方式申请 不需要TCP 80端口 不需要WEB服务器 不需要公网IP 导入DNS API: 签发泛域名证书是最好的方式了,申请一个证书任意二级域名都可以使用,非常方便。 根据你的域名服务商提供的DNS API,并导入DNS API,各域名服务商的DNS API请参考官方说明:https://github.com/Neilpang/acme.sh/tree/master/dnsapi 这里以CloudFlare为例,在CloudFlare的控制台里找到自己的DNS API,然后使用以下命令导入到acme.sh中: export CF_Token="yp1dgAKdzglvUUuOBlXqDML2U886eQwiZ******" export CF_Zone_ID="e554bfdafd90d1671303d543c*******" 这个DNS API信息会保存在“~/.acme.sh/account.conf”文件中。 2、申请泛域名证书: 导入域名商的DNS API之后就可以使用以下命令,自动解析DNS(通过api给你的域名添加一条txt解析记录),验证通过后就会下发证书: acme.sh --issue --dns dns_cf -d example.com -d *.example.com 【可选】默认证书提供商是ZeroSSL ECC,可以添加--server letsencrypt更换为letsencrypt,或者 acme.sh --set-default-ca --server letsencrypt 证书申请成功后,默认保存在“~/.acme.sh/example.com_ecc”目录下。注意:“dns_cf”表示使用CloudFlare的DNS API,域名商不同的话此处会不同,请参考上述文档。 默认生成的证书都放在安装目录下: ~/.acme.sh/中的/root/.acme.sh/example.com_ecc/example.com.cer和/root/.acme.sh/example.com_ecc/example.com.key但是不要在web服务器中直接引用目录下的证书文件,也不要手动来拷贝证书文件到具体的web服务器中,手动拷贝会导致之后更新证书流程不能完全自动。 正确方式是使用acme.sh的安装证书命令,acme.sh自动拷贝证书文件到具体目录中,拷贝命令会被记录下来,之后自动更新证书流程也会执行此拷贝步骤,从而实现更新证书流程的完全自动化。 创建目录 mkdir /etc/nginx/ssl acme.sh的安装证书命令 acme.sh --install-cert -d example.com \ --key-file /etc/nginx/ssl/example.com.key \ --fullchain-file /etc/nginx/ssl/example.com.cer \ --reloadcmd "service nginx force-reload" 配置nginx ...