• 使用acme.sh从Let's Encrypt签发SSL证书


     1.关于let's encryptacme.sh的简介

    1.1 let's encrypt

    Let's Encrypt是一个于2015年三季度推出的数字证书认证机构,旨在以自动化流程消除手动创建和安装证书的复杂流程,并推广使万维网服务器的加密连接无所不在,为安全网站提供免费的SSL/TLS证书。

    Let's Encrypt由互联网安全研究小组(缩写ISRG)提供服务。主要赞助商包括电子前哨基金会、Mozilla基金会、Akamai以及思科。201549日,ISRGLinux基金会宣布合作。

    用以实现新的数字证书认证机构的协议被称为自动证书管理环境(ACME)。GitHub上有这一规范的草案,且提案的一个版本已作为一个Internet草案发布。

    Let's Encrypt宣称这一过程将十分简单、自动化并且免费

    1.2 acme.sh

    简单来说acme.sh 实现了 acme 协议, 可以从 lets encrypt 生成免费的证书。

    acme.sh 有以下特点:

    一个纯粹用ShellUnix shell)语言编写的ACME协议客户端。

    完整的ACME协议实施。 支持ACME v1ACME v2 支持ACME v2通配符证书

    简单,功能强大且易于使用。你只需要3分钟就可以学习它。

    Let's Encrypt免费证书客户端最简单的shell脚本。

    纯粹用Shell编写,不依赖于python或官方的Let's Encrypt客户端。

    只需一个脚本即可自动颁发,续订和安装证书。 不需要root/sudoer访问权限。

    支持在Docker内使用,支持IPv6

    2.安装acme.sh

    2.1 执行安装

    https://github.com/Neilpang/acme.sh/wiki/dns-manual-mode

    安装很简单, 一个命令:

    curl  https://get.acme.sh | sh

    脚本会根据系统不通选择不同的下载方式:

    [root@clsn.io /opt]

    #wget -O -  https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh | INSTALLONLINE=1  sh

    --2018-11-13 15:31:42--  https://raw.githubusercontent.com/Neilpang/acme.sh/master/acme.sh

    正在解析主机 raw.githubusercontent.com... 151.101.0.133, 151.101.64.133, 151.101.128.133, ...

    正在连接 raw.githubusercontent.com|151.101.0.133|:443... 已连接。

    已发出 HTTP 请求,正在等待回应... 200 OK

    长度:168608 (165K) [text/plain]

    正在保存至: STDOUT

    100%[======================================================================>] 168,608     --.-K/s   in 0.07s

    2018-11-13 15:31:42 (2.38 MB/s) - 已写入标准输出 [168608/168608]

    [20181113日 星期二 15:31:42 CST] Installing from online archive.

    [20181113日 星期二 15:31:42 CST] Downloading https://github.com/Neilpang/acme.sh/archive/master.tar.gz

    [20181113日 星期二 15:31:43 CST] Extracting master.tar.gz

    [20181113日 星期二 15:31:43 CST] It is recommended to install socat first.

    [20181113日 星期二 15:31:43 CST] We use socat for standalone server if you use standalone mode.

    [20181113日 星期二 15:31:43 CST] If you don't use standalone mode, just ignore this warning.

    [20181113日 星期二 15:31:43 CST] Installing to /root/.acme.sh

    [20181113日 星期二 15:31:43 CST] Installed to /root/.acme.sh/acme.sh

    [20181113日 星期二 15:31:43 CST] Installing alias to '/root/.bashrc'

    [20181113日 星期二 15:31:43 CST] OK, Close and reopen your terminal to start using acme.sh

    [20181113日 星期二 15:31:43 CST] Installing alias to '/root/.cshrc'

    [20181113日 星期二 15:31:43 CST] Installing alias to '/root/.tcshrc'

    [20181113日 星期二 15:31:43 CST] Installing cron job

    #未知信息,已禁用 :34 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

    [20181113日 星期二 15:31:43 CST] Good, bash is found, so change the shebang to use bash as preferred.

    [20181113日 星期二 15:31:44 CST] OK

    [20181113日 星期二 15:31:44 CST] Install success!

    2.2 安装后的配置

    普通用户和 root 用户都可以安装使用。

    安装过程进行了以下几步:

    acme.sh 安装到你的 home 目录下:~/.acme.sh/并创建 一个 bash alias, 方便你的使用:

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

    echo 'alias acme.sh=~/.acme.sh/acme.sh' >>/etc/profile

    安装过程中会自动为你创建 cronjob, 每天 0:00 点自动检测所有的证书, 如果快过期了, 需要更新, 则会自动更新证书。

    00 00 * * * root /root/.acme.sh/acme.sh --cron --home /root/.acme.sh &>/var/log/acme.sh.logs

    更高级的安装选项请参考: https://github.com/Neilpang/acme.sh/wiki/How-to-install

    在该脚本的安装过程不会污染已有的系统任何功能和文件, 所有的修改都限制在安装目录中: ~/.acme.sh/

    3.申请证书

    acme.sh 实现了 acme 协议支持的所有验证协议. 一般有两种方式验证: http dns 验证。

    3.1 HTTP 方式

    http 方式需要在你的网站根目录下放置一个文件, 来验证你的域名所有权,完成验证. 然后就可以生成证书了.

    acme.sh  --issue  -d clsn.io -d *.clsn.io  --webroot  /www/wwwroot/clsn.io/

    只需要指定域名, 并指定域名所在的网站根目录. acme.sh 会全自动的生成验证文件, 并放到网站的根目录, 然后自动完成验证. 最后会聪明的删除验证文件. 整个过程没有任何副作用.

    如果你用的 apache服务器, acme.sh 还可以智能的从 apache的配置中自动完成验证, 你不需要指定网站根目录:

    acme.sh --issue  -d clsn.io   --clsn.io

    如果你用的 nginx服务器, 或者反代, acme.sh 还可以智能的从 nginx的配置中自动完成验证, 你不需要指定网站根目录:

    acme.sh --issue  -d clsn.io  --nginx

    注意, 无论是 apache 还是 nginx 模式, acme.sh在完成验证之后, 会恢复到之前的状态, 都不会私自更改你本身的配置. 好处是你不用担心配置被搞坏。

    该类型的配置有一个缺点, 你需要自己配置 ssl 的配置, 否则只能成功生成证书, 你的网站还是无法访问https. 但是为了安全, 你还是自己手动改配置吧.

    如果你还没有运行任何 web 服务, 80 端口是空闲的, 那么 acme.sh 还能假装自己是一个webserver, 临时听在80 端口, 完成验证:

    acme.sh  --issue -d clsn.io   --standalone

    更高级的用法请参考: https://github.com/Neilpang/acme.sh/wiki/How-to-issue-a-cert

    3.2 DNS方式

    这种方式的好处是, 你不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可完成验证。

    这种方式的缺点是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法自动更新证书,每次都需要手动再次重新解析验证域名所有权。

    3.2.1 颁发证书

    [root@clsn.io /opt]

    #cd /root/.acme.sh/

    [root@clsn.io /root/.acme.sh]

    #acme.sh --issue -d *.clsn.io -d clsn.io --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

    [20181113日 星期二 15:34:55 CST] Creating domain key

    [20181113日 星期二 15:34:55 CST] The domain key is here: /www/server/panel/vhost/cert/*.clsn.io/*.clsn.io.key

    [20181113日 星期二 15:34:55 CST] Multi domain='DNS:*.clsn.io,DNS:clsn.io'

    [20181113日 星期二 15:34:55 CST] Getting domain auth token for each domain

    [20181113日 星期二 15:34:56 CST] Getting webroot for domain='*.clsn.io'

    [20181113日 星期二 15:34:57 CST] Getting webroot for domain='clsn.io'

    [20181113日 星期二 15:34:57 CST] Add the following TXT record:

    [20181113日 星期二 15:34:57 CST] Domain: '_acme-challenge.clsn.io'

    [20181113日 星期二 15:34:57 CST] TXT value: '9rj0bhiGrO9UJ44XgV0APXuGBRL1vOk4XKdsnnxaIf4'

    [20181113日 星期二 15:34:57 CST] Please be aware that you prepend _acme-challenge. before your domain

    [20181113日 星期二 15:34:57 CST] so the resulting subdomain will be: _acme-challenge.clsn.io

    [20181113日 星期二 15:34:57 CST] Add the following TXT record:

    [20181113日 星期二 15:34:57 CST] Domain: '_acme-challenge.clsn.io'

    [20181113日 星期二 15:34:57 CST] TXT value: 'yJ4Ca9yVg1Fsp4RhH5XZJohh0eE3dFXEKM2KGUFNHio'

    [20181113日 星期二 15:34:57 CST] Please be aware that you prepend _acme-challenge. before your domain

    [20181113日 星期二 15:34:57 CST] so the resulting subdomain will be: _acme-challenge.clsn.io

    [20181113日 星期二 15:34:57 CST] Please add the TXT records to the domains, and re-run with --renew.

    [20181113日 星期二 15:34:57 CST] Please add '--debug' or '--log' to check more details.

    [20181113日 星期二 15:34:57 CST] See: https://github.com/Neilpang/acme.sh/wiki/How-to-debug-acme.sh

    3.2.2 修改DNS

    NS管理方修改主机记录

    3.2.3 验证解析是否生效

    $dig -t txt  _acme-challenge.clsn.io @8.8.8.8

    ; <<>> DiG 9.9.7-P3 <<>> -t txt _acme-challenge.clsn.io @8.8.8.8

    ;; global options: +cmd

    ;; Got answer:

    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35785

    ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

    ;; OPT PSEUDOSECTION:

    ; EDNS: version: 0, flags:; udp: 512

    ;; QUESTION SECTION:

    ;_acme-challenge.clsn.io.   IN  TXT

    ;; ANSWER SECTION:

    _acme-challenge.clsn.io. 599    IN  TXT "yJ4Ca9yVg1Fsp4RhH5XZJohh0eE3dFXEKM2KGUFNHio"

    _acme-challenge.clsn.io. 599    IN  TXT "9rj0bhiGrO9UJ44XgV0APXuGBRL1vOk4XKdsnnxaIf4"

    ;; Query time: 2502 msec

    ;; SERVER: 8.8.8.8#53(8.8.8.8)

    ;; WHEN: Tue Nov 13 15:40:55 CST 2018

    ;; MSG SIZE  rcvd: 164

    3.2.4 生成证书

    获取Lets Encrypt免费泛域名证书。等DNS解析生效后,运行以下命令重新生成证书:

    [root@clsn.io /root/.acme.sh]

    #acme.sh --renew  -d *.clsn.io -d clsn.io --dns --yes-I-know-dns-manual-mode-enough-go-ahead-please

    [20181113日 星期二 15:39:26 CST] Renew: '*.clsn.io'

    [20181113日 星期二 15:39:26 CST] Multi domain='DNS:*.clsn.io,DNS:clsn.io'

    [20181113日 星期二 15:39:27 CST] Getting domain auth token for each domain

    [20181113日 星期二 15:39:27 CST] Verifying:*.clsn.io

    [20181113日 星期二 15:39:29 CST] Success

    [20181113日 星期二 15:39:29 CST] Verifying:clsn.io

    [20181113日 星期二 15:39:32 CST] Success

    [20181113日 星期二 15:39:32 CST] Verify finished, start to sign.

    [20181113日 星期二 15:39:33 CST] Cert success.

    -----BEGIN CERTIFICATE-----

    MIIFUzCCBDugAwIBAgISBFW6y9vj0CLdCtlbjd5uRZFoMA0GCSqGSIb3DQEBCwUA

    MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD

    ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODExMTMwNjM5MzJaFw0x

    OTAyMTEwNjM5MzJaMBQxEjAQBgNVBAMMCSouY2xzbi5pbzCCASIwDQYJKoZIhvcN

    AQEBBQADggEPADCCAQoCggEBANsBQz9vlST55GYdf/F9awtMqnwa2S+4nftk75NJ

    s8zRLmj0LvtgZCn0fXgpNH4zAGRR3qzx7VGU80pDg539Kn8k3peoOFxRq5J3JCK2

    NhvVLws7HspIsgHXngf3AyawUg+QN69K50ZDNF6/brgnOiNbmSY5fF2F9zXkNCd2

    4Nsg8ptmYs3RL99ZM2CvjgLLgey3CPAuMWCse8afA4tHJ4pEZRk3dBTtWXy4q2wl

    Uba8K4LuDmqOkWmQ7x3ufrq+1pQUTVQeJbKVQeDHsWQgFJVYnuHrGdd8mbz08quB

    g4ruNCRnkHM1Fyxfu71IEnH1dutIeHv5OAvC3XMJUFE44kMCAwEAAaOCAmcwggJj

    MA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIw

    DAYDVR0TAQH/BAIwADAdBgNVHQ4EFgQUP0ZkyUrkFWnJMVT/zGVVTfhJudgwHwYD

    VR0jBBgwFoAUqEpqYwR93brm0Tm3pkVl7/Oo7KEwbwYIKwYBBQUHAQEEYzBhMC4G

    CCsGAQUFBzABhiJodHRwOi8vb2NzcC5pbnQteDMubGV0c2VuY3J5cHQub3JnMC8G

    CCsGAQUFBzAChiNodHRwOi8vY2VydC5pbnQteDMubGV0c2VuY3J5cHQub3JnLzAd

    BgNVHREEFjAUggkqLmNsc24uaW+CB2Nsc24uaW8wTAYDVR0gBEUwQzAIBgZngQwB

    AgEwNwYLKwYBBAGC3xMBAQEwKDAmBggrBgEFBQcCARYaaHR0cDovL2Nwcy5sZXRz

    ZW5jcnlwdC5vcmcwggEEBgorBgEEAdZ5AgQCBIH1BIHyAPAAdgDiaUuuJujpQAno

    hhu2O4PUPuf+dIj7pI8okwGd3fHb/gAAAWcMAtr/AAAEAwBHMEUCIDn0gs520um3

    dbTpgm3J/QhbjCwVG7Ln8cmONkhiA0S/AiEAqV2/kS63iMF4TGOVQ9s206OPnyx8

    1sLMm7NQfGrUNsYAdgApPFGWVMg5ZbqqUPxYB9S3b79Yeily3KTDDPTlRUf0eAAA

    AWcMAtsEAAAEAwBHMEUCIQDqMPOXRxylye3P2SBDP/DIeDlsa8QFcWM0lYKCmYQW

    zwIgGhTWGjpMOnw4fkoygDE3mHceg+k2vqUBPTwCfu+qRNIwDQYJKoZIhvcNAQEL

    BQADggEBADZWQ8ms7VG10pSQVGg98VHnRE9VfgYq+zCpoJdjVv3OZZ+3hZGkxlQU

    jbpQDPdx2x2KWrhPIlSylZpw1KHFjXq5pwZpkcVjkTO5tkB4+XRsUl0dENj5HGMN

    pwNRPNsiWMnvxiQgKnCpIPPVTOGsajJ5ByQA4+Vni3VNvEEAOurN024e0rfzxhYV

    oXBnb7tK01+HIzoOBsOl9FRbIzkmuogjCrbjU8dBudAKPNAPmFS6bwFnYeFWO2G7

    DhyNrlDFJodx8JjZ9qnzD53gCfutYzsftN3jwBBiGxRpLyWXXAQLqBN5QrkTwL+h

    PFn9Tul9nibZXRIQsyutHx7jFMtAyOY=

    -----END CERTIFICATE-----

    [20181113日 星期二 15:39:33 CST] Your cert is in  clsn.io/clsn.io.cer

    [20181113日 星期二 15:39:33 CST] Your cert key is in  /www/server/panel/vhost/cert/clsn.io/clsn.io.key

    [20181113日 星期二 15:39:33 CST] The intermediate CA cert is in  /www/server/panel/vhost/cert/clsn.io/ca.cer

    [20181113日 星期二 15:39:33 CST] And the full chain certs is there:  /www/server/panel/vhost/cert/clsn.io/fullchain.cer

    [20181113日 星期二 15:39:33 CST] It seems that you are using dns manual mode. please take care: The dns manual mode can not renew automatically, you must issue it again manually. You'd better use the other modes instead.

    [20181113日 星期二 15:39:33 CST] Call hook error.

    注意第二次这里用的是 --renew

    3.3 DNS API方式

    dns 方式的真正强大之处在于可以使用域名解析商提供的 api 自动添加 txt 记录完成验证.

    acme.sh 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成.

    dnspod 为例, 你需要先登录到 dnspod 账号, 生成你的 api id api key, 都是免费的. 然后:

    export DP_Id="76GJHG4SG1Q"

    export DP_Key="qaEDHSJiokjhfs"

    acme.sh   --issue   --dns dns_dp   -d clsn.io  -d www.clsn.io

    证书就会自动生成了. 这里给出的 api id api key 会被自动记录下来, 将来你在使用 dnspod api 的时候, 就不需要再次指定了. 直接生成就好了:

    acme.sh  --issue   -d  clsn.io   --dns  dns_dp

    更详细的 api 用法:https://github.com/Neilpang/acme.sh/blob/master/dnsapi/README.md

    ===============================================================================================================================

    域名运营商DNS API操作方式

    1.使用 CloudFlare API 自动颁发证书

    首先,您需要登录您的 CloudFlare 帐户才能获取您的API密钥。

    export CF_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"

    export CF_Email="xxxx@sss.com"

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_cf -d example.com -d www.example.com

    CF_KeyCF_Email将被保存~/.acme.sh/account.conf并且在需要时将被重用。

    2.使用 DNSPod.cn 域名 API 自动颁发证书

    首先,您需要登录您的DNSPod 帐户才能获取您的API密钥和 ID

    export DP_Id="1234"

    export DP_Key="sADDsdasdgdsf"

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_dp -d example.com -d www.example.com

    DP_IdDP_Key将被保存~/.acme.sh/account.conf并且在需要时将被重用。

    注:DNSPod 现在采用 Token 调用API,具体调用办法:

    https://www.lizi.tw/soft/5051.html

    3.使用 CloudXNS.com API 自动颁发证书

    首先,您需要登录您的 CloudXNS 帐户才能获取您的 API 密钥和秘密。

    export CX_Key="1234"

    export CX_Secret="sADDsdasdgdsf"

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_cx -d example.com -d www.example.com

    CX_KeyCX_Secret将被保存~/.acme.sh/account.conf并且在需要时将被重用。

    4.使用 GoDaddy.com API 自动颁发证书

    首先,您需要登录您的 GoDaddy 帐户才能获得您的 API 密钥和秘密。

    https://developer.godaddy.com/keys/

    请创建一个生产密钥,而不是测试密钥。

    export GD_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"

    export GD_Secret="asdfsdafdsfdsfdsfdsfdsafd"

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_gd -d example.com -d www.example.com

    GD_KeyGD_Secret将被保存~/.acme.sh/account.conf并且在需要时将被重用。

    5.使用 PowerDNS 嵌入式 API 自动颁发证书

    首先,您需要登录 PowerDNS帐户才能启用该 API 并在配置中设置您的 API 令牌。

    https://doc.powerdns.com/md/httpapi/README/

    export PDNS_Url="http://ns.example.com:8081"

    export PDNS_ServerId="localhost"

    export PDNS_Token="0123456789ABCDEF"

    export PDNS_Ttl=60

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_pdns -d example.com -d www.example.com

    PDNS_UrlPDNS_ServerIdPDNS_TokenPDNS_Ttl将被保存~/.acme.sh/account.conf,需要时会被重用。

    6.使用 OVH / kimsufi / soyoustart / runabove API 自动颁发证书

    https://github.com/Neilpang/acme.sh/wiki/How-to-use-OVH-domain-api

    7.使用 nsupdate 自动发出证书

    首先,生成更新区域的密钥

    b=$(dnssec-keygen -a hmac-sha512 -b 512 -n USER -K /tmp foo)

    cat > /etc/named/keys/update.key <<EOF

    key "update" {

        algorithm hmac-sha512;

        secret "$(awk '/^Key/{print $2}' /tmp/$b.private)";

    };

    EOF

    rm -f /tmp/$b.{private,key}

    将此密钥包含在您的命名配置中

    include "/etc/named/keys/update.key";

    接下来,将您的区域配置为允许动态更新。

    取决于您的命名版本,请使用其中一种

    zone "example.com" {

        type master;

        allow-update { key "update"; };

    };

    要么

    zone "example.com" {

        type master;

        update-policy {

            grant update subdomain example.com.;

        };

    }

    最后,让 DNS 服务器和更新密钥可用 acme.sh

    export NSUPDATE_SERVER="dns.example.com"

    export NSUPDATE_KEY="/path/to/your/nsupdate.key"

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_nsupdate -d example.com -d www.example.com

    NSUPDATE_SERVERNSUPDATE_KEY设置将被保存在~/.acme.sh/account.conf需要的时候将被重用。

    8.使用 LuaDNS 域名 API

    通过https://api.luadns.com/settings获取您的 API 令牌

    export LUA_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"

    export LUA_Email="xxxx@sss.com"

    颁发证书:

    acme.sh --issue --dns dns_lua -d example.com -d www.example.com

    LUA_KeyLUA_Email将被保存~/.acme.sh/account.conf并且在需要时将被重用。

    9.使用 DNSMadeEasy 域名 API

    通过https://cp.dnsmadeeasy.com/account/info获取您的 API 凭据

    export ME_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"

    export ME_Secret="qdfqsdfkjdskfj"

    颁发证书:

    acme.sh --issue --dns dns_me -d example.com -d www.example.com

    ME_KeyME_Secret将被保存~/.acme.sh/account.conf并且在需要时将被重用。

    10.使用 Amazon Route53 API

    https://github.com/Neilpang/acme.sh/wiki/How-to-use-Amazon-Route53-API

    export  AWS_ACCESS_KEY_ID=XXXXXXXXXX

    export  AWS_SECRET_ACCESS_KEY=XXXXXXXXXXXXXXX

    颁发证书:

    acme.sh --issue --dns dns_aws -d example.com -d www.example.com

    AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY将被保存~/.acme.sh/account.conf并且在需要时将被重用。

    11.使用 Aliyun 域名 API 自动颁发证书

    首先,您需要登录您的 Aliyun 帐户才能获取您的 API 密钥。 https://ak-console.aliyun.com/#/accesskey

    export Ali_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"

    export Ali_Secret="jlsdflanljkljlfdsaklkjflsa"

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_ali -d example.com -d www.example.com

    Ali_KeyAli_Secret将被保存~/.acme.sh/account.conf并且在需要时将被重用。

    12.使用 ISPConfig 3.1 API

    这只适用于 ISPConfig 3.1(和更新版本)。

    ISPConfig 控制面板中创建一个远程用户。远程用户至少必须有权访问DNS zone functionsDNS txt functions

    export ISPC_User="xxx"

    export ISPC_Password="xxx"

    export ISPC_Api="https://ispc.domain.tld:8080/remote/json.php"

    export ISPC_Api_Insecure=1

    如果您在另一个端口上安装了 ISPConfig,请相应地更改 8080。如果您的安装没有有效的 ssl 证书,则 Leaver ISPC_Api_Insecure 设置为 1。如果您拥有有效的 ssl 证书,请将其更改为 0

    颁发证书:

    acme.sh --issue --dns dns_ispconfig -d example.com -d www.example.com

    ISPC_UserISPC_PasswordISPC_ApiISPC_Api_Insecure将被保存~/.acme.sh/account.conf,需要时会被重用。

    13.使用 Alwaysdata 域名 API

    首先,您需要登录您的 Alwaysdata 帐户才能获取您的 API 密钥。

    导出 AD_API_KEY = myalwaysdataapikey

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_ad -d example.com -d www.example.com

    AD_API_KEY将保存在~/.acme.sh/account.conf需要的时候将被重用。

    14.使用 Linode 域名 API

    首先,您需要登录您的 Linode 帐户才能获得您的 API 密钥。 https://manager.linode.com/profile/api

    然后添加一个标签为ACMEAPI 密钥并复制新密钥。

    export LINODE_API_KEY = ...

    由于 DNS 记录中任何更改的重新载入时间,我们必须使用该dnssleep选项等待至少 15 分钟才能使更改生效。

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_linode --dnssleep 900 -d xsz.tw -d www.xsz.tw

    LINODE_API_KEY将保存在~/.acme.sh/account.conf需要的时候将被重用。

    15.使用 FreeDNS

    FreeDNShttps://freedns.afraid.org/)不提供更新 DNS 记录的 APIIPv4 IPv6 动态 DNS 地址除外)。acme.sh 插件因此通过登录到 FreeDNS 网站来读取并更新域 TXT 记录来读取 HTML 并将更新发布为 HTTP。该插件需要知道 FreeDNS 网站的用户名和密码。

    export FREEDNS_User = ...

     export FREEDNS_Password = ...

    您只需在第一次使用 FreeDNS 验证运行 acme.sh 客户端时提供此信息,然后在 FreeDNS 站点上更改密码时再次提供此信息。acme.sh FreeDNS 插件不存储您的用户标识或密码,而是保存 FreeDNS 返回的认证标记,~/.acme.sh/account.conf并在需要时重新使用它。

    现在您可以颁发证书。

    acme.sh --issue --dns dns_freedns -d example.com -d www.example.com

    请注意,对于 FreeDNS 公共域或您在 FreeDNS 公共域下创建的子域,不能使用 acme.sh 自动 DNS 验证。您必须拥有顶级域名才能在 FreeDNS 中使用 acme.sh 自动验证。

    16.使用 cyon.ch

    你只需要设置你的 cyon.ch 登录凭证。如果您还启用了 2 因子身份验证(OTP),则需要设置您的秘密令牌并已oathtool安装。

    export CY_Username="your_cyon_username"

    export CY_Password="your_cyon_password"

    export CY_OTP_Secret="your_otp_secret" # Only required if using 2FA

    颁发证书:

    acme.sh --issue --dns dns_cyon -d example.com -d www.example.com

    这个CY_UsernameCY_Password并且CY_OTP_Secret将被保存~/.acme.sh/account.conf并且在需要时将被重用。

    17.使用 Domain-Offensive / Reseller 界面/ Domainrobot API

    您需要将您的登录凭证(合作伙伴 ID +密码)加入经销商界面,并在运行之前导出它们acme.sh

    export DO_PID="KD-1234567"

    export DO_PW="cdfkjl3n2"

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_do -d lizi.tw -d www.lizi.tw

    18.使用 Gandi LiveDNS API

    您必须先启用新的 Gandi LiveDNS API 并创建您的 api 密钥,请参阅:http ://doc.livedns.gandi.net/

    export GANDI_LIVEDNS_KEY="fdmlfsdklmfdkmqsdfk"

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_gandi_livedns -d example.com -d www.example.com

    19.使用结(knsupdateDNS API 自动颁发证书

    首先,生成用于更新区域的 TSIG 密钥。

    keymgr tsig generate -t acme_key hmac-sha512 > /etc/knot/acme.key

    将此密钥包含在结配置文件中。

    include: /etc/knot/acme.key

    接下来,将您的区域配置为允许动态更新。

    该区域的动态更新可通过适当的 ACL 规则与update动作来实现。有关详细说明,请参阅结 DNS 的文档。

    acl:

      - id: acme_acl

        address: 192.168.1.0/24

        key: acme_key

        action: update

    zone:

      - domain: example.com

        file: example.com.zone

        acl: acme_acl

    最后,让 DNS 服务器和 TSIG 密钥可用 acme.sh

    export KNOT_SERVER="dns.example.com"

    export KNOT_KEY=`grep # /etc/knot/acme.key | cut -d' ' -f2`

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_knot -d example.com -d www.example.com

    KNOT_SERVERKNOT_KEY设置将被保存在~/.acme.sh/account.conf需要的时候将被重用。

    20.使用 DigitalOcean API(本机)

    您需要从 DigitalOcean 帐户获取可读写的 API 密钥。请参阅:https : //www.digitalocean.com/help/api/

    export DO_API_KEY="75310dc4ca779ac39a19f6355db573b49ce92ae126553ebd61ac3a3ae34834cc"

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_dgon -d example.com -d www.example.com

    21.使用 ClouDNS.net API

    您需要设置 HTTP API 用户标识和密码凭证。请参阅:https//www.cloudns.net/wiki/article/42/。出于安全原因,建议使用只能访问必要区域的子用户 ID,因为常规 API 用户可以访问整个帐户。

    # Use this for a sub auth ID

    export CLOUDNS_SUB_AUTH_ID=XXXXX

    # Use this for a regular auth ID

    #export CLOUDNS_AUTH_ID=XXXXX

    export CLOUDNS_AUTH_PASSWORD="YYYYYYYYY"

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_cloudns -d example.com -d www.example.com

    CLOUDNS_AUTH_IDCLOUDNS_AUTH_PASSWORD将被保存~/.acme.sh/account.conf并且在需要时将被重用。

    22.使用 Infoblox API

    首先,您需要在 Infoblox 设备上创建/获取 API 凭据。

    export Infoblox_Creds="username:password"

    export Infoblox_Server="ip or fqdn of infoblox appliance"

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_infoblox -d example.com -d www.example.com

    注意:此脚本将自动创建并删除临时 txt 记录。该Infoblox_CredsInfoblox_Server将被保存~/.acme.sh/account.conf并且在需要时将被重用。

    23.使用 VSCALE API

    首先,您需要在设置面板上创建/获取 API 令牌。

    VSCALE_API_KEY="sdfsdfsdfljlbjkljlkjsdfoiwje"

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_vscale -d example.com -d www.example.com

    24.使用 Dynu API

    首先,您需要从 Dynu 帐户创建/获取 API 凭据。请参阅:https//www.dynu.com/resources/api/documentation

    export Dynu_ClientId="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"

    export Dynu_Secret="yyyyyyyyyyyyyyyyyyyyyyyyy"

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_dynu -d example.com -d www.example.com

    Dynu_ClientIdDynu_Secret将被保存~/.acme.sh/account.conf并且在需要时将被重用。

    25.使用 DNSimple API

    首先,您需要登录您的 DNSimple 帐户并生成新的 oauth 标记。

    https://dnsimple.com/a/{your帐户 ID} /帐户/ access_tokens

    请注意,这是一个帐户令牌,而不是用户令牌。需要帐户令牌来推断account_id使用的请求。用户令牌将无法确定要使用的正确帐户。

    export DNSimple_OAUTH_TOKEN="sdfsdfsdfljlbjkljlkjsdfoiwje"

    要颁发证书只需指定dns_dnsimpleAPI

    acme.sh --issue --dns dns_dnsimple -d example.com

    DNSimple_OAUTH_TOKEN将保存在~/.acme.sh/account.conf需要的时候将被重用。

    如果您对此集成有任何问题,请将其报告至 https://github.com/pho3nixf1re/acme.sh/issues

    26.使用 NS1.com API

    export NS1_Key="fdmlfsdklmfdkmqsdfk"

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_nsone -d example.com -d www.example.com

    27.使用 DuckDNS.org API

    export DuckDNS_Token="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"

    请注意,由于 DuckDNS 使用 StartSSL 作为他们的证书提供者,因此在颁发证书时可能需要使用–insecure

    acme.sh --insecure --issue --dns dns_duckdns -d mydomain.duckdns.org

    有关问题,请报告https://github.com/raidenii/acme.sh/issues

    28.使用 Name.com API

    您需要在https://www.name.com/reseller/apply填写表格以申请 API 用户名和标记。

    export Namecom_Username="testuser"

    export Namecom_Token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

    现在您可以通过以下方式签发证书:

    acme.sh --issue --dns dns_namecom -d example.com -d www.example.com

    有关问题,请报告https://github.com/raidenii/acme.sh/issues

    29.使用 Dyn Managed DNS API 自动颁发证书

    首先,登录您的 Dyn Managed DNS 帐户:https : //portal.dynect.net/login/

    建议添加特定于 API 访问的新用户。

    要求的最低“区域和记录权限”是:

    RecordAdd

    RecordUpdate

    RecordDelete

    RecordGet

    ZoneGet

    ZoneAddNode

    ZoneRemoveNode

    ZonePublish

    API 用户凭据传递给环境:

    export DYN_Customer="customer"

    export DYN_Username="apiuser"

    export DYN_Password="secret"

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_dyn -d example.com -d www.example.com

    这个DYN_CustomerDYN_Username并且DYN_Password将被保存~/.acme.sh/account.conf并且在需要时将被重用。

    30.使用 pdd.yandex.ru API

    export PDD_Token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

    按照这些说明获取您的域的令牌https://tech.yandex.com/domain/doc/concepts/access-docpage/

    acme.sh --issue --dns dns_yandex -d mydomain.example.org

    有关问题,请报告https://github.com/non7top/acme.sh/issues

    31.使用 Hurricane Electric

    Hurricane Electrichttps://dns.he.net/)没有 API,因此只需设置您的登录凭证,如下所示:

    export HE_Username="yourusername"

    export HE_Password="password"

    然后你可以发行你的证书:

    acme.sh --issue --dns dns_he -d example.com -d www.example.com

    HE_UsernameHE_Password设置将被保存在~/.acme.sh/account.conf需要的时候将被重用。

    请将任何问题报告给https://github.com/angel333/acme.shme@ondrejsimek.com

    32.使用 UnoEuro API 自动颁发证书

    首先,您需要登录您的 UnoEuro 帐户才能获取您的 API 密钥。

    export UNO_Key="sdfsdfsdfljlbjkljlkjsdfoiwje"

    export UNO_User="UExxxxxx"

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_unoeuro -d example.com -d www.example.com

    UNO_KeyUNO_User将被保存~/.acme.sh/account.conf并且在需要时将被重用。

    33.使用 INWX

    INWX提供一个 带有标准登录凭证的xmlrpc api,将它们设置为:

    export INWX_User="yourusername"

    export INWX_Password="password"

    然后你可以用你的证书签发:

    acme.sh --issue --dns dns_inwx -d example.com -d www.example.com

    INWX_UserINWX_Password设置将被保存在~/.acme.sh/account.conf需要的时候将被重用。

    34.用户 Servercow API v1

    servercow 控制中心创建一个新用户。不要忘记为这个用户激活DNS API

    export SERVERCOW_API_Username=username

    export SERVERCOW_API_Password=password

    现在你不能颁发证书:

    acme.sh --issue --dns dns_servercow -d example.com -d www.example.com

    两者,SERVERCOW_API_Username并且SERVERCOW_API_Password将被保存~/.acme.sh/account.conf,需要时会被重用。

    35.使用 Namesilo.com API

    您需要在https://www.namesilo.com/account_api.php上生成 API 密钥。 您可以选择将访问权限限制在此处的 IP 范围。

    export Namesilo_Key="xxxxxxxxxxxxxxxxxxxxxxxx"

    现在您可以通过以下方式签发证书:

    acme.sh --issue --dns dns_namesilo --dnssleep 900 -d example.com -d www.example.com

    36.使用 autoDNSInternetX

    InternetX提供 带有标准登录凭据的xml api,将它们设置为:

    export AUTODNS_USER="yourusername"

    export AUTODNS_PASSWORD="password"

    export AUTODNS_CONTEXT="context"

    然后你可以用你的证书签发:

    acme.sh --issue --dns dns_autodns -d example.com -d www.example.com

    AUTODNS_USERAUTODNS_PASSWORDAUTODNS_CONTEXT设置将被保存在~/.acme.sh/account.conf需要的时候将被重用。

    37.使用 Azure DNS

    您必须先创建一个服务主体。请参阅:如何使用 Azure DNS

    export AZUREDNS_SUBSCRIPTIONID="12345678-9abc-def0-1234-567890abcdef"

    export AZUREDNS_TENANTID="11111111-2222-3333-4444-555555555555"

    export AZUREDNS_APPID="3b5033b5-7a66-43a5-b3b9-a36b9e7c25ed"

    export AZUREDNS_CLIENTSECRET="1b0224ef-34d4-5af9-110f-77f527d561bd"

    然后你可以用你的证书签发:

    acme.sh --issue --dns dns_azure -d example.com -d www.example.com

    AZUREDNS_SUBSCRIPTIONIDAZUREDNS_TENANTIDAZUREDNS_APPIDAZUREDNS_CLIENTSECRET设置将被保存在~/.acme.sh/account.conf需要的时候将被重用。

    38.使用 selectel.comselectel.ru)域 API 自动颁发证书

    首先,您需要登录您的帐户以获取 API 密钥:https//my.selectel.r u/profile/apikeys

    导出 SL_Key = sdfsdfsdfljlbjkljlkjsdfoiwje

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_selectel -d example.com -d www.example.com

    SL_Key将保存在~/.acme.sh/account.conf需要的时候将被重用。

    39.使用 zonomi.com API 自动颁发证书

    首先,您需要登录到您的帐户以查找您的 API 密钥:http: //zonomi.com/app/dns/dyndns.jsp

    您将在示例网址中找到您的 API 密钥:

    https://zonomi.com/app/dns/dyndns.jsp host = example.com api_key = 1063364558943540954358668888888888

    export ZM_Key = 1063364558943540954358668888888888

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_zonomi -d example.com -d www.example.com

    ZM_Key将保存在~/.acme.sh/account.conf需要的时候将被重用。

    40.使用 DreamHost DNS API

    DNS API 密钥可以在https://panel.dreamhost.com/?tree=home.api上创建。确保创建的密钥添加和删除 privelages

    export DH_API_Key="<api key>"

    acme.sh --issue --dns dns_dreamhost -d example.com -d www.example.com

    DH_API_KEY’将被保存~/.acme.sh/account.conf并在需要时重新使用。

    41.使用 DirectAdmin API

    DirectAdmin 接口具有它自己的让我们加密功能,但是此脚本可用于为不在 DirectAdmin 上托管的名称生成证书

    用户必须提供登录数据和 URL DirectAdmin incl。港口。您可以创建只能访问的用户

    CMD_API_DNS_CONTROL

    CMD_API_SHOW_DOMAINS

    通过使用登录密钥功能。另见https://www.directadmin.com/api.phphttps://www.directadmin.com/features.php?id=1298

    export DA_Api="https://remoteUser:remotePassword@da.domain.tld:8443"

    export DA_Api_Insecure=1

    设置DA_Api_Insecure1 表示不安全,0 表示安全 – >区别在于是否检查 ssl 证书的有效性(0)或是否接受(1

    好的,让我们现在发布一个证书:

    acme.sh --issue --dns dns_da -d example.com -d www.example.com

    DA_ApiDA_Api_Insecure将被保存~/.acme.sh/account.conf并且在需要时将被重用。

    使用自定义 API

    如果你的 API 还不被支持,你可以编写你自己的 DNS API

    假设你想命名为myapi’:

    创建一个名为 bash 的脚本~/.acme.sh/dns_myapi.sh

    在脚本中,您必须有一个名为dns_myapi_add()acme.sh 的函数来添加 DNS 记录。

    然后你可以使用你的 API 来颁发这样的证书:

    acme.sh --issue --dns dns_myapi -d example.com -d www.example.com

    有关更多详细信息,请查看我们的示例脚本:dns_myapi.sh

    请参阅:https//github.com/Neilpang/acme.sh/wiki/DNS-API-Dev-Guide

    使用词典 DNS API

    https://github.com/Neilpang/acme.sh/wiki/How-to-use-lexicon-dns-api

  • 相关阅读:
    C/S和B/S结构区别整理
    JavaScript特点、优缺点及常用框架
    ExtJs特点、优缺点及注意事项
    Oracle SQL 脚本跟踪
    解决 C#中 SQL脚本执行超时 问题
    oracle 时间转化函数及常见函数 .
    Spring.NET 1.3.2 集成 NHibernate 3.2 1 下载软件
    SQL Server 跨服务器 不同数据库之间复制表的数据的方法:
    spring.net nhibernate 分布布式事务(上)
    set xact_abort ON 你懂的, 在分布式数据库事务中,用到. 在事务中,若出现错误,系统即默认回滚事务
  • 原文地址:https://www.cnblogs.com/xiaoleimagic/p/12462933.html
Copyright © 2020-2023  润新知