乐趣区

关于https:为多个域名添加HTTPS泛域名多域名证书

之前为本人的网站增加了 SSL 证书,目前曾经稳固运行了 2 年左右。这里为大家介绍一下怎么应用 acme.sh 给本人的多个网站 (主域和多个子域。比方:*.baidu.com) 申请收费的 SSL 证书。

acme.sh 能够通过 acme 协定生成 Let’s Encrypt 颁发的 SSL 证书。

Let’s Encrypt 提供了单域名证书,泛域名证书和多域名证书

0.GitHub 地址:https://github.com/acmesh-off…
1. 在线装置
curl https://get.acme.sh | sh

OR

wget -O -  https://get.acme.sh | sh

创立 acme.sh 别名

alias acme.sh=~/.acme.sh/acme.sh

装置过程中会增加 cronjob,每天自动检测所有证书是否须要更新。查看定时工作(证书有效期个别为 90 天,acme.sh 会在证书生效之前进行自动更新):

crontab -e
2. 设置 acme.sh 主动降级
acme.sh --upgrade --auto-upgrade
3. 应用 DNS API(泛域名证书只能通过 DNS API 申请)

必要条件:域名曾经增加了解析(绑定了服务器 IP)

acme.sh 提供了两种形式进行验证域名所有权,一种是通过 HTTP API,另一种是通过 DNS API。
  • HTTP API 通过批改 Apache 和 NGINX 配置,在根目录增加文件, 通过域名能够拜访到该文件,验证胜利。
  • DNS API 通过云服务商提供的 API(须要云服务商反对),在 DNS 增加一条 TXT 解析记录,增加胜利则验证通过。国内的云服务比方 jdcloud,Aliyun,DNSPod 都能够应用这种形式。如果云服务商不在反对的列表里, 能够应用腾讯云的 DNSPod 作为域名解析

dnsapi 用法说明:https://github.com/acmesh-off…

4. 主动公布证书
a. 登录控制台 (dnsapi 用法说明中有对应服务商地址) 获取 api key id 和 api key secret
b. 导出到零碎变量
export JD_ACCESS_KEY_ID="sdfsdfsdfljlbjkljlkjsdfoiwje"
export JD_ACCESS_KEY_SECRET="xxxxxxx"

``````
#查看增加的零碎变量
echo $JD_ACCESS_KEY_ID
c. 通过 DNS API 验证所有权,并生成证书(证书默认被保留在~/.acme.sh/ 目录中)
acme.sh --issue --dns dns_jd  -d example.com -d '*.example.com'

id 和 key 会被保留到~/.acme.sh/account.conf 文件中,如果 id 或 key 产生变更,可能须要进行批改

d.copy/ 装置 证书(如果不应用 install-cert 命令进行装置,证书更新之后还是被保留在默认目录,会导致已有证书过期之后无奈被自动更新)
acme.sh --install-cert -d myflag.xyz \
--key-file       /etc/nginx/ssl/key.pem  \
--fullchain-file /etc/nginx/ssl/cert.pem \
--reloadcmd     "service nginx force-reload"

只用输出域名即可,不须要增加其余前缀

指定的所有参数都会被自动记录下来, 并在未来证书自动更新当前, 被再次主动调用

退出移动版