ACME-V2 证书签发协议及开发规范

Summary: Author: 张亚飞 | 阅读时间: 62 minute read | Published: 2019-10-25
Filed under Categories: ACMETags: ACME, Lets encrypt,

ACME-V2 证书签发协议及开发规范

详解 ACME V2 (RFC 8555) 协议,如何从 Let's Encrypt 申请到证书

详解 ACME-V2 签发流程

调试 ACME-V2 协议验证流程及开发规范库

开发验证基本流程

本地生成用户账户私钥(pem编码) -> 创建账户(`/acme/new-acct`) -> 创建订单(`/acme/new-order`) -> 获取订单挑战(`/acme/authz-v3`) -> 创建(DNS-TXT)解析挑战签名 -> 验证订单挑战(`/acme/chall-v3`) -> 删除(DNS-TXT)解析挑战签名 -> 完结订单(`acme/finalize`) -> 获取签发证书(`acme/cert`)

为了方便测试验证,安装 acme.sh 客户端

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

准备工作

生成 RSA 用户账户私钥

~/Server/Run/run_s/src/libs/acme-client/data/user

$ openssl genrsa -out coam.key 4096

域名 wsw.io 签发 ACME 域名配置

run_s/data/acme/acme.json

"wsw.io": {
    "acme_name": "wsw.io",
    "acme_wildcards": [
        "wsw.io",
        "*.wsw.io",
        "*.docker.wsw.io"
    ]
}

清除域名 wsw.io 遗留 _acme-challenge.* 解析记录

~/Server/Run/run_s

$ cargo run dns sync -i wsw.io

检查本地已签发证书是否有效

~/Server/Run/run_s/data/acme/cert_list/wsw.io

$ ls
ca.crt  domain.csr  domain.pem  fullchain.crt  private.key  rootchain.pem
$ openssl x509 -text -in domain.pem
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            04:84:6c:c9:08:46:81:4f:11:6a:e9:65:35:00:ba:0f:94:ea
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
        Validity
            Not Before: Jul 30 01:53:43 2019 GMT
            Not After : Oct 28 01:53:43 2019 GMT
        Subject: CN = wsw.io
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:e2:f4:c6:d6:0b:95:1f:0b:79:98:fe:a5:6f:3b:
                    30:3f:05:9b:8d:62:3a:41:e5:49:9b:44:fd:fd:a0:
                    bc:45:b0:07:18:6e:3f:ff:da:61:a2:4b:a4:c0:fe:
                    0a:2b:b5:2b:74:ec:d5:2e:9d:14:9c:0d:2e:e6:ef:
                    1a:32:14:4d:79:db:5f:b3:f9:27:27:13:5b:17:7f:
                    a5:7a:6f:46:df:56:3c:83:b4:4c:5e:10:37:26:61:
                    67:af:05:0f:bf:8e:57:79:e0:f4:81:f4:2c:25:0a:
                    a3:1b:bb:74:21:1f:a3:ae:88:e4:1b:f9:ce:ec:f3:
                    ca:eb:cc:01:f5:77:22:e2:55:ed:d7:10:c9:26:b5:
                    97:87:b1:e8:c4:fc:1a:cc:f2:d8:96:e9:ef:72:6a:
                    71:26:37:75:68:46:99:4a:fb:3e:ab:55:3a:96:7f:
                    5d:26:7b:3d:eb:a5:0d:1e:f9:e0:99:86:14:62:d3:
                    d0:7d:70:e8:f1:c7:fe:d2:34:0e:4c:0b:87:c8:76:
                    2f:32:c7:23:19:32:d5:c4:ad:d1:c4:45:22:02:9e:
                    c2:82:5b:85:9f:48:0f:0a:bc:c6:46:41:94:09:e9:
                    b6:eb:bc:12:9b:dc:bf:53:2e:d1:b4:b4:59:4e:5b:
                    16:3d:17:ae:9f:a4:a2:b9:45:3a:8c:64:1c:1f:3d:
                    69:71
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Subject Key Identifier:
                6C:88:39:BE:48:4F:0B:CD:97:33:0A:00:73:98:95:02:EE:83:F1:A5
            X509v3 Authority Key Identifier:
                keyid:A8:4A:6A:63:04:7D:DD:BA:E6:D1:39:B7:A6:45:65:EF:F3:A8:EC:A1

            Authority Information Access:
                OCSP - URI:http://ocsp.int-x3.letsencrypt.org
                CA Issuers - URI:http://cert.int-x3.letsencrypt.org/

            X509v3 Subject Alternative Name:
                DNS:*.wsw.io, DNS:wsw.io
            X509v3 Certificate Policies:
                Policy: 2.23.140.1.2.1
                Policy: 1.3.6.1.4.1.44947.1.1.1
                  CPS: http://cps.letsencrypt.org

            CT Precertificate SCTs:
                Signed Certificate Timestamp:
                    Version   : v1 (0x0)
                    Log ID    : E2:69:4B:AE:26:E8:E9:40:09:E8:86:1B:B6:3B:83:D4:
                                3E:E7:FE:74:88:FB:A4:8F:28:93:01:9D:DD:F1:DB:FE
                    Timestamp : Jul 30 02:53:43.054 2019 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:46:02:21:00:94:0D:D8:35:98:A9:7B:D1:95:FD:5F:
                                FB:14:F3:02:35:D4:2A:57:64:98:ED:6C:C9:CA:F3:E8:
                                A1:C3:4D:EE:2C:02:21:00:BB:B8:28:ED:A8:64:0B:42:
                                C5:76:4D:4E:A1:F2:BA:48:94:5A:51:D5:99:24:3A:A7:
                                77:02:FE:27:2F:9E:A3:C7
                Signed Certificate Timestamp:
                    Version   : v1 (0x0)
                    Log ID    : 63:F2:DB:CD:E8:3B:CC:2C:CF:0B:72:84:27:57:6B:33:
                                A4:8D:61:77:8F:BD:75:A6:38:B1:C7:68:54:4B:D8:8D
                    Timestamp : Jul 30 02:53:43.041 2019 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:46:02:21:00:B1:18:9E:2C:DC:1C:1B:DA:40:46:D2:
                                CA:53:4D:21:D6:EE:A2:CD:8C:8C:6B:8A:1B:E9:10:4D:
                                A2:A5:DD:FF:5A:02:21:00:B5:4C:42:99:70:E9:10:F8:
                                57:34:EE:3B:18:B6:BE:35:23:D1:25:B6:76:16:26:60:
                                55:11:4E:FD:CC:FB:7E:E6
    Signature Algorithm: sha256WithRSAEncryption
         11:78:48:85:f0:5c:d5:5a:f9:8d:88:f9:2d:fc:6a:da:38:3a:
         c6:83:fa:9a:ce:91:1e:94:ce:d9:a5:76:71:2c:4e:bb:80:55:
         e1:df:5e:4e:19:22:25:ad:14:02:12:e0:ad:99:02:d2:32:c8:
         94:5a:2f:d8:5f:f7:b2:5f:7b:02:ac:05:f8:ea:80:45:a6:a4:
         97:e8:19:26:8a:66:aa:e0:e8:5b:55:cb:2a:ea:71:01:43:03:
         61:0d:47:e2:f6:67:b3:09:80:0a:b9:69:62:b8:89:40:bb:37:
         46:c6:54:6b:fd:fc:12:11:82:b6:d5:15:59:35:a9:83:49:4e:
         50:b7:82:57:88:02:0e:7f:a2:c0:d0:14:94:e9:f2:eb:49:fe:
         cb:76:64:59:9c:d2:fb:8d:e4:d0:ab:16:e3:eb:64:50:d4:db:
         09:2e:cd:48:b2:e1:dd:ef:9f:b3:d5:b6:1b:18:62:0f:86:8b:
         d7:e5:8c:73:69:f3:41:2f:cf:f0:b4:23:84:2a:cf:74:a2:73:
         dd:8f:c0:93:40:bd:a8:47:36:86:64:60:4d:03:65:a3:4f:61:
         68:cb:8b:6c:e3:10:a9:31:02:ad:29:f8:4b:72:60:a7:6a:90:
         a4:57:c1:14:f2:10:a2:f8:d4:63:cc:9b:c6:81:b3:84:8d:89:
         d5:15:59:8b
-----BEGIN CERTIFICATE-----
MIIFUDCCBDigAwIBAgISBIRsyQhGgU8RaullNQC6D5TqMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xOTA3MzAwMTUzNDNaFw0x
OTEwMjgwMTUzNDNaMBExDzANBgNVBAMTBndzdy5pbzCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAOL0xtYLlR8LeZj+pW87MD8Fm41iOkHlSZtE/f2gvEWw
BxhuP//aYaJLpMD+Ciu1K3Ts1S6dFJwNLubvGjIUTXnbX7P5JycTWxd/pXpvRt9W
PIO0TF4QNyZhZ68FD7+OV3ng9IH0LCUKoxu7dCEfo66I5Bv5zuzzyuvMAfV3IuJV
7dcQySa1l4ex6MT8Gszy2Jbp73JqcSY3dWhGmUr7PqtVOpZ/XSZ7PeulDR754JmG
FGLT0H1w6PHH/tI0DkwLh8h2LzLHIxky1cSt0cRFIgKewoJbhZ9IDwq8xkZBlAnp
tuu8Epvcv1Mu0bS0WU5bFj0Xrp+korlFOoxkHB89aXECAwEAAaOCAmcwggJjMA4G
A1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYD
VR0TAQH/BAIwADAdBgNVHQ4EFgQUbIg5vkhPC82XMwoAc5iVAu6D8aUwHwYDVR0j
BBgwFoAUqEpqYwR93brm0Tm3pkVl7/Oo7KEwbwYIKwYBBQUHAQEEYzBhMC4GCCsG
AQUFBzABhiJodHRwOi8vb2NzcC5pbnQteDMubGV0c2VuY3J5cHQub3JnMC8GCCsG
AQUFBzAChiNodHRwOi8vY2VydC5pbnQteDMubGV0c2VuY3J5cHQub3JnLzAbBgNV
HREEFDASgggqLndzdy5pb4IGd3N3LmlvMEwGA1UdIARFMEMwCAYGZ4EMAQIBMDcG
CysGAQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5
cHQub3JnMIIBBgYKKwYBBAHWeQIEAgSB9wSB9ADyAHcA4mlLribo6UAJ6IYbtjuD
1D7n/nSI+6SPKJMBnd3x2/4AAAFsQMw/DgAABAMASDBGAiEAlA3YNZipe9GV/V/7
FPMCNdQqV2SY7WzJyvPoocNN7iwCIQC7uCjtqGQLQsV2TU6h8rpIlFpR1ZkkOqd3
Av4nL56jxwB3AGPy283oO8wszwtyhCdXazOkjWF3j711pjixx2hUS9iNAAABbEDM
PwEAAAQDAEgwRgIhALEYnizcHBvaQEbSylNNIdbuos2MjGuKG+kQTaKl3f9aAiEA
tUxCmXDpEPhXNO47GLa+NSPRJbZ2FiZgVRFO/cz7fuYwDQYJKoZIhvcNAQELBQAD
ggEBABF4SIXwXNVa+Y2I+S38ato4OsaD+prOkR6UztmldnEsTruAVeHfXk4ZIiWt
FAIS4K2ZAtIyyJRaL9hf97JfewKsBfjqgEWmpJfoGSaKZqrg6FtVyyrqcQFDA2EN
R+L2Z7MJgAq5aWK4iUC7N0bGVGv9/BIRgrbVFVk1qYNJTlC3gleIAg5/osDQFJTp
8utJ/st2ZFmc0vuN5NCrFuPrZFDU2wkuzUiy4d3vn7PVthsYYg+Gi9fljHNp80Ev
z/C0I4Qqz3Sic92PwJNAvahHNoZkYE0DZaNPYWjLi2zjEKkxAq0p+EtyYKdqkKRX
wRTyEKL41GPMm8aBs4SNidUVWYs=
-----END CERTIFICATE-----

查看证书过期时间

~/Server/Run/run_s/data/acme/cert_list/wsw.io

$ openssl x509 -enddate -noout -in domain.pem
notAfter=Oct 28 01:53:43 2019 GMT

查看 pem 证书是否会在24小时内过期

$ openssl x509 -checkend 86400 -noout -in domain.pem
Certificate will not expire

签发 DNS 泛域名证书

第一步: 获取 ACME 目录

ACME 客户端通过 GET 请求 https://acme-v02.api.letsencrypt.org/directory 接口

http -v https://acme-v02.api.letsencrypt.org/directory

ACME 请求响应头

Response { url: "https://acme-v02.api.letsencrypt.org/directory", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:03:44 GMT", "content-type": "application/json", "content-length": "658", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }

ACME 请求响应内容

{
  "F5tQlwVaqmg": "https://community.letsencrypt.org/t/adding-random-entries-to-the-directory/33417",
  "keyChange": "https://acme-v02.api.letsencrypt.org/acme/key-change",
  "meta": {
    "caaIdentities": [
      "letsencrypt.org"
    ],
    "termsOfService": "https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf",
    "website": "https://letsencrypt.org"
  },
  "newAccount": "https://acme-v02.api.letsencrypt.org/acme/new-acct",
  "newNonce": "https://acme-v02.api.letsencrypt.org/acme/new-nonce",
  "newOrder": "https://acme-v02.api.letsencrypt.org/acme/new-order",
  "revokeCert": "https://acme-v02.api.letsencrypt.org/acme/revoke-cert"
}

其中

  • newAccount 字段是用于上传 account key 时候调用
  • newNonce 是业务流程(如申请、撤销) 时候需要预请求获取一次性令牌的一个接口
  • newOrder 是用于下单的接口
  • revokeCert 是用于撤销证书的接口
  • keyChange 是用于更换 KeyPair 的接口
  • hB5pQoXIhOg 是特殊的随机的字段,可能随意的出现在 json 的头、中、尾部,作用是为了避免开发者集成客户端时候[1],采用 定位法取 json 的数据,导致扩展性变差而引入的属性.

第二步: 注册 ACME 账户

https://acme-v02.api.letsencrypt.org/acme/new-acct

我们在创建账户时,如果你使用 acme.sh 工具会自动平滑请求 new account 接口,需要执行如下命令:

$ ~/.acme.sh/acme.sh --register-account  --accountemail zyf@lonal.com
[Sun Oct 13 19:53:43 CST 2019] Registering account
[Sun Oct 13 19:53:46 CST 2019] Registered
[Sun Oct 13 19:53:46 CST 2019] ACCOUNT_THUMBPRINT='iERqap12QVE3j83ZEJaQosnFhyFZqBs9ElQeeNTQEdE'

通过网络抓包, 我们可以观察到, 除了 /directory 接口外, 其依次调用了如下接口

  • /acme/new-nonce
  • /acme/new-acct

手动调用 /acme/new-nonce 接口

http -v HEAD https://acme-v02.api.letsencrypt.org/acme/new-nonce Content-Type:application/jose+json

Response { url: "https://acme-v02.api.letsencrypt.org/acme/new-nonce", status: 204, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:03:45 GMT", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "replay-nonce": "0102jDNrP5SRCc6rJfvQf28aopMGvteNJFyWiukU_pzU5-Q", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }

需要特别注意, 此请求是 HEAD, 而不是 GET.其中 Replay-Nonce 必须提供, Content-Length 必须为 0, 否则客户端会异常.

https://acme-v02.api.letsencrypt.org/acme/new-acct

原始接口参数信息

[2019-10-25 11:03:45][acme_client::libs::v2][TRACE] [获取请求凭证->get_nonce()][nonce: Ok("0102jDNrP5SRCc6rJfvQf28aopMGvteNJFyWiukU_pzU5-Q")]
[2019-10-25 11:03:45][acme_client::libs::v2][TRACE] [接口请求地址->request()->jws()][request_acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/new-acct]
[2019-10-25 11:03:45][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][payload: {"termsOfServiceAgreed":true,"contact":["mailto: zyf@iirii.com"],"email":"admin@iirii.com"}]
[2019-10-25 11:03:45][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][protected: {"alg": String("RS256"), "nonce": String("0102jDNrP5SRCc6rJfvQf28aopMGvteNJFyWiukU_pzU5-Q"), "jwk": Object({"e": String("AQAB"), "kty": String("RSA"), "n": String("5H15UqCfXJJwkuX-vsMB9mV0QHcsYOLDcexJZpEkXmzFHOIDiKBoJzVxmoK9XK4plR3SLvNczkDTKsYdegd6jyO5xW-CHFkviJMXr30_5IYkjVpXakJJumblcTo5owzNRMTuylqewVB29I92GmDPGLsyAmUi8bmeYRa381omMi5SBFModRPamiYxeQG_HsyOalZbeoZfCoT6CnxeJWevxIqV8MvCS9qwfrdqnNFw1uihKIlaijaMvKZ42-8z6iZ7zT2G65wt5_GXKi0eE90xVX6d0zaD6NmWeAGbKYPu6F9rfxaMfQgP_S-iTq1BTM2gBIPa_VzMNRIeOK3VKGqs60lDF700TIWgzvnPgs3QdAcHgouehPZe0xfOWg_J7_sv-yz0ZI9srfnibjU_gcc3xsdHxCvCzSONLjiz9cT6-QkTNVziN1QeC3SALBZkxoJ1UoRkE9okrjlVBXITlBJ-YIxUGJlMQX5xEbExr7w5n7GG1bBbOCClmpCzcXRY2ZIMqKB82ZaRmF6dMJAbmQCaTQ0VheIAu3N_3K-hR-76Mu7iDqdTKrTHRL5sQ7ZWyFLXNq7wSjnkP0pjbovAVfwW4HmQXVeIM8SR7g4foRz4Zr15cOVHSmLPxWHVmYZ9R9LWv6PIK8bg6ChuaksWtzUMJFtHOdnqHp98fA8LbdvBowc")}), "url": String("https://acme-v02.api.letsencrypt.org/acme/new-acct")}]
[2019-10-25 11:03:45][acme_client::libs::v2][TRACE] [接口签名结果->request()->jws()][signature: y3OkcPv2UlUs1sJBTOyh_rKHjQv1dSjxLzgmUSnrDl8eDMUQ-i_u4PW1NFX9iQtb2BOyvjkob7Eh7spRw1k1GKddaLSf9pbV_y7MM0GhY5i86LwXbqP7ZPt5JgUF58Mbw4NQVb5uzVWDiBvqv9gBGC_gTcyp45vQYofvId7WjyniBjvlk6bAIYv9Vg0tLySDsaqrkcIYhi-kMuDjzVZtwlN6bb2ZCxIsUNvC9QtrDV9Cu_b6ingbyJoxOwQz3yWtKIBxDRACeVqzeb2oqG8Awigw_fP_M2ESlBUMefp-Dpc9MySLoecxyXW5EFnf7gLbEdP_KpGvL-pyGkFwNfWEvFShKHz3NHmpR3L31R_olZWE3-5_ie5acOe7JP1t48dByQsyJLEWR6jrTLSEsX7XkCdGFdOgHG2ccIZCl8qfk_i1fUhCFb7LuoDi8lGmp-2NF-JG84sRF7welP0txHTc9HyXCeIo4y24-quyd__oXKllZPMPK9HDLzYaLC9Jv521DwEu4UZgILIS_T0q2nQfI-ZDqkPHs2n-XUjFT_EMzWCFrPuAAeFNhmGZt_jESe4D0l3AyVGk-S5ulSWJW7IY6oQLRJct1AIErbhu7SfHCi8sUDQGX3eokL68PsL7NJzggYu_CHBv_IrHgGngVHSNN1nSqClFzxs-8mMWB6smx7Q]

ACME 请求参数

{
  "protected": "eyJhbGciOiJSUzI1NiIsIm5vbmNlIjoiMDEwMmpETnJQNVNSQ2M2ckpmdlFmMjhhb3BNR3Z0ZU5KRnlXaXVrVV9welU1LVEiLCJqd2siOnsiZSI6IkFRQUIiLCJrdHkiOiJSU0EiLCJuIjoiNUgxNVVxQ2ZYSkp3a3VYLXZzTUI5bVYwUUhjc1lPTERjZXhKWnBFa1htekZIT0lEaUtCb0p6Vnhtb0s5WEs0cGxSM1NMdk5jemtEVEtzWWRlZ2Q2anlPNXhXLUNIRmt2aUpNWHIzMF81SVlralZwWGFrSkp1bWJsY1RvNW93ek5STVR1eWxxZXdWQjI5STkyR21EUEdMc3lBbVVpOGJtZVlSYTM4MW9tTWk1U0JGTW9kUlBhbWlZeGVRR19Ic3lPYWxaYmVvWmZDb1Q2Q254ZUpXZXZ4SXFWOE12Q1M5cXdmcmRxbk5GdzF1aWhLSWxhaWphTXZLWjQyLTh6NmlaN3pUMkc2NXd0NV9HWEtpMGVFOTB4Vlg2ZDB6YUQ2Tm1XZUFHYktZUHU2RjlyZnhhTWZRZ1BfUy1pVHExQlRNMmdCSVBhX1Z6TU5SSWVPSzNWS0dxczYwbERGNzAwVElXZ3p2blBnczNRZEFjSGdvdWVoUFplMHhmT1dnX0o3X3N2LXl6MFpJOXNyZm5pYmpVX2djYzN4c2RIeEN2Q3pTT05Maml6OWNUNi1Ra1ROVnppTjFRZUMzU0FMQlpreG9KMVVvUmtFOW9rcmpsVkJYSVRsQkotWUl4VUdKbE1RWDV4RWJFeHI3dzVuN0dHMWJCYk9DQ2xtcEN6Y1hSWTJaSU1xS0I4MlphUm1GNmRNSkFibVFDYVRRMFZoZUlBdTNOXzNLLWhSLTc2TXU3aURxZFRLclRIUkw1c1E3Wld5RkxYTnE3d1NqbmtQMHBqYm92QVZmd1c0SG1RWFZlSU04U1I3ZzRmb1J6NFpyMTVjT1ZIU21MUHhXSFZtWVo5UjlMV3Y2UElLOGJnNkNodWFrc1d0elVNSkZ0SE9kbnFIcDk4ZkE4TGJkdkJvd2MifSwidXJsIjoiaHR0cHM6Ly9hY21lLXYwMi5hcGkubGV0c2VuY3J5cHQub3JnL2FjbWUvbmV3LWFjY3QifQ",
  "signature": "y3OkcPv2UlUs1sJBTOyh_rKHjQv1dSjxLzgmUSnrDl8eDMUQ-i_u4PW1NFX9iQtb2BOyvjkob7Eh7spRw1k1GKddaLSf9pbV_y7MM0GhY5i86LwXbqP7ZPt5JgUF58Mbw4NQVb5uzVWDiBvqv9gBGC_gTcyp45vQYofvId7WjyniBjvlk6bAIYv9Vg0tLySDsaqrkcIYhi-kMuDjzVZtwlN6bb2ZCxIsUNvC9QtrDV9Cu_b6ingbyJoxOwQz3yWtKIBxDRACeVqzeb2oqG8Awigw_fP_M2ESlBUMefp-Dpc9MySLoecxyXW5EFnf7gLbEdP_KpGvL-pyGkFwNfWEvFShKHz3NHmpR3L31R_olZWE3-5_ie5acOe7JP1t48dByQsyJLEWR6jrTLSEsX7XkCdGFdOgHG2ccIZCl8qfk_i1fUhCFb7LuoDi8lGmp-2NF-JG84sRF7welP0txHTc9HyXCeIo4y24-quyd__oXKllZPMPK9HDLzYaLC9Jv521DwEu4UZgILIS_T0q2nQfI-ZDqkPHs2n-XUjFT_EMzWCFrPuAAeFNhmGZt_jESe4D0l3AyVGk-S5ulSWJW7IY6oQLRJct1AIErbhu7SfHCi8sUDQGX3eokL68PsL7NJzggYu_CHBv_IrHgGngVHSNN1nSqClFzxs-8mMWB6smx7Q",
  "payload": "eyJ0ZXJtc09mU2VydmljZUFncmVlZCI6dHJ1ZSwiY29udGFjdCI6WyJtYWlsdG86IHp5ZkBpaXJpaS5jb20iXSwiZW1haWwiOiJhZG1pbkBpaXJpaS5jb20ifQ"
}

此处 protected 字段 base64_decode 还原后即为

{
  "alg": "RS256",
  "nonce": "0102jDNrP5SRCc6rJfvQf28aopMGvteNJFyWiukU_pzU5-Q",
  "jwk": {
    "e": "AQAB",
    "kty": "RSA",
    "n": "5H15UqCfXJJwkuX-vsMB9mV0QHcsYOLDcexJZpEkXmzFHOIDiKBoJzVxmoK9XK4plR3SLvNczkDTKsYdegd6jyO5xW-CHFkviJMXr30_5IYkjVpXakJJumblcTo5owzNRMTuylqewVB29I92GmDPGLsyAmUi8bmeYRa381omMi5SBFModRPamiYxeQG_HsyOalZbeoZfCoT6CnxeJWevxIqV8MvCS9qwfrdqnNFw1uihKIlaijaMvKZ42-8z6iZ7zT2G65wt5_GXKi0eE90xVX6d0zaD6NmWeAGbKYPu6F9rfxaMfQgP_S-iTq1BTM2gBIPa_VzMNRIeOK3VKGqs60lDF700TIWgzvnPgs3QdAcHgouehPZe0xfOWg_J7_sv-yz0ZI9srfnibjU_gcc3xsdHxCvCzSONLjiz9cT6-QkTNVziN1QeC3SALBZkxoJ1UoRkE9okrjlVBXITlBJ-YIxUGJlMQX5xEbExr7w5n7GG1bBbOCClmpCzcXRY2ZIMqKB82ZaRmF6dMJAbmQCaTQ0VheIAu3N_3K-hR-76Mu7iDqdTKrTHRL5sQ7ZWyFLXNq7wSjnkP0pjbovAVfwW4HmQXVeIM8SR7g4foRz4Zr15cOVHSmLPxWHVmYZ9R9LWv6PIK8bg6ChuaksWtzUMJFtHOdnqHp98fA8LbdvBowc"
  },
  "url": "https://acme-v02.api.letsencrypt.org/acme/new-acct"
}

其中

  • nonce 为上面 /acme/new-nonce 所返回的值.
  • url 为本接口地址
  • alg 为签名算法
  • jwk 为账户公钥数据
  • kty[2] 是 key type 的意思
  • enkty 可以确定一份公钥[3]

POST 参数中的 payload 还原后可得

{
  "termsOfServiceAgreed": true,
  "contact": [
    "mailto: zyf@iirii.com"
  ],
  "email": "admin@iirii.com"
}

由此, protected, payloadsignature 一起请求给 https://acme-v02.api.letsencrypt.org/acme/new-acct, 服务器存储好公钥与邮箱后, 即返回

ACME 请求响应头

Response { url: "https://acme-v02.api.letsencrypt.org/acme/new-acct", status: 200, headers: {"server": "nginx", "date": "Thu, 24 Oct 2019 13:38:42 GMT", "content-type": "application/json", "content-length": "887", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "location": "https://acme-v02.api.letsencrypt.org/acme/acct/62364548", "replay-nonce": "0001oYdYtAIPS7pdzF0X8AU_vZpRYtx8nQBkBb84Jwmy_5I", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }

ACME 请求响应内容

{
  "key": {
    "kty": "RSA",
    "n": "5H15UqCfXJJwkuX-vsMB9mV0QHcsYOLDcexJZpEkXmzFHOIDiKBoJzVxmoK9XK4plR3SLvNczkDTKsYdegd6jyO5xW-CHFkviJMXr30_5IYkjVpXakJJumblcTo5owzNRMTuylqewVB29I92GmDPGLsyAmUi8bmeYRa381omMi5SBFModRPamiYxeQG_HsyOalZbeoZfCoT6CnxeJWevxIqV8MvCS9qwfrdqnNFw1uihKIlaijaMvKZ42-8z6iZ7zT2G65wt5_GXKi0eE90xVX6d0zaD6NmWeAGbKYPu6F9rfxaMfQgP_S-iTq1BTM2gBIPa_VzMNRIeOK3VKGqs60lDF700TIWgzvnPgs3QdAcHgouehPZe0xfOWg_J7_sv-yz0ZI9srfnibjU_gcc3xsdHxCvCzSONLjiz9cT6-QkTNVziN1QeC3SALBZkxoJ1UoRkE9okrjlVBXITlBJ-YIxUGJlMQX5xEbExr7w5n7GG1bBbOCClmpCzcXRY2ZIMqKB82ZaRmF6dMJAbmQCaTQ0VheIAu3N_3K-hR-76Mu7iDqdTKrTHRL5sQ7ZWyFLXNq7wSjnkP0pjbovAVfwW4HmQXVeIM8SR7g4foRz4Zr15cOVHSmLPxWHVmYZ9R9LWv6PIK8bg6ChuaksWtzUMJFtHOdnqHp98fA8LbdvBowc",
    "e": "AQAB"
  },
  "contact": [
    "mailto: zyf@iirii.com"
  ],
  "initialIp": "47.244.154.194",
  "createdAt": "2019-07-30T02:35:17Z",
  "status": "valid"
}

账户唯一链接凭证接口 https://acme-v02.api.letsencrypt.org/acme/acct/62364548.至此, 账户创建即完成.

第三步: 创建订单

账户创建完了,下一步通过泛域名创建订单

https://acme-v02.api.letsencrypt.org/acme/new-order

原始接口参数信息

[2019-10-25 11:03:47][acme_client::libs::v2][TRACE] [获取请求凭证->get_nonce()][nonce: Ok("0002EYct0CLH8kMNzdwN-yfPlcdGiOTxOKZpME5reYk0yIM")]
[2019-10-25 11:03:47][acme_client::libs::v2][TRACE] [接口请求地址->request()->jws()][request_acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/new-order]
[2019-10-25 11:03:47][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][payload: {"identifiers":[{"type":"dns","value":"wsw.io"},{"type":"dns","value":"*.wsw.io"},{"type":"dns","value":"*.docker.wsw.io"}]}]
[2019-10-25 11:03:47][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][protected: {"alg": String("RS256"), "url": String("https://acme-v02.api.letsencrypt.org/acme/new-order"), "nonce": String("0002EYct0CLH8kMNzdwN-yfPlcdGiOTxOKZpME5reYk0yIM"), "kid": String("https://acme-v02.api.letsencrypt.org/acme/acct/62364548")}]
[2019-10-25 11:03:47][acme_client::libs::v2][TRACE] [接口签名结果->request()->jws()][signature: GejsD_aCmjQOT5b4qanCRrYMyGERa_6gfqCqj6ESXPzUnuN2TQIiDdYXwRoaPp3rWdE2mP4CSdJjrtyScIEIKbSt7n23X9Rr0qgLRtx3SxSeHrZX46O2IAN2mMq1wi_remYuBUc41-fDhlOSt1dhVaBruOd_e02RXKFuXWlwt3n9nEsDuWstWXh0a6sf6mUEU2uSwfc_RDclw3ArxmpwBe4T6yIX2HDLpopMVRrv-qwS8aCGzVxkRP2dIzWutphqorda3l9nqUjOII9y9yP8bbbQ65Hia1OCE4mluFILrB04N_CMfA3xh2mi8RYE6pECQFa7RyvOGXcILUe4-FVqZsQ6sfAwRKTmTa8hOu-ClMzlOLcH-v_g-bPudatUcCbc-VEDkHhusXoSgD66twNqvTWJEinnz-qq941I5dBfPypYavHO2yTaosoi89Z35Aa9YPjCNjG1j6_meQbRF1xR9LIF8UeBnEJgfU1I9z8mXg4JwcCxW4Aq6_nGOoxneavDpFKNJppAciam0bwryifC15-QrxWR_G34u4yr1JXaCvOyVqkP30vgumTKUAGM0pbVGS4iE_PCcXWlYgsZIF_GZEW6ygqk6F6gP49O8spF8GmEgi6ph_AkDvtpkGU5pEx3tKYrchWGwbn3_CDROeklWMIFbBhy5Zoc0IQ6WgqwbB4]

ACME 请求参数

{
  "payload": "eyJpZGVudGlmaWVycyI6W3sidHlwZSI6ImRucyIsInZhbHVlIjoid3N3LmlvIn0seyJ0eXBlIjoiZG5zIiwidmFsdWUiOiIqLndzdy5pbyJ9LHsidHlwZSI6ImRucyIsInZhbHVlIjoiKi5kb2NrZXIud3N3LmlvIn1dfQ",
  "protected": "eyJhbGciOiJSUzI1NiIsInVybCI6Imh0dHBzOi8vYWNtZS12MDIuYXBpLmxldHNlbmNyeXB0Lm9yZy9hY21lL25ldy1vcmRlciIsIm5vbmNlIjoiMDAwMkVZY3QwQ0xIOGtNTnpkd04teWZQbGNkR2lPVHhPS1pwTUU1cmVZazB5SU0iLCJraWQiOiJodHRwczovL2FjbWUtdjAyLmFwaS5sZXRzZW5jcnlwdC5vcmcvYWNtZS9hY2N0LzYyMzY0NTQ4In0",
  "signature": "GejsD_aCmjQOT5b4qanCRrYMyGERa_6gfqCqj6ESXPzUnuN2TQIiDdYXwRoaPp3rWdE2mP4CSdJjrtyScIEIKbSt7n23X9Rr0qgLRtx3SxSeHrZX46O2IAN2mMq1wi_remYuBUc41-fDhlOSt1dhVaBruOd_e02RXKFuXWlwt3n9nEsDuWstWXh0a6sf6mUEU2uSwfc_RDclw3ArxmpwBe4T6yIX2HDLpopMVRrv-qwS8aCGzVxkRP2dIzWutphqorda3l9nqUjOII9y9yP8bbbQ65Hia1OCE4mluFILrB04N_CMfA3xh2mi8RYE6pECQFa7RyvOGXcILUe4-FVqZsQ6sfAwRKTmTa8hOu-ClMzlOLcH-v_g-bPudatUcCbc-VEDkHhusXoSgD66twNqvTWJEinnz-qq941I5dBfPypYavHO2yTaosoi89Z35Aa9YPjCNjG1j6_meQbRF1xR9LIF8UeBnEJgfU1I9z8mXg4JwcCxW4Aq6_nGOoxneavDpFKNJppAciam0bwryifC15-QrxWR_G34u4yr1JXaCvOyVqkP30vgumTKUAGM0pbVGS4iE_PCcXWlYgsZIF_GZEW6ygqk6F6gP49O8spF8GmEgi6ph_AkDvtpkGU5pEx3tKYrchWGwbn3_CDROeklWMIFbBhy5Zoc0IQ6WgqwbB4"
}

ACME 请求响应头

Response { url: "https://acme-v02.api.letsencrypt.org/acme/new-order", status: 201, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:03:47 GMT", "content-type": "application/json", "content-length": "598", "connection": "keep-alive", "boulder-requester": "62364548", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "location": "https://acme-v02.api.letsencrypt.org/acme/order/62364548/1358562732", "replay-nonce": "0002ZprvP76S-ECQrLUkK-fgjo_KHAZ7ny6Btlk6TU7Ct-I", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }

ACME 请求响应内容

{
  "status": "pending",
  "expires": "2019-11-01T03:03:47.913429056Z",
  "identifiers": [
    {
      "type": "dns",
      "value": "*.docker.wsw.io"
    },
    {
      "type": "dns",
      "value": "*.wsw.io"
    },
    {
      "type": "dns",
      "value": "wsw.io"
    }
  ],
  "authorizations": [
    "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767",
    "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256768",
    "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256769"
  ],
  "finalize": "https://acme-v02.api.letsencrypt.org/acme/finalize/62364548/1358562732"
}

可以看到订单状态为 pending,因为我这里接口请求签发三个泛域名: wsw.io *.wsw.io*.docker.wsw.io.所以订单返回三个授权挑战(authorizations):

  • https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767
  • https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256768
  • https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256769

订单几个状态及流程:

pending->valid->ready
pending->invalid

下面根据授权接口依次获取挑战

[获取 ACME 订单验证挑战方案] -> [authorization: “https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767”]

https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767

ACME 请求响应头

Response { url: "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:03:48 GMT", "content-type": "application/json", "content-length": "384", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }

ACME 请求响应内容

{
  "identifier": {
    "type": "dns",
    "value": "docker.wsw.io"
  },
  "status": "pending",
  "expires": "2019-11-01T03:03:47Z",
  "challenges": [
    {
      "type": "dns-01",
      "status": "pending",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw",
      "token": "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU"
    }
  ],
  "wildcard": true
}

[获取 ACME 订单验证挑战方案] -> [authorization: “https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256768”]

https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256768

ACME 请求响应头

Response { url: "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256768", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:03:49 GMT", "content-type": "application/json", "content-length": "377", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }

ACME 请求响应内容

{
  "identifier": {
    "type": "dns",
    "value": "wsw.io"
  },
  "status": "pending",
  "expires": "2019-11-01T03:03:47Z",
  "challenges": [
    {
      "type": "dns-01",
      "status": "pending",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww",
      "token": "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws"
    }
  ],
  "wildcard": true
}

[获取 ACME 订单验证挑战方案] -> [authorization: “https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256769”]

https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256769

ACME 请求响应头

Response { url: "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256769", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:03:50 GMT", "content-type": "application/json", "content-length": "781", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }

ACME 请求响应内容

{
  "identifier": {
    "type": "dns",
    "value": "wsw.io"
  },
  "status": "pending",
  "expires": "2019-11-01T03:03:47Z",
  "challenges": [
    {
      "type": "http-01",
      "status": "pending",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/aFJFxg",
      "token": "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8"
    },
    {
      "type": "dns-01",
      "status": "pending",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg",
      "token": "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8"
    },
    {
      "type": "tls-alpn-01",
      "status": "pending",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/cdEsAg",
      "token": "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8"
    }
  ]
}

可以看到,每一个授权接口都包含几个挑战,包括 http-01 dns-01tls-alpn-01,但都至少包含 dns-01, 我们只用挑选类型为 dns-01 的挑战即可.

第四步: 对每一个挑战获取 DNS 解析验证签名

docker.wsw.io

[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [为 ACME 订单配置挑战签名] -> [auth_name: docker.wsw.io][order_auth_info: AcmeOrderAuthResponse { status: "pending", expires: "2019-11-01T03:03:47Z", identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }, challenges: [AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }] }]
[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [####] order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }
[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [####] order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }
[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [DNS签名][auth_key_thumbprint: "wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"][auth_key_token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"]
[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [DNS挑战签名][auth_dns_token: "F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs"]

wsw.io

[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [为 ACME 订单配置挑战签名] -> [auth_name: wsw.io][order_auth_info: AcmeOrderAuthResponse { status: "pending", expires: "2019-11-01T03:03:47Z", identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, challenges: [AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }] }]
[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [####] order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }
[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [####] order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }
[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [DNS签名][auth_key_thumbprint: "wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"][auth_key_token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"]
[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [DNS挑战签名][auth_dns_token: "Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A"]

wsw.io

[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [为 ACME 订单配置挑战签名] -> [auth_name: wsw.io][order_auth_info: AcmeOrderAuthResponse { status: "pending", expires: "2019-11-01T03:03:47Z", identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, challenges: [AcmeOrderAuthorizationChallenge { types: "http-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/aFJFxg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }, AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }, AcmeOrderAuthorizationChallenge { types: "tls-alpn-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/cdEsAg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }] }]
[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [####] order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }
[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [####] order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }
[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [DNS签名][auth_key_thumbprint: "wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"][auth_key_token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"]
[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [DNS挑战签名][auth_dns_token: "-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4"]

由于 *.wsw.io*.wsw.io 都是一级域名,所以挑战前缀是一样的,整理下最终 DNSTXT 挑战解析签名验证是这样的:

解析类型 解析名 解析值
TXT _acme-challenge.docker F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs
TXT _acme-challenge Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A
TXT _acme-challenge -0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4

第五步: 设置 DNS 解析

// TODO...
// wait a moment

第六步: 验证 DNS 解析

nslookup -q=txt _acme-challenge.wsw.io. 8.8.8.8
nslookup -q=txt _acme-challenge.wsw.io. 8.8.8.8
nslookup -q=txt _acme-challenge.docker.wsw.io. 8.8.8.8

第七步: 向 ACME 发起挑战

解析完 TXT 稍等片刻后,可以开始向 ACME 发起挑战验证了

原始接口参数信息

[2019-10-25 11:04:05][acme_client::libs::v2][TRACE] [获取请求凭证->get_nonce()][nonce: Ok("0001_RB5QdS8KrZBfcqMJG3GqkvXQK1Wya8X1g_O6yJIvlw")]
[2019-10-25 11:04:05][acme_client::libs::v2][TRACE] [接口请求地址->request()->jws()][request_acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw]
[2019-10-25 11:04:05][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][payload: {"keyAuthorization":"F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs"}]
[2019-10-25 11:04:05][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][protected: {"kid": String("https://acme-v02.api.letsencrypt.org/acme/acct/62364548"), "alg": String("RS256"), "nonce": String("0001_RB5QdS8KrZBfcqMJG3GqkvXQK1Wya8X1g_O6yJIvlw"), "url": String("https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw")}]
[2019-10-25 11:04:05][acme_client::libs::v2][TRACE] [接口签名结果->request()->jws()][signature: CJom2H22YWqPsLineKGc66aK4nmGLWCUB8nP0XaAWDv6hOwJwLehu8UasQAHeu2ERAnDSpqE0U_FA8X4-W2fds4xWyi0tIHz_D6ArT-t_sqBqaZsFAD32WGpJiRWJX3CCbloHdg8jAhH6WZIteIVxu3kvf6SkNhule-oH2tKElL8lnNYBMS3tBUtLUBEO0J30-gGZW6AQ_4grKeOhAVnEl3F02-Vrs0Vu4qd_hkyZDqugN03Cdzk0ZurIvqSHxdChkbz6lljcjBc6oIUuKpaiuuFPqXU5QKX5OK7qGF5g8N-gsJXlsfEpgFxYaLsTa5UmlywnGRkm8sttFU5OYMnJVsfTAwfJyb7Hz8fu8OoPdArS7TH2vTvbSX-l2L00N7nw0LEI1-ohnH6IlsnQKyN4MW5RbJ02C3cIH6FqmETBxJQU7IWoUhAoSNLhSdNfQNHszw9hGsELMJ6_Re-CXnHalHUzgLEfDUew5msdBApq-o0jKJ9z-3SIqXHl0KoMvHQFmImkpp4geb7AuslGoRBYRKqqTzBsm7WkxKixySOIfPd0CLTXsm7_kzkeKQZYyukPqBKG20wjM19_8trGqvbhGZtESY_FLctrn21uXDnOflz--a-P6jAQe81uhPb6eqbLx1FpTiRVTw4u4mcRVmsfsYJvm0jyRltfN08QXWKMtk]

ACME 请求响应头

Response { url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:04:06 GMT", "content-type": "application/json", "content-length": "183", "connection": "keep-alive", "boulder-requester": "62364548", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "link": "<https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767>;rel=\"up\"", "location": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", "replay-nonce": "01015_Sfin1rJ9z1u02rNxwnLbUIU0JF9DWYg_Ac1_jkjpo", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }

ACME 请求响应内容

{
  "type": "dns-01",
  "status": "pending",
  "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw",
  "token": "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU"
}

可以看到状态仍然是 pending 状态还未更新,等 2 秒后再次重复发起挑战验证.

ACME 请求响应头

Response { url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:04:10 GMT", "content-type": "application/json", "content-length": "256", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "link": "<https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767>;rel=\"up\"", "location": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }

ACME 请求响应内容

{
  "type": "dns-01",
  "status": "valid",
  "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw",
  "token": "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU",
  "validationRecord": [
    {
      "hostname": "docker.wsw.io"
    }
  ]
}

依次类推,发起挑战验证,等待所有三个挑战全部变为 valid 状态为止.

第八步: 删除 TXT 签名解析验证记录

待所有挑战验证状态变为 valid 的状态时,该泛子域名已验证通过,不在需要 DNS 解析了,所有可以删除相关 TXT 挑战解析了

第九步: 完结订单,获取证书签发链接

https://acme-v02.api.letsencrypt.org/acme/finalize/62364548/1358562732

原始接口参数信息

[2019-10-25 11:04:22][acme_client::libs::v2][TRACE] [获取请求凭证->get_nonce()][nonce: Ok("0102tjrbII5vW5Yj0mIcPfEkjVq_GtsJgX8yx-YHcBogyb4")]
[2019-10-25 11:04:22][acme_client::libs::v2][TRACE] [接口请求地址->request()->jws()][request_acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/finalize/62364548/1358562732]
[2019-10-25 11:04:22][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][payload: {"csr":"MIIClTCCAX0CAQAwETEPMA0GA1UEAwwGd3N3LmlvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1qy-s2Gyxkn-mlrjpJroQ3-tEZ0FSSK39hYHp20Q2t2mSPMrGrglOryiW93tHp6KFPoWCgh8TwKNfGNQ_83aGHvaVPgCgpFNs089EfJF7G-FHrL7VOXf6mj7yrxAhYkQiZwS23SGyRSE3Tp7t2S76jksg-i8QDfhthEZrxWcPBctKh-M509b1uiQKQ85it13pebbIYwZLRJBu7EvkfAfMRGBmFzd-CdtPKcDK1Elh4qGHhIdXKdid-qsGoM5BemacajAqWbGZqwKuxfrTspw8mmbQnYo97JHAhpI4tvjIG1QUzJ2KNRg1e4MmCiAKIwE9VjYayg9j0Zr8l_LeH1-_wIDAQABoD8wPQYJKoZIhvcNAQkOMTAwLjAsBgNVHREEJTAjggZ3c3cuaW-CCCoud3N3Lmlvgg8qLmRvY2tlci53c3cuaW8wDQYJKoZIhvcNAQELBQADggEBALdIGuPw96PlcPHIKl_b-38tmHpKgxqUok0zkt_hzIyKcEDUvk92JcbHzDdnI6UmPIdijKYr6ZscQPtErFGbntzLKZ-v2A_B4gFKVLQU8H2qb3FUQzBVDuOLjnMwzI3Mj6xWGTAvRh3I07Pa6SoC_Ckw_yGoZTcE-O1op7ci1JGngpfdVvulLKfZvtafu9YqD8bJzTD2O6_XKMaJ8yglPkLvv7sz_bnxe-vDlsOoTErp-N1nG-olRUCosCPATq1lzHAenJlGhdR6L0BiFcW3SdHntcj3KXFznCXCEiCFBlzMBieKukLmBLko7JnssQIaGw9yaqRCkev3LfELUQ4LNyI"}]
[2019-10-25 11:04:22][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][protected: {"url": String("https://acme-v02.api.letsencrypt.org/acme/finalize/62364548/1358562732"), "alg": String("RS256"), "nonce": String("0102tjrbII5vW5Yj0mIcPfEkjVq_GtsJgX8yx-YHcBogyb4"), "kid": String("https://acme-v02.api.letsencrypt.org/acme/acct/62364548")}]
[2019-10-25 11:04:22][acme_client::libs::v2][TRACE] [接口签名结果->request()->jws()][signature: NRlIx37BdqBKRg-j9K9XiXr2bsb6w-qGOIevnXGXWnucB1rl4gaPDaz1IoGADYUX4wSzeJJhzeB29Z36K91U9fKFDFhA0CAKhFMUpmN2qyY151NAsyYKexdRU6Qmi3EcczCcN9R0ImT5ugpnhXD_3_PbNAYIh196N1FE7OouwvMcPV8Gx16nDeseldFJ39AbfIrVzR76HzbgTop7kQbvZ5KLuzAy56t9mm6WB_63zSTGwKERk7uV2UDVv8P-LckxZiNKjWVs9Y1N6I2EqE7reqmnIoL_576_nOPu0HrkvRSIeCku3AU8YAYbGauLmo8QmLWSRGKUClRq9XbkG0TvhMSodc0tixzUTXh6PSH7Y1d-_pDlynm0G9gwULjqoe5_G5dVwwTRRYgVRYotLdFXdVahyeW2RwwXogpzmVzWUu55UkWct9cwg82lliVMgvkKeBXDIZTvDO9T_s4JMEEw_G3lZf-TAr4Eyd_Rm7gYuKekqdegDDyWba4Kmn1r9-5q0JCtECT-Vimw0qhumUmZi97hytj30EABD9WeCHLByXQ4knVJbkADp26_409HqXWh2emrxgNZ2RB9WE6tNRXy59HA_cHqilHL6aAvWs32mVZCpbdlSJQMq1oDtnyGgOnTVx4Bu3UK_7Z5XcOZ9Whnjme4K9oRu0O0KOtInE54HSk]

ACME 请求响应头

Response { url: "https://acme-v02.api.letsencrypt.org/acme/finalize/62364548/1358562732", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:04:23 GMT", "content-type": "application/json", "content-length": "690", "connection": "keep-alive", "boulder-requester": "62364548", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "location": "https://acme-v02.api.letsencrypt.org/acme/order/62364548/1358562732", "replay-nonce": "0002F2RDkVTV1uN9UyBkfQ4X9c9z8hQheEFvnHSIMmGn1gs", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }

ACME 请求响应内容

{
  "status": "valid",
  "expires": "2019-11-01T03:03:47Z",
  "identifiers": [
    {
      "type": "dns",
      "value": "*.docker.wsw.io"
    },
    {
      "type": "dns",
      "value": "*.wsw.io"
    },
    {
      "type": "dns",
      "value": "wsw.io"
    }
  ],
  "authorizations": [
    "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767",
    "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256768",
    "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256769"
  ],
  "finalize": "https://acme-v02.api.letsencrypt.org/acme/finalize/62364548/1358562732",
  "certificate": "https://acme-v02.api.letsencrypt.org/acme/cert/031a4d8bb154e8b731eb689b26ef22b8a675"
}

订单状态为 valid 已验证状态, 已签发 certificate,证书链接: https://acme-v02.api.letsencrypt.org/acme/cert/031a4d8bb154e8b731eb689b26ef22b8a675

第十步: 下载证书

http -v https://acme-v02.api.letsencrypt.org/acme/cert/031a4d8bb154e8b731eb689b26ef22b8a675

ACME 请求响应头

HTTP/1.1 200 OK
Cache-Control: public, max-age=0, no-cache
Connection: keep-alive
Content-Length: 3571
Content-Type: application/pem-certificate-chain
Date: Fri, 25 Oct 2019 03:28:58 GMT
Link: <https://acme-v02.api.letsencrypt.org/directory>;rel="index"
Server: nginx
Strict-Transport-Security: max-age=604800
X-Frame-Options: DENY

ACME 请求响应内容

-----BEGIN CERTIFICATE-----
MIIFYDCCBEigAwIBAgISAxpNi7FU6Lcx62ibJu8iuKZ1MA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xOTEwMjUwMjA0MjNaFw0y
MDAxMjMwMjA0MjNaMBExDzANBgNVBAMTBndzdy5pbzCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBANasvrNhssZJ/ppa46Sa6EN/rRGdBUkit/YWB6dtENrd
pkjzKxq4JTq8olvd7R6eihT6FgoIfE8CjXxjUP/N2hh72lT4AoKRTbNPPRHyRexv
hR6y+1Tl3+po+8q8QIWJEImcEtt0hskUhN06e7dku+o5LIPovEA34bYRGa8VnDwX
LSofjOdPW9bokCkPOYrdd6Xm2yGMGS0SQbuxL5HwHzERgZhc3fgnbTynAytRJYeK
hh4SHVynYnfqrBqDOQXpmnGowKlmxmasCrsX607KcPJpm0J2KPeyRwIaSOLb4yBt
UFMydijUYNXuDJgogCiMBPVY2GsoPY9Ga/Jfy3h9fv8CAwEAAaOCAncwggJzMA4G
A1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYD
VR0TAQH/BAIwADAdBgNVHQ4EFgQUKVfx4HzziSt6P/WCk4nuJHSPdPkwHwYDVR0j
BBgwFoAUqEpqYwR93brm0Tm3pkVl7/Oo7KEwbwYIKwYBBQUHAQEEYzBhMC4GCCsG
AQUFBzABhiJodHRwOi8vb2NzcC5pbnQteDMubGV0c2VuY3J5cHQub3JnMC8GCCsG
AQUFBzAChiNodHRwOi8vY2VydC5pbnQteDMubGV0c2VuY3J5cHQub3JnLzAsBgNV
HREEJTAjgg8qLmRvY2tlci53c3cuaW+CCCoud3N3LmlvggZ3c3cuaW8wTAYDVR0g
BEUwQzAIBgZngQwBAgEwNwYLKwYBBAGC3xMBAQEwKDAmBggrBgEFBQcCARYaaHR0
cDovL2Nwcy5sZXRzZW5jcnlwdC5vcmcwggEFBgorBgEEAdZ5AgQCBIH2BIHzAPEA
dwCyHgXMi6LNiiBOh2b5K7mKJSBna9r6cOeySVMt74uQXgAAAW4A30oqAAAEAwBI
MEYCIQCIWgzZtE/EuwBGQjFBcZI30lg0wKEYWm/TRcKeLF/CQgIhAPt5AXThfoSS
pjFz/ME8ESpvy0/c9gQEHKwuyHcQNi4eAHYAb1N2rDHwMRnYmQCkURX/dxUcEdkC
wQApBo2yCJo32RMAAAFuAN9KUwAABAMARzBFAiBofVWPD+MruP04x5YhsexJ3vyT
pHYyKrPlVhhs0If8FwIhANMn04N/VsM2+mMM0MH1Ght6wA0CAxy1N2TzdeEWybnj
MA0GCSqGSIb3DQEBCwUAA4IBAQAPvcfKg3ufCmKMEUaNfV22KuZRcWfdk0zrxNaV
SpEdCT5SlRH53gvnkNgOdgKCJEdYcK/OuNCkfkYouHjCj1O8GG1Ip+aiG5lFBfPe
eWfurZP6MuFRehyS4UphxDPx5hmYi0zqaUcY3Oqh0sfMfhwpmGsSWm/cVvAdvg82
kHuBdWSlwpfhdmiNi8QXQx3Kzmfx/Gdfl/CKK4FqHzEUNwnngGPzP1yvTWs0d03N
QqRgUJ40g+HLCmvyl0KFhBk22qaVNNMjDzZojwmmMRERT613zpGVvq3Bg4ynhhvv
b7BhRp4Itpz4zJKpMkSfLsr0FF0m2TCT+hsE8D8EDAL/0mDV
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF
q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8
SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0
Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA
a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj
/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T
AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG
CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv
bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k
c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw
VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC
ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz
MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu
Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF
AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo
uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/
wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu
X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG
PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6
KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
-----END CERTIFICATE-----

最后一步: 验证签发证书

~/Server/Run/run_s/data/acme/cert_list/wsw.io

$ ls
ca.crt  domain.csr  domain.pem  fullchain.crt  private.key  rootchain.pem
$ openssl x509 -text -in domain.pem
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
            03:1a:4d:8b:b1:54:e8:b7:31:eb:68:9b:26:ef:22:b8:a6:75
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
        Validity
            Not Before: Oct 25 02:04:23 2019 GMT
            Not After : Jan 23 02:04:23 2020 GMT
        Subject: CN = wsw.io
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:d6:ac:be:b3:61:b2:c6:49:fe:9a:5a:e3:a4:9a:
                    e8:43:7f:ad:11:9d:05:49:22:b7:f6:16:07:a7:6d:
                    10:da:dd:a6:48:f3:2b:1a:b8:25:3a:bc:a2:5b:dd:
                    ed:1e:9e:8a:14:fa:16:0a:08:7c:4f:02:8d:7c:63:
                    50:ff:cd:da:18:7b:da:54:f8:02:82:91:4d:b3:4f:
                    3d:11:f2:45:ec:6f:85:1e:b2:fb:54:e5:df:ea:68:
                    fb:ca:bc:40:85:89:10:89:9c:12:db:74:86:c9:14:
                    84:dd:3a:7b:b7:64:bb:ea:39:2c:83:e8:bc:40:37:
                    e1:b6:11:19:af:15:9c:3c:17:2d:2a:1f:8c:e7:4f:
                    5b:d6:e8:90:29:0f:39:8a:dd:77:a5:e6:db:21:8c:
                    19:2d:12:41:bb:b1:2f:91:f0:1f:31:11:81:98:5c:
                    dd:f8:27:6d:3c:a7:03:2b:51:25:87:8a:86:1e:12:
                    1d:5c:a7:62:77:ea:ac:1a:83:39:05:e9:9a:71:a8:
                    c0:a9:66:c6:66:ac:0a:bb:17:eb:4e:ca:70:f2:69:
                    9b:42:76:28:f7:b2:47:02:1a:48:e2:db:e3:20:6d:
                    50:53:32:76:28:d4:60:d5:ee:0c:98:28:80:28:8c:
                    04:f5:58:d8:6b:28:3d:8f:46:6b:f2:5f:cb:78:7d:
                    7e:ff
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Subject Key Identifier:
                29:57:F1:E0:7C:F3:89:2B:7A:3F:F5:82:93:89:EE:24:74:8F:74:F9
            X509v3 Authority Key Identifier:
                keyid:A8:4A:6A:63:04:7D:DD:BA:E6:D1:39:B7:A6:45:65:EF:F3:A8:EC:A1

            Authority Information Access:
                OCSP - URI:http://ocsp.int-x3.letsencrypt.org
                CA Issuers - URI:http://cert.int-x3.letsencrypt.org/

            X509v3 Subject Alternative Name:
                DNS:*.docker.wsw.io, DNS:*.wsw.io, DNS:wsw.io
            X509v3 Certificate Policies:
                Policy: 2.23.140.1.2.1
                Policy: 1.3.6.1.4.1.44947.1.1.1
                  CPS: http://cps.letsencrypt.org

            CT Precertificate SCTs:
                Signed Certificate Timestamp:
                    Version   : v1 (0x0)
                    Log ID    : B2:1E:05:CC:8B:A2:CD:8A:20:4E:87:66:F9:2B:B9:8A:
                                25:20:67:6B:DA:FA:70:E7:B2:49:53:2D:EF:8B:90:5E
                    Timestamp : Oct 25 03:04:23.850 2019 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:46:02:21:00:88:5A:0C:D9:B4:4F:C4:BB:00:46:42:
                                31:41:71:92:37:D2:58:34:C0:A1:18:5A:6F:D3:45:C2:
                                9E:2C:5F:C2:42:02:21:00:FB:79:01:74:E1:7E:84:92:
                                A6:31:73:FC:C1:3C:11:2A:6F:CB:4F:DC:F6:04:04:1C:
                                AC:2E:C8:77:10:36:2E:1E
                Signed Certificate Timestamp:
                    Version   : v1 (0x0)
                    Log ID    : 6F:53:76:AC:31:F0:31:19:D8:99:00:A4:51:15:FF:77:
                                15:1C:11:D9:02:C1:00:29:06:8D:B2:08:9A:37:D9:13
                    Timestamp : Oct 25 03:04:23.891 2019 GMT
                    Extensions: none
                    Signature : ecdsa-with-SHA256
                                30:45:02:20:68:7D:55:8F:0F:E3:2B:B8:FD:38:C7:96:
                                21:B1:EC:49:DE:FC:93:A4:76:32:2A:B3:E5:56:18:6C:
                                D0:87:FC:17:02:21:00:D3:27:D3:83:7F:56:C3:36:FA:
                                63:0C:D0:C1:F5:1A:1B:7A:C0:0D:02:03:1C:B5:37:64:
                                F3:75:E1:16:C9:B9:E3
    Signature Algorithm: sha256WithRSAEncryption
         0f:bd:c7:ca:83:7b:9f:0a:62:8c:11:46:8d:7d:5d:b6:2a:e6:
         51:71:67:dd:93:4c:eb:c4:d6:95:4a:91:1d:09:3e:52:95:11:
         f9:de:0b:e7:90:d8:0e:76:02:82:24:47:58:70:af:ce:b8:d0:
         a4:7e:46:28:b8:78:c2:8f:53:bc:18:6d:48:a7:e6:a2:1b:99:
         45:05:f3:de:79:67:ee:ad:93:fa:32:e1:51:7a:1c:92:e1:4a:
         61:c4:33:f1:e6:19:98:8b:4c:ea:69:47:18:dc:ea:a1:d2:c7:
         cc:7e:1c:29:98:6b:12:5a:6f:dc:56:f0:1d:be:0f:36:90:7b:
         81:75:64:a5:c2:97:e1:76:68:8d:8b:c4:17:43:1d:ca:ce:67:
         f1:fc:67:5f:97:f0:8a:2b:81:6a:1f:31:14:37:09:e7:80:63:
         f3:3f:5c:af:4d:6b:34:77:4d:cd:42:a4:60:50:9e:34:83:e1:
         cb:0a:6b:f2:97:42:85:84:19:36:da:a6:95:34:d3:23:0f:36:
         68:8f:09:a6:31:11:11:4f:ad:77:ce:91:95:be:ad:c1:83:8c:
         a7:86:1b:ef:6f:b0:61:46:9e:08:b6:9c:f8:cc:92:a9:32:44:
         9f:2e:ca:f4:14:5d:26:d9:30:93:fa:1b:04:f0:3f:04:0c:02:
         ff:d2:60:d5
-----BEGIN CERTIFICATE-----
MIIFYDCCBEigAwIBAgISAxpNi7FU6Lcx62ibJu8iuKZ1MA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xOTEwMjUwMjA0MjNaFw0y
MDAxMjMwMjA0MjNaMBExDzANBgNVBAMTBndzdy5pbzCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBANasvrNhssZJ/ppa46Sa6EN/rRGdBUkit/YWB6dtENrd
pkjzKxq4JTq8olvd7R6eihT6FgoIfE8CjXxjUP/N2hh72lT4AoKRTbNPPRHyRexv
hR6y+1Tl3+po+8q8QIWJEImcEtt0hskUhN06e7dku+o5LIPovEA34bYRGa8VnDwX
LSofjOdPW9bokCkPOYrdd6Xm2yGMGS0SQbuxL5HwHzERgZhc3fgnbTynAytRJYeK
hh4SHVynYnfqrBqDOQXpmnGowKlmxmasCrsX607KcPJpm0J2KPeyRwIaSOLb4yBt
UFMydijUYNXuDJgogCiMBPVY2GsoPY9Ga/Jfy3h9fv8CAwEAAaOCAncwggJzMA4G
A1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYD
VR0TAQH/BAIwADAdBgNVHQ4EFgQUKVfx4HzziSt6P/WCk4nuJHSPdPkwHwYDVR0j
BBgwFoAUqEpqYwR93brm0Tm3pkVl7/Oo7KEwbwYIKwYBBQUHAQEEYzBhMC4GCCsG
AQUFBzABhiJodHRwOi8vb2NzcC5pbnQteDMubGV0c2VuY3J5cHQub3JnMC8GCCsG
AQUFBzAChiNodHRwOi8vY2VydC5pbnQteDMubGV0c2VuY3J5cHQub3JnLzAsBgNV
HREEJTAjgg8qLmRvY2tlci53c3cuaW+CCCoud3N3LmlvggZ3c3cuaW8wTAYDVR0g
BEUwQzAIBgZngQwBAgEwNwYLKwYBBAGC3xMBAQEwKDAmBggrBgEFBQcCARYaaHR0
cDovL2Nwcy5sZXRzZW5jcnlwdC5vcmcwggEFBgorBgEEAdZ5AgQCBIH2BIHzAPEA
dwCyHgXMi6LNiiBOh2b5K7mKJSBna9r6cOeySVMt74uQXgAAAW4A30oqAAAEAwBI
MEYCIQCIWgzZtE/EuwBGQjFBcZI30lg0wKEYWm/TRcKeLF/CQgIhAPt5AXThfoSS
pjFz/ME8ESpvy0/c9gQEHKwuyHcQNi4eAHYAb1N2rDHwMRnYmQCkURX/dxUcEdkC
wQApBo2yCJo32RMAAAFuAN9KUwAABAMARzBFAiBofVWPD+MruP04x5YhsexJ3vyT
pHYyKrPlVhhs0If8FwIhANMn04N/VsM2+mMM0MH1Ght6wA0CAxy1N2TzdeEWybnj
MA0GCSqGSIb3DQEBCwUAA4IBAQAPvcfKg3ufCmKMEUaNfV22KuZRcWfdk0zrxNaV
SpEdCT5SlRH53gvnkNgOdgKCJEdYcK/OuNCkfkYouHjCj1O8GG1Ip+aiG5lFBfPe
eWfurZP6MuFRehyS4UphxDPx5hmYi0zqaUcY3Oqh0sfMfhwpmGsSWm/cVvAdvg82
kHuBdWSlwpfhdmiNi8QXQx3Kzmfx/Gdfl/CKK4FqHzEUNwnngGPzP1yvTWs0d03N
QqRgUJ40g+HLCmvyl0KFhBk22qaVNNMjDzZojwmmMRERT613zpGVvq3Bg4ynhhvv
b7BhRp4Itpz4zJKpMkSfLsr0FF0m2TCT+hsE8D8EDAL/0mDV
-----END CERTIFICATE-----

记录完整签发证书验证流程日志

~/Server/Run/run_s

$ cargo run acme run -i wsw.io
[===][run_cmd_results: [2019-10-25 11:03:43][run_s][INFO] #[系统运行环境][run_s_hostname: "a.us.1"][run_s_home_dir: "/data/home/coam"]
[2019-10-25 11:03:43][run_s][INFO] dns sync [dns_name: wsw.io]
[2019-10-25 11:03:43][run_s::common::tools][INFO] #[执行命令: run_command(...)][cmd_rs_path: "/data/home/coam/Server/Run/run_s/data/dns"][cmd_rs_envs: {}]...
[2019-10-25 11:03:43][run_s::common::tools][INFO] #> curl -X POST https://dnsapi.cn/Record.List -d login_token=72921,303e442575de36c5b854c9eb95da2106&offset=0&length=1000&format=json&domain=wsw.io
[2019-10-25 11:03:43][run_s::common::tools][DEBUG] command run status: exit code: 0
[2019-10-25 11:03:43][run_s::common::tools][DEBUG] command run stdout: {"status":{"code":"1","message":"Action completed successful","created_at":"2019-10-25 11:03:43"},"domain":{"id":"63055756","name":"wsw.io","punycode":"wsw.io","grade":"DP_Free","owner":"zyf@lonal.com","ext_status":"","ttl":600,"min_ttl":600,"dnspod_ns":["f1g1ns1.dnspod.net","f1g1ns2.dnspod.net"],"status":"enable"},"info":{"sub_domains":"30","record_total":"30","records_num":"30"},"records":[{"id":"335593281","ttl":"86400","value":"f1g1ns1.dnspod.net.","enabled":"1","status":"enabled","updated_on":"2017-12-10 10:35:52","name":"@","line":"\u9ed8\u8ba4","line_id":"0","type":"NS","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0","hold":"hold"},{"id":"335593282","ttl":"86400","value":"f1g1ns2.dnspod.net.","enabled":"1","status":"enabled","updated_on":"2017-12-10 10:35:52","name":"@","line":"\u9ed8\u8ba4","line_id":"0","type":"NS","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0","hold":"hold"},{"id":"399479127","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:41:58","name":"@","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479128","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:41:58","name":"sns","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479129","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:41:58","name":"wsa","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479132","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:41:59","name":"mail","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479135","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:41:59","name":"mirror","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479137","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:41:59","name":"pp","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479138","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:00","name":"forum","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479141","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:00","name":"im","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479145","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:00","name":"lp","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479147","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:01","name":"lw","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479148","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:01","name":"ma","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479150","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:02","name":"wl","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479151","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:02","name":"www","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479152","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:02","name":"w","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479153","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:03","name":"api","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479154","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:03","name":"mpi","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479155","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:03","name":"wpi","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479157","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:04","name":"app","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479160","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:04","name":"open","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479161","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:04","name":"pay","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479162","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:05","name":"ap","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479163","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:05","name":"cp","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479165","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:05","name":"dp","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479168","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:06","name":"gp","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479169","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:06","name":"ep","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479172","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:07","name":"p","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479173","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:07","name":"cli","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"},{"id":"399479174","ttl":"600","value":"8.9.3.182","enabled":"1","status":"enabled","updated_on":"2019-01-01 18:42:07","name":"blog","line":"\u9ed8\u8ba4","line_id":"0","type":"A","weight":null,"monitor_status":"","remark":"","use_aqb":"no","mx":"0"}]}
[2019-10-25 11:03:43][run_s::common::tools][DEBUG] command run stderr:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  8004  100  7907  100    97  26712    327 --:--:-- --:--:-- --:--:-- 27132

[2019-10-25 11:03:43][run_s::common::dns::task][DEBUG] [DNSPOD][跳过特殊域名解析记录(NS|TXT)] -> [remote_domain_record[type: NS,name: @,value: f1g1ns1.dnspod.net.]
[2019-10-25 11:03:43][run_s::common::dns::task][DEBUG] [DNSPOD][跳过特殊域名解析记录(NS|TXT)] -> [remote_domain_record[type: NS,name: @,value: f1g1ns2.dnspod.net.]
[2019-10-25 11:03:43][run_s::common::dns::task][DEBUG] [DNSPOD][跳过特殊域名解析记录(NS|TXT)] -> [local_domain_record[type: NS,name: @,value: f1g1ns1.dnspod.net.]
[2019-10-25 11:03:43][run_s::common::dns::task][DEBUG] [DNSPOD][跳过特殊域名解析记录(NS|TXT)] -> [local_domain_record[type: NS,name: @,value: f1g1ns2.dnspod.net.]
[ib_info: [DnsRecordListRecord { id: "335593281", name: "@", types: "NS", value: "f1g1ns1.dnspod.net.", status: "enabled", ttl: "86400", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "335593282", name: "@", types: "NS", value: "f1g1ns2.dnspod.net.", status: "enabled", ttl: "86400", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479127", name: "@", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479128", name: "sns", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479129", name: "wsa", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479132", name: "mail", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479135", name: "mirror", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479137", name: "pp", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479138", name: "forum", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479141", name: "im", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479145", name: "lp", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479147", name: "lw", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479148", name: "ma", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479150", name: "wl", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479151", name: "www", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479152", name: "w", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479153", name: "api", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479154", name: "mpi", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479155", name: "wpi", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479157", name: "app", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479160", name: "open", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479161", name: "pay", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479162", name: "ap", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479163", name: "cp", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479165", name: "dp", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479168", name: "gp", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479169", name: "ep", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479172", name: "p", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479173", name: "cli", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }, DnsRecordListRecord { id: "399479174", name: "blog", types: "A", value: "8.9.3.182", status: "enabled", ttl: "600", line_id: "0", mx: "0", monitor_status: "" }]]
]
[2019-10-25 11:03:43][run_s::common::acme::task][INFO] [######][:->3][验证本地泛域名证书是否有效][acme_name: "wsw.io"]--------------------------------------------------------------------------------------
[2019-10-25 11:03:43][run_s::common::acme::task][DEBUG] [准备校验已签发域名证书][ACME][verify_acme_order()][rs_path: "/data/home/coam/Server/Run/run_s"]
[2019-10-25 11:03:43][run_s::common::acme::task][INFO] [证书文件数据校验开始][acme_name: "wsw.io"]
[2019-10-25 11:03:43][run_s::common::acme::tool][DEBUG] [证书数据][acme_cert_issuer_name_entry_string: US]
[2019-10-25 11:03:43][run_s::common::acme::tool][DEBUG] [证书数据][acme_cert_issuer_name_entry_string: Let's Encrypt]
[2019-10-25 11:03:43][run_s::common::acme::tool][DEBUG] [证书数据][acme_cert_issuer_name_entry_string: Let's Encrypt Authority X3]
[2019-10-25 11:03:43][run_s::common::acme::tool][DEBUG] [证书数据][acme_cert_subject_name_entry_string: wsw.io]
[2019-10-25 11:03:43][run_s::common::acme::tool][DEBUG] [证书数据][acme_cert_subject_alt_name_email: None][acme_cert_subject_alt_name_dnsname: Some("*.wsw.io")][acme_cert_subject_alt_name_uri: None][acme_cert_subject_alt_name_ipaddress: None]
[2019-10-25 11:03:43][run_s::common::acme::tool][DEBUG] [证书数据][acme_cert_subject_alt_name_email: None][acme_cert_subject_alt_name_dnsname: Some("wsw.io")][acme_cert_subject_alt_name_uri: None][acme_cert_subject_alt_name_ipaddress: None]
[2019-10-25 11:03:43][run_s::common::acme::tool][DEBUG] [证书数据]acme_cert_public_key:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4vTG1guVHwt5mP6lbzsw
PwWbjWI6QeVJm0T9/aC8RbAHGG4//9phokukwP4KK7UrdOzVLp0UnA0u5u8aMhRN
edtfs/knJxNbF3+lem9G31Y8g7RMXhA3JmFnrwUPv45XeeD0gfQsJQqjG7t0IR+j
rojkG/nO7PPK68wB9Xci4lXt1xDJJrWXh7HoxPwazPLYlunvcmpxJjd1aEaZSvs+
q1U6ln9dJns966UNHvngmYYUYtPQfXDo8cf+0jQOTAuHyHYvMscjGTLVxK3RxEUi
Ap7CgluFn0gPCrzGRkGUCem267wSm9y/Uy7RtLRZTlsWPReun6SiuUU6jGQcHz1p
cQIDAQAB
-----END PUBLIC KEY-----

[2019-10-25 11:03:43][run_s::common::acme::tool][DEBUG] [证书数据][acme_cert_digest_bytes: [a6, 73, 35, 6c, 62, ff, 8d, be, 65, e5, a3, af, 2, a, d8, 5c, 36, 93, 70, 42, a, bd, 9b, 63, 56, 75, eb, 72, 46, db, cb, c2]]
[2019-10-25 11:03:43][run_s::common::acme::tool][DEBUG] [证书数据][acme_cert_fingerprint_bytes: [a6, 73, 35, 6c, 62, ff, 8d, be, 65, e5, a3, af, 2, a, d8, 5c, 36, 93, 70, 42, a, bd, 9b, 63, 56, 75, eb, 72, 46, db, cb, c2]]
[2019-10-25 11:03:43][run_s::common::acme::tool][DEBUG] [证书原始有效期][not_before_date: Jul 30 01:53:43 2019 GMT][not_after_date: Oct 28 01:53:43 2019 GMT]
[2019-10-25 11:03:43][run_s::common::acme::tool][DEBUG] [证书有效期][not_before_dt: 2019-07-30 01:53:43 +00:00][not_before_dt_ts: 1564451623][not_after_dt: 2019-10-28 01:53:43 +00:00][not_after_dt_ts: 1572227623]
[2019-10-25 11:03:43][run_s::common::acme::tool][DEBUG] [证书数据][acme_cert_signature_slice_bytes: [11, 78, 48, 85, f0, 5c, d5, 5a, f9, 8d, 88, f9, 2d, fc, 6a, da, 38, 3a, c6, 83, fa, 9a, ce, 91, 1e, 94, ce, d9, a5, 76, 71, 2c, 4e, bb, 80, 55, e1, df, 5e, 4e, 19, 22, 25, ad, 14, 2, 12, e0, ad, 99, 2, d2, 32, c8, 94, 5a, 2f, d8, 5f, f7, b2, 5f, 7b, 2, ac, 5, f8, ea, 80, 45, a6, a4, 97, e8, 19, 26, 8a, 66, aa, e0, e8, 5b, 55, cb, 2a, ea, 71, 1, 43, 3, 61, d, 47, e2, f6, 67, b3, 9, 80, a, b9, 69, 62, b8, 89, 40, bb, 37, 46, c6, 54, 6b, fd, fc, 12, 11, 82, b6, d5, 15, 59, 35, a9, 83, 49, 4e, 50, b7, 82, 57, 88, 2, e, 7f, a2, c0, d0, 14, 94, e9, f2, eb, 49, fe, cb, 76, 64, 59, 9c, d2, fb, 8d, e4, d0, ab, 16, e3, eb, 64, 50, d4, db, 9, 2e, cd, 48, b2, e1, dd, ef, 9f, b3, d5, b6, 1b, 18, 62, f, 86, 8b, d7, e5, 8c, 73, 69, f3, 41, 2f, cf, f0, b4, 23, 84, 2a, cf, 74, a2, 73, dd, 8f, c0, 93, 40, bd, a8, 47, 36, 86, 64, 60, 4d, 3, 65, a3, 4f, 61, 68, cb, 8b, 6c, e3, 10, a9, 31, 2, ad, 29, f8, 4b, 72, 60, a7, 6a, 90, a4, 57, c1, 14, f2, 10, a2, f8, d4, 63, cc, 9b, c6, 81, b3, 84, 8d, 89, d5, 15, 59, 8b]]
[2019-10-25 11:03:43][run_s::common::acme::tool][DEBUG] [证书数据][acme_cert_signature_algorithm: sha256WithRSAEncryption]
[2019-10-25 11:03:43][run_s::common::acme::tool][DEBUG] [证书数据][acme_cert_ocsp_responder: http://ocsp.int-x3.letsencrypt.org]
[2019-10-25 11:03:43][run_s::common::acme::tool][DEBUG] [证书数据][acme_cert_serial_number: Ok(393511016603663467537158965063350792197354)]
[2019-10-25 11:03:43][run_s::common::acme::tool][DEBUG] [证书数据][acme_cert_pem:
-----BEGIN CERTIFICATE-----
MIIFUDCCBDigAwIBAgISBIRsyQhGgU8RaullNQC6D5TqMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xOTA3MzAwMTUzNDNaFw0x
OTEwMjgwMTUzNDNaMBExDzANBgNVBAMTBndzdy5pbzCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBAOL0xtYLlR8LeZj+pW87MD8Fm41iOkHlSZtE/f2gvEWw
BxhuP//aYaJLpMD+Ciu1K3Ts1S6dFJwNLubvGjIUTXnbX7P5JycTWxd/pXpvRt9W
PIO0TF4QNyZhZ68FD7+OV3ng9IH0LCUKoxu7dCEfo66I5Bv5zuzzyuvMAfV3IuJV
7dcQySa1l4ex6MT8Gszy2Jbp73JqcSY3dWhGmUr7PqtVOpZ/XSZ7PeulDR754JmG
FGLT0H1w6PHH/tI0DkwLh8h2LzLHIxky1cSt0cRFIgKewoJbhZ9IDwq8xkZBlAnp
tuu8Epvcv1Mu0bS0WU5bFj0Xrp+korlFOoxkHB89aXECAwEAAaOCAmcwggJjMA4G
A1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYD
VR0TAQH/BAIwADAdBgNVHQ4EFgQUbIg5vkhPC82XMwoAc5iVAu6D8aUwHwYDVR0j
BBgwFoAUqEpqYwR93brm0Tm3pkVl7/Oo7KEwbwYIKwYBBQUHAQEEYzBhMC4GCCsG
AQUFBzABhiJodHRwOi8vb2NzcC5pbnQteDMubGV0c2VuY3J5cHQub3JnMC8GCCsG
AQUFBzAChiNodHRwOi8vY2VydC5pbnQteDMubGV0c2VuY3J5cHQub3JnLzAbBgNV
HREEFDASgggqLndzdy5pb4IGd3N3LmlvMEwGA1UdIARFMEMwCAYGZ4EMAQIBMDcG
CysGAQQBgt8TAQEBMCgwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5
cHQub3JnMIIBBgYKKwYBBAHWeQIEAgSB9wSB9ADyAHcA4mlLribo6UAJ6IYbtjuD
1D7n/nSI+6SPKJMBnd3x2/4AAAFsQMw/DgAABAMASDBGAiEAlA3YNZipe9GV/V/7
FPMCNdQqV2SY7WzJyvPoocNN7iwCIQC7uCjtqGQLQsV2TU6h8rpIlFpR1ZkkOqd3
Av4nL56jxwB3AGPy283oO8wszwtyhCdXazOkjWF3j711pjixx2hUS9iNAAABbEDM
PwEAAAQDAEgwRgIhALEYnizcHBvaQEbSylNNIdbuos2MjGuKG+kQTaKl3f9aAiEA
tUxCmXDpEPhXNO47GLa+NSPRJbZ2FiZgVRFO/cz7fuYwDQYJKoZIhvcNAQELBQAD
ggEBABF4SIXwXNVa+Y2I+S38ato4OsaD+prOkR6UztmldnEsTruAVeHfXk4ZIiWt
FAIS4K2ZAtIyyJRaL9hf97JfewKsBfjqgEWmpJfoGSaKZqrg6FtVyyrqcQFDA2EN
R+L2Z7MJgAq5aWK4iUC7N0bGVGv9/BIRgrbVFVk1qYNJTlC3gleIAg5/osDQFJTp
8utJ/st2ZFmc0vuN5NCrFuPrZFDU2wkuzUiy4d3vn7PVthsYYg+Gi9fljHNp80Ev
z/C0I4Qqz3Sic92PwJNAvahHNoZkYE0DZaNPYWjLi2zjEKkxAq0p+EtyYKdqkKRX
wRTyEKL41GPMm8aBs4SNidUVWYs=
-----END CERTIFICATE-----

[2019-10-25 11:03:43][run_s::common::acme::task][INFO] [证书文件数据校验结果][acme_cert_info: AcmeCert { acme_name: "wsw.io", acme_not_before_dt: 2019-07-30T09:53:43+08:00, acme_not_after_dt: 2019-10-28T09:53:43+08:00, acme_wildcards: ["*.wsw.io", "wsw.io"] }]
[2019-10-25 11:03:43][run_s::common::acme::tool][WARN] [证书已过更新保护期,需重新签发证书][acme_cert_not_after_dt: 2019-10-28T09:53:43+08:00][acme_cert_not_after_dt.timestamp(): 1572227623][过期时间差 acme_cert_dt_diff: 255000]
[2019-10-25 11:03:43][run_s::common::acme::task][INFO] [######][:->5][ACME:申请签发证书泛域名证书-注册账户][acme_name: "wsw.io"]--------------------------------------------------------------------------------------
[2019-10-25 11:03:43][acme_client::libs::v2][INFO] [签发域名证书环境][ACME][from_url()][LETS_ENCRYPT_DIRECTORY_URL][url: "https://acme-v02.api.letsencrypt.org/directory"]
[2019-10-25 11:03:44][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/directory", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:03:44 GMT", "content-type": "application/json", "content-length": "658", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:03:44][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:
{
  "F5tQlwVaqmg": "https://community.letsencrypt.org/t/adding-random-entries-to-the-directory/33417",
  "keyChange": "https://acme-v02.api.letsencrypt.org/acme/key-change",
  "meta": {
    "caaIdentities": [
      "letsencrypt.org"
    ],
    "termsOfService": "https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf",
    "website": "https://letsencrypt.org"
  },
  "newAccount": "https://acme-v02.api.letsencrypt.org/acme/new-acct",
  "newNonce": "https://acme-v02.api.letsencrypt.org/acme/new-nonce",
  "newOrder": "https://acme-v02.api.letsencrypt.org/acme/new-order",
  "revokeCert": "https://acme-v02.api.letsencrypt.org/acme/revoke-cert"
}
[2019-10-25 11:03:44][acme_client::libs::v2][DEBUG] [准备注册账户流程]
[2019-10-25 11:03:44][acme_client::libs::v2][INFO] [发送账户注册请求参数][resources: newAccount][map: {"termsOfServiceAgreed": Bool(true), "contact": Array([String("mailto: zyf@iirii.com")]), "email": String("admin@iirii.com")}]
[2019-10-25 11:03:44][acme_client::libs::v2][TRACE] [ACME接口请求参数->request()][request_acme_resource: newAccount][kid: None][payload_value: {"termsOfServiceAgreed":true,"contact":["mailto: zyf@iirii.com"],"email":"admin@iirii.com"}]
[2019-10-25 11:03:44][acme_client::libs::v2][TRACE] [获取临时授权凭证->get_nonce()][acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/new-nonce]
[2019-10-25 11:03:45][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/new-nonce", status: 204, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:03:45 GMT", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "replay-nonce": "0102jDNrP5SRCc6rJfvQf28aopMGvteNJFyWiukU_pzU5-Q", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:03:45][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:

[2019-10-25 11:03:45][acme_client::libs::v2][TRACE] [获取请求凭证->get_nonce()][nonce: Ok("0102jDNrP5SRCc6rJfvQf28aopMGvteNJFyWiukU_pzU5-Q")]
[2019-10-25 11:03:45][acme_client::libs::v2][TRACE] [接口请求地址->request()->jws()][request_acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/new-acct]
[2019-10-25 11:03:45][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][payload: {"termsOfServiceAgreed":true,"contact":["mailto: zyf@iirii.com"],"email":"admin@iirii.com"}]
[2019-10-25 11:03:45][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][protected: {"alg": String("RS256"), "nonce": String("0102jDNrP5SRCc6rJfvQf28aopMGvteNJFyWiukU_pzU5-Q"), "jwk": Object({"e": String("AQAB"), "kty": String("RSA"), "n": String("5H15UqCfXJJwkuX-vsMB9mV0QHcsYOLDcexJZpEkXmzFHOIDiKBoJzVxmoK9XK4plR3SLvNczkDTKsYdegd6jyO5xW-CHFkviJMXr30_5IYkjVpXakJJumblcTo5owzNRMTuylqewVB29I92GmDPGLsyAmUi8bmeYRa381omMi5SBFModRPamiYxeQG_HsyOalZbeoZfCoT6CnxeJWevxIqV8MvCS9qwfrdqnNFw1uihKIlaijaMvKZ42-8z6iZ7zT2G65wt5_GXKi0eE90xVX6d0zaD6NmWeAGbKYPu6F9rfxaMfQgP_S-iTq1BTM2gBIPa_VzMNRIeOK3VKGqs60lDF700TIWgzvnPgs3QdAcHgouehPZe0xfOWg_J7_sv-yz0ZI9srfnibjU_gcc3xsdHxCvCzSONLjiz9cT6-QkTNVziN1QeC3SALBZkxoJ1UoRkE9okrjlVBXITlBJ-YIxUGJlMQX5xEbExr7w5n7GG1bBbOCClmpCzcXRY2ZIMqKB82ZaRmF6dMJAbmQCaTQ0VheIAu3N_3K-hR-76Mu7iDqdTKrTHRL5sQ7ZWyFLXNq7wSjnkP0pjbovAVfwW4HmQXVeIM8SR7g4foRz4Zr15cOVHSmLPxWHVmYZ9R9LWv6PIK8bg6ChuaksWtzUMJFtHOdnqHp98fA8LbdvBowc")}), "url": String("https://acme-v02.api.letsencrypt.org/acme/new-acct")}]
[2019-10-25 11:03:45][acme_client::libs::v2][TRACE] [接口签名结果->request()->jws()][signature: y3OkcPv2UlUs1sJBTOyh_rKHjQv1dSjxLzgmUSnrDl8eDMUQ-i_u4PW1NFX9iQtb2BOyvjkob7Eh7spRw1k1GKddaLSf9pbV_y7MM0GhY5i86LwXbqP7ZPt5JgUF58Mbw4NQVb5uzVWDiBvqv9gBGC_gTcyp45vQYofvId7WjyniBjvlk6bAIYv9Vg0tLySDsaqrkcIYhi-kMuDjzVZtwlN6bb2ZCxIsUNvC9QtrDV9Cu_b6ingbyJoxOwQz3yWtKIBxDRACeVqzeb2oqG8Awigw_fP_M2ESlBUMefp-Dpc9MySLoecxyXW5EFnf7gLbEdP_KpGvL-pyGkFwNfWEvFShKHz3NHmpR3L31R_olZWE3-5_ie5acOe7JP1t48dByQsyJLEWR6jrTLSEsX7XkCdGFdOgHG2ccIZCl8qfk_i1fUhCFb7LuoDi8lGmp-2NF-JG84sRF7welP0txHTc9HyXCeIo4y24-quyd__oXKllZPMPK9HDLzYaLC9Jv521DwEu4UZgILIS_T0q2nQfI-ZDqkPHs2n-XUjFT_EMzWCFrPuAAeFNhmGZt_jESe4D0l3AyVGk-S5ulSWJW7IY6oQLRJct1AIErbhu7SfHCi8sUDQGX3eokL68PsL7NJzggYu_CHBv_IrHgGngVHSNN1nSqClFzxs-8mMWB6smx7Q]
[2019-10-25 11:03:45][acme_client::libs::v2][TRACE] [发起请求->request()][acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/new-acct][api_payload_jws: {"protected": String("eyJhbGciOiJSUzI1NiIsIm5vbmNlIjoiMDEwMmpETnJQNVNSQ2M2ckpmdlFmMjhhb3BNR3Z0ZU5KRnlXaXVrVV9welU1LVEiLCJqd2siOnsiZSI6IkFRQUIiLCJrdHkiOiJSU0EiLCJuIjoiNUgxNVVxQ2ZYSkp3a3VYLXZzTUI5bVYwUUhjc1lPTERjZXhKWnBFa1htekZIT0lEaUtCb0p6Vnhtb0s5WEs0cGxSM1NMdk5jemtEVEtzWWRlZ2Q2anlPNXhXLUNIRmt2aUpNWHIzMF81SVlralZwWGFrSkp1bWJsY1RvNW93ek5STVR1eWxxZXdWQjI5STkyR21EUEdMc3lBbVVpOGJtZVlSYTM4MW9tTWk1U0JGTW9kUlBhbWlZeGVRR19Ic3lPYWxaYmVvWmZDb1Q2Q254ZUpXZXZ4SXFWOE12Q1M5cXdmcmRxbk5GdzF1aWhLSWxhaWphTXZLWjQyLTh6NmlaN3pUMkc2NXd0NV9HWEtpMGVFOTB4Vlg2ZDB6YUQ2Tm1XZUFHYktZUHU2RjlyZnhhTWZRZ1BfUy1pVHExQlRNMmdCSVBhX1Z6TU5SSWVPSzNWS0dxczYwbERGNzAwVElXZ3p2blBnczNRZEFjSGdvdWVoUFplMHhmT1dnX0o3X3N2LXl6MFpJOXNyZm5pYmpVX2djYzN4c2RIeEN2Q3pTT05Maml6OWNUNi1Ra1ROVnppTjFRZUMzU0FMQlpreG9KMVVvUmtFOW9rcmpsVkJYSVRsQkotWUl4VUdKbE1RWDV4RWJFeHI3dzVuN0dHMWJCYk9DQ2xtcEN6Y1hSWTJaSU1xS0I4MlphUm1GNmRNSkFibVFDYVRRMFZoZUlBdTNOXzNLLWhSLTc2TXU3aURxZFRLclRIUkw1c1E3Wld5RkxYTnE3d1NqbmtQMHBqYm92QVZmd1c0SG1RWFZlSU04U1I3ZzRmb1J6NFpyMTVjT1ZIU21MUHhXSFZtWVo5UjlMV3Y2UElLOGJnNkNodWFrc1d0elVNSkZ0SE9kbnFIcDk4ZkE4TGJkdkJvd2MifSwidXJsIjoiaHR0cHM6Ly9hY21lLXYwMi5hcGkubGV0c2VuY3J5cHQub3JnL2FjbWUvbmV3LWFjY3QifQ"), "signature": String("y3OkcPv2UlUs1sJBTOyh_rKHjQv1dSjxLzgmUSnrDl8eDMUQ-i_u4PW1NFX9iQtb2BOyvjkob7Eh7spRw1k1GKddaLSf9pbV_y7MM0GhY5i86LwXbqP7ZPt5JgUF58Mbw4NQVb5uzVWDiBvqv9gBGC_gTcyp45vQYofvId7WjyniBjvlk6bAIYv9Vg0tLySDsaqrkcIYhi-kMuDjzVZtwlN6bb2ZCxIsUNvC9QtrDV9Cu_b6ingbyJoxOwQz3yWtKIBxDRACeVqzeb2oqG8Awigw_fP_M2ESlBUMefp-Dpc9MySLoecxyXW5EFnf7gLbEdP_KpGvL-pyGkFwNfWEvFShKHz3NHmpR3L31R_olZWE3-5_ie5acOe7JP1t48dByQsyJLEWR6jrTLSEsX7XkCdGFdOgHG2ccIZCl8qfk_i1fUhCFb7LuoDi8lGmp-2NF-JG84sRF7welP0txHTc9HyXCeIo4y24-quyd__oXKllZPMPK9HDLzYaLC9Jv521DwEu4UZgILIS_T0q2nQfI-ZDqkPHs2n-XUjFT_EMzWCFrPuAAeFNhmGZt_jESe4D0l3AyVGk-S5ulSWJW7IY6oQLRJct1AIErbhu7SfHCi8sUDQGX3eokL68PsL7NJzggYu_CHBv_IrHgGngVHSNN1nSqClFzxs-8mMWB6smx7Q"), "payload": String("eyJ0ZXJtc09mU2VydmljZUFncmVlZCI6dHJ1ZSwiY29udGFjdCI6WyJtYWlsdG86IHp5ZkBpaXJpaS5jb20iXSwiZW1haWwiOiJhZG1pbkBpaXJpaS5jb20ifQ")}]
[2019-10-25 11:03:46][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/new-acct", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:03:46 GMT", "content-type": "application/json", "content-length": "887", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "location": "https://acme-v02.api.letsencrypt.org/acme/acct/62364548", "replay-nonce": "0101pQGa3EKKOl32pQwJQlE8SrkN3ZqJSaJyOV3WhVsniuI", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:03:46][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:
{
  "key": {
    "kty": "RSA",
    "n": "5H15UqCfXJJwkuX-vsMB9mV0QHcsYOLDcexJZpEkXmzFHOIDiKBoJzVxmoK9XK4plR3SLvNczkDTKsYdegd6jyO5xW-CHFkviJMXr30_5IYkjVpXakJJumblcTo5owzNRMTuylqewVB29I92GmDPGLsyAmUi8bmeYRa381omMi5SBFModRPamiYxeQG_HsyOalZbeoZfCoT6CnxeJWevxIqV8MvCS9qwfrdqnNFw1uihKIlaijaMvKZ42-8z6iZ7zT2G65wt5_GXKi0eE90xVX6d0zaD6NmWeAGbKYPu6F9rfxaMfQgP_S-iTq1BTM2gBIPa_VzMNRIeOK3VKGqs60lDF700TIWgzvnPgs3QdAcHgouehPZe0xfOWg_J7_sv-yz0ZI9srfnibjU_gcc3xsdHxCvCzSONLjiz9cT6-QkTNVziN1QeC3SALBZkxoJ1UoRkE9okrjlVBXITlBJ-YIxUGJlMQX5xEbExr7w5n7GG1bBbOCClmpCzcXRY2ZIMqKB82ZaRmF6dMJAbmQCaTQ0VheIAu3N_3K-hR-76Mu7iDqdTKrTHRL5sQ7ZWyFLXNq7wSjnkP0pjbovAVfwW4HmQXVeIM8SR7g4foRz4Zr15cOVHSmLPxWHVmYZ9R9LWv6PIK8bg6ChuaksWtzUMJFtHOdnqHp98fA8LbdvBowc",
    "e": "AQAB"
  },
  "contact": [
    "mailto: zyf@iirii.com"
  ],
  "initialIp": "47.244.154.194",
  "createdAt": "2019-07-30T02:35:17Z",
  "status": "valid"
}
[2019-10-25 11:03:46][acme_client::libs::v2][INFO] [账户注册成功] -> StatusCode::OK - User successfully registered!
[2019-10-25 11:03:46][run_s::common::acme::task][INFO] [ACME域名订单验证流程][acme_name: "wsw.io"][acme_wildcards: ["wsw.io", "*.wsw.io", "*.docker.wsw.io"]]
[2019-10-25 11:03:46][run_s::common::acme::task][INFO] [######][:->6][ACME:创建泛域名证书订单][acme_name: "wsw.io"]--------------------------------------------------------------------------------------
[2019-10-25 11:03:46][run_s::common::acme::task][INFO] [开始签发证书域名][acme_name: "wsw.io"][acme_data: AcmeData { acme_name: "wsw.io", acme_wildcards: ["wsw.io", "*.wsw.io", "*.docker.wsw.io"] }]
[2019-10-25 11:03:46][run_s::common::acme::task][INFO] [######][:->7][ACME:请求创建泛域名证书订单][acme_name: "wsw.io"]--------------------------------------------------------------------------------------
[2019-10-25 11:03:46][acme_client::libs::v2][INFO] [创建订单请求参数][resources: createOrder][order_params: {"identifiers": Some([AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, AcmeOrderIdentifier { types: "dns", value: "*.wsw.io" }, AcmeOrderIdentifier { types: "dns", value: "*.docker.wsw.io" }])}]
[2019-10-25 11:03:46][acme_client::libs::v2][TRACE] [ACME接口请求参数->request()][request_acme_resource: newOrder][kid: Some("https://acme-v02.api.letsencrypt.org/acme/acct/62364548")][payload_value: {"identifiers":[{"type":"dns","value":"wsw.io"},{"type":"dns","value":"*.wsw.io"},{"type":"dns","value":"*.docker.wsw.io"}]}]
[2019-10-25 11:03:46][acme_client::libs::v2][TRACE] [获取临时授权凭证->get_nonce()][acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/new-nonce]
[2019-10-25 11:03:47][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/new-nonce", status: 204, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:03:47 GMT", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "replay-nonce": "0002EYct0CLH8kMNzdwN-yfPlcdGiOTxOKZpME5reYk0yIM", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:03:47][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:

[2019-10-25 11:03:47][acme_client::libs::v2][TRACE] [获取请求凭证->get_nonce()][nonce: Ok("0002EYct0CLH8kMNzdwN-yfPlcdGiOTxOKZpME5reYk0yIM")]
[2019-10-25 11:03:47][acme_client::libs::v2][TRACE] [接口请求地址->request()->jws()][request_acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/new-order]
[2019-10-25 11:03:47][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][payload: {"identifiers":[{"type":"dns","value":"wsw.io"},{"type":"dns","value":"*.wsw.io"},{"type":"dns","value":"*.docker.wsw.io"}]}]
[2019-10-25 11:03:47][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][protected: {"alg": String("RS256"), "url": String("https://acme-v02.api.letsencrypt.org/acme/new-order"), "nonce": String("0002EYct0CLH8kMNzdwN-yfPlcdGiOTxOKZpME5reYk0yIM"), "kid": String("https://acme-v02.api.letsencrypt.org/acme/acct/62364548")}]
[2019-10-25 11:03:47][acme_client::libs::v2][TRACE] [接口签名结果->request()->jws()][signature: GejsD_aCmjQOT5b4qanCRrYMyGERa_6gfqCqj6ESXPzUnuN2TQIiDdYXwRoaPp3rWdE2mP4CSdJjrtyScIEIKbSt7n23X9Rr0qgLRtx3SxSeHrZX46O2IAN2mMq1wi_remYuBUc41-fDhlOSt1dhVaBruOd_e02RXKFuXWlwt3n9nEsDuWstWXh0a6sf6mUEU2uSwfc_RDclw3ArxmpwBe4T6yIX2HDLpopMVRrv-qwS8aCGzVxkRP2dIzWutphqorda3l9nqUjOII9y9yP8bbbQ65Hia1OCE4mluFILrB04N_CMfA3xh2mi8RYE6pECQFa7RyvOGXcILUe4-FVqZsQ6sfAwRKTmTa8hOu-ClMzlOLcH-v_g-bPudatUcCbc-VEDkHhusXoSgD66twNqvTWJEinnz-qq941I5dBfPypYavHO2yTaosoi89Z35Aa9YPjCNjG1j6_meQbRF1xR9LIF8UeBnEJgfU1I9z8mXg4JwcCxW4Aq6_nGOoxneavDpFKNJppAciam0bwryifC15-QrxWR_G34u4yr1JXaCvOyVqkP30vgumTKUAGM0pbVGS4iE_PCcXWlYgsZIF_GZEW6ygqk6F6gP49O8spF8GmEgi6ph_AkDvtpkGU5pEx3tKYrchWGwbn3_CDROeklWMIFbBhy5Zoc0IQ6WgqwbB4]
[2019-10-25 11:03:47][acme_client::libs::v2][TRACE] [发起请求->request()][acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/new-order][api_payload_jws: {"payload": String("eyJpZGVudGlmaWVycyI6W3sidHlwZSI6ImRucyIsInZhbHVlIjoid3N3LmlvIn0seyJ0eXBlIjoiZG5zIiwidmFsdWUiOiIqLndzdy5pbyJ9LHsidHlwZSI6ImRucyIsInZhbHVlIjoiKi5kb2NrZXIud3N3LmlvIn1dfQ"), "protected": String("eyJhbGciOiJSUzI1NiIsInVybCI6Imh0dHBzOi8vYWNtZS12MDIuYXBpLmxldHNlbmNyeXB0Lm9yZy9hY21lL25ldy1vcmRlciIsIm5vbmNlIjoiMDAwMkVZY3QwQ0xIOGtNTnpkd04teWZQbGNkR2lPVHhPS1pwTUU1cmVZazB5SU0iLCJraWQiOiJodHRwczovL2FjbWUtdjAyLmFwaS5sZXRzZW5jcnlwdC5vcmcvYWNtZS9hY2N0LzYyMzY0NTQ4In0"), "signature": String("GejsD_aCmjQOT5b4qanCRrYMyGERa_6gfqCqj6ESXPzUnuN2TQIiDdYXwRoaPp3rWdE2mP4CSdJjrtyScIEIKbSt7n23X9Rr0qgLRtx3SxSeHrZX46O2IAN2mMq1wi_remYuBUc41-fDhlOSt1dhVaBruOd_e02RXKFuXWlwt3n9nEsDuWstWXh0a6sf6mUEU2uSwfc_RDclw3ArxmpwBe4T6yIX2HDLpopMVRrv-qwS8aCGzVxkRP2dIzWutphqorda3l9nqUjOII9y9yP8bbbQ65Hia1OCE4mluFILrB04N_CMfA3xh2mi8RYE6pECQFa7RyvOGXcILUe4-FVqZsQ6sfAwRKTmTa8hOu-ClMzlOLcH-v_g-bPudatUcCbc-VEDkHhusXoSgD66twNqvTWJEinnz-qq941I5dBfPypYavHO2yTaosoi89Z35Aa9YPjCNjG1j6_meQbRF1xR9LIF8UeBnEJgfU1I9z8mXg4JwcCxW4Aq6_nGOoxneavDpFKNJppAciam0bwryifC15-QrxWR_G34u4yr1JXaCvOyVqkP30vgumTKUAGM0pbVGS4iE_PCcXWlYgsZIF_GZEW6ygqk6F6gP49O8spF8GmEgi6ph_AkDvtpkGU5pEx3tKYrchWGwbn3_CDROeklWMIFbBhy5Zoc0IQ6WgqwbB4")}]
[2019-10-25 11:03:47][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/new-order", status: 201, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:03:47 GMT", "content-type": "application/json", "content-length": "598", "connection": "keep-alive", "boulder-requester": "62364548", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "location": "https://acme-v02.api.letsencrypt.org/acme/order/62364548/1358562732", "replay-nonce": "0002ZprvP76S-ECQrLUkK-fgjo_KHAZ7ny6Btlk6TU7Ct-I", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:03:47][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:
{
  "status": "pending",
  "expires": "2019-11-01T03:03:47.913429056Z",
  "identifiers": [
    {
      "type": "dns",
      "value": "*.docker.wsw.io"
    },
    {
      "type": "dns",
      "value": "*.wsw.io"
    },
    {
      "type": "dns",
      "value": "wsw.io"
    }
  ],
  "authorizations": [
    "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767",
    "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256768",
    "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256769"
  ],
  "finalize": "https://acme-v02.api.letsencrypt.org/acme/finalize/62364548/1358562732"
}
[2019-10-25 11:03:47][acme_client::libs::v2][DEBUG] [订单创建结果][response_data: {"status":"pending","expires":"2019-11-01T03:03:47.913429056Z","identifiers":[{"type":"dns","value":"*.docker.wsw.io"},{"type":"dns","value":"*.wsw.io"},{"type":"dns","value":"wsw.io"}],"authorizations":["https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767","https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256768","https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256769"],"finalize":"https://acme-v02.api.letsencrypt.org/acme/finalize/62364548/1358562732"}]
[2019-10-25 11:03:47][acme_client::libs::v2][INFO] [订单创建成功] -> Order successfully created
[2019-10-25 11:03:47][run_s::common::acme::task][INFO] [######][:->8][ACME:验证泛域名证书订单授权挑战][acme_name: "wsw.io"]--------------------------------------------------------------------------------------
[2019-10-25 11:03:47][acme_client::libs::v2][INFO] [循环获取 ACME 订单授权验证] ->[authorizations: ["https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767", "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256768", "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256769"]]


[2019-10-25 11:03:47][acme_client::libs::v2][INFO] [获取 ACME 订单验证挑战方案] -> [authorization: "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767"]
[2019-10-25 11:03:48][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:03:48 GMT", "content-type": "application/json", "content-length": "384", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:03:48][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:
{
  "identifier": {
    "type": "dns",
    "value": "docker.wsw.io"
  },
  "status": "pending",
  "expires": "2019-11-01T03:03:47Z",
  "challenges": [
    {
      "type": "dns-01",
      "status": "pending",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw",
      "token": "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU"
    }
  ],
  "wildcard": true
}
[2019-10-25 11:03:48][acme_client::libs::v2][INFO] [账户订单域名授权验证挑战方案]response.acme_order_auth_response:
AcmeOrderAuthResponse { status: "pending", expires: "2019-11-01T03:03:47Z", identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }, challenges: [AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }] }


[2019-10-25 11:03:48][acme_client::libs::v2][INFO] [获取 ACME 订单验证挑战方案] -> [authorization: "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256768"]
[2019-10-25 11:03:49][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256768", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:03:49 GMT", "content-type": "application/json", "content-length": "377", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:03:49][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:
{
  "identifier": {
    "type": "dns",
    "value": "wsw.io"
  },
  "status": "pending",
  "expires": "2019-11-01T03:03:47Z",
  "challenges": [
    {
      "type": "dns-01",
      "status": "pending",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww",
      "token": "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws"
    }
  ],
  "wildcard": true
}
[2019-10-25 11:03:49][acme_client::libs::v2][INFO] [账户订单域名授权验证挑战方案]response.acme_order_auth_response:
AcmeOrderAuthResponse { status: "pending", expires: "2019-11-01T03:03:47Z", identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, challenges: [AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }] }


[2019-10-25 11:03:49][acme_client::libs::v2][INFO] [获取 ACME 订单验证挑战方案] -> [authorization: "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256769"]
[2019-10-25 11:03:50][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256769", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:03:50 GMT", "content-type": "application/json", "content-length": "781", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:03:50][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:
{
  "identifier": {
    "type": "dns",
    "value": "wsw.io"
  },
  "status": "pending",
  "expires": "2019-11-01T03:03:47Z",
  "challenges": [
    {
      "type": "http-01",
      "status": "pending",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/aFJFxg",
      "token": "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8"
    },
    {
      "type": "dns-01",
      "status": "pending",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg",
      "token": "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8"
    },
    {
      "type": "tls-alpn-01",
      "status": "pending",
      "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/cdEsAg",
      "token": "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8"
    }
  ]
}
[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [账户订单域名授权验证挑战方案]response.acme_order_auth_response:
AcmeOrderAuthResponse { status: "pending", expires: "2019-11-01T03:03:47Z", identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, challenges: [AcmeOrderAuthorizationChallenge { types: "http-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/aFJFxg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }, AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }, AcmeOrderAuthorizationChallenge { types: "tls-alpn-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/cdEsAg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }] }


[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [ACME 订单授权验证列表] ->[acme_order.order_auth_list: [AcmeOrderAuthResponse { status: "pending", expires: "2019-11-01T03:03:47Z", identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }, challenges: [AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }] }, AcmeOrderAuthResponse { status: "pending", expires: "2019-11-01T03:03:47Z", identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, challenges: [AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }] }, AcmeOrderAuthResponse { status: "pending", expires: "2019-11-01T03:03:47Z", identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, challenges: [AcmeOrderAuthorizationChallenge { types: "http-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/aFJFxg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }, AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }, AcmeOrderAuthorizationChallenge { types: "tls-alpn-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/cdEsAg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }] }]]
[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [循环计算 ACME 订单授权签名] ->[order_auth_list: [AcmeOrderAuthResponse { status: "pending", expires: "2019-11-01T03:03:47Z", identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }, challenges: [AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }] }, AcmeOrderAuthResponse { status: "pending", expires: "2019-11-01T03:03:47Z", identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, challenges: [AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }] }, AcmeOrderAuthResponse { status: "pending", expires: "2019-11-01T03:03:47Z", identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, challenges: [AcmeOrderAuthorizationChallenge { types: "http-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/aFJFxg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }, AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }, AcmeOrderAuthorizationChallenge { types: "tls-alpn-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/cdEsAg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }] }]]


[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [为 ACME 订单配置挑战签名] -> [auth_name: docker.wsw.io][order_auth_info: AcmeOrderAuthResponse { status: "pending", expires: "2019-11-01T03:03:47Z", identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }, challenges: [AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }] }]
[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [####] order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }
[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [####] order_auth_challenges: [AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }]
[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [####] order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }
[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [DNS签名][auth_key_thumbprint: "wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"][auth_key_token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"]
[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [DNS挑战签名][auth_dns_token: "F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs"]


[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [为 ACME 订单配置挑战签名] -> [auth_name: wsw.io][order_auth_info: AcmeOrderAuthResponse { status: "pending", expires: "2019-11-01T03:03:47Z", identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, challenges: [AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }] }]
[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [####] order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }
[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [####] order_auth_challenges: [AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }]
[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [####] order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }
[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [DNS签名][auth_key_thumbprint: "wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"][auth_key_token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"]
[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [DNS挑战签名][auth_dns_token: "Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A"]


[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [为 ACME 订单配置挑战签名] -> [auth_name: wsw.io][order_auth_info: AcmeOrderAuthResponse { status: "pending", expires: "2019-11-01T03:03:47Z", identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, challenges: [AcmeOrderAuthorizationChallenge { types: "http-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/aFJFxg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }, AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }, AcmeOrderAuthorizationChallenge { types: "tls-alpn-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/cdEsAg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }] }]
[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [####] order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }
[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [####] order_auth_challenges: [AcmeOrderAuthorizationChallenge { types: "http-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/aFJFxg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }, AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }, AcmeOrderAuthorizationChallenge { types: "tls-alpn-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/cdEsAg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }]
[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [####] order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: None, auth_dns_token: None }
[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [DNS签名][auth_key_thumbprint: "wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"][auth_key_token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"]
[2019-10-25 11:03:50][acme_client::libs::v2][INFO] [DNS挑战签名][auth_dns_token: "-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4"]


[2019-10-25 11:03:50][acme_client::libs::v2][DEBUG] [ACME 待验证订单授权签名列表] -> [acme_order_auth_list: [AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: Some("EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs") } }, AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: Some("7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A") } }, AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: Some("LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4") } }]]


[2019-10-25 11:03:50][run_s::common::acme::task][INFO] [######][:->9][ACME:泛域名证书订单挑战签名并解析DNS-01][acme_name: "wsw.io"]--------------------------------------------------------------------------------------
[2019-10-25 11:03:50][run_s::common::acme::tool][INFO] [###]解析记录 -> 批量创建: acme_order_auth_list: [AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: Some("EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs") } }, AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: Some("7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A") } }, AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: Some("LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4") } }]
[2019-10-25 11:03:50][run_s::common::acme::tool][DEBUG] [###]循环解析挑战订单: acme_order_auth_data: AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: Some("EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs") } }
[2019-10-25 11:03:50][run_s::common::acme::tool][DEBUG] [####] order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }
[2019-10-25 11:03:50][run_s::common::acme::tool][DEBUG] [####] order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: Some("EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs") }
[2019-10-25 11:03:50][run_s::common::acme::tool][INFO] [###]发起TXT解析["docker.wsw.io": Some("F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs")]
[2019-10-25 11:03:50][run_s::common::acme::tool][INFO] [(DNS-TXT)域名解析记录-新建][type: TXT,name: _acme-challenge.docker,value: F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs]
[2019-10-25 11:03:50][run_s::common::tools][INFO] #[执行命令: run_command(...)][cmd_rs_path: "/data/home/coam/Server/Run/run_s"][cmd_rs_envs: {}]...
[2019-10-25 11:03:50][run_s::common::tools][INFO] #> curl -X POST https://dnsapi.cn/Record.Create -d login_token=72921,303e442575de36c5b854c9eb95da2106&format=json&domain=wsw.io&sub_domain=_acme-challenge.docker&value=F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs&record_type=TXT&mx=0&ttl=600&record_line=默认
[2019-10-25 11:03:50][run_s::common::tools][DEBUG] command run status: exit code: 0
[2019-10-25 11:03:50][run_s::common::tools][DEBUG] command run stdout: {"status":{"code":"1","message":"Action completed successful","created_at":"2019-10-25 11:03:50"},"record":{"id":"475336563","name":"_acme-challenge.docker","status":"enabled","weight":null}}
[2019-10-25 11:03:50][run_s::common::tools][DEBUG] command run stderr:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   399  100   191  100   208    507    553 --:--:-- --:--:-- --:--:--  1061

[2019-10-25 11:03:50][run_s::common::dns::tool][DEBUG] [###][dns_record_create_result: DnsRecordCreateResult { status: DnsApiStatus { code: "1", message: "Action completed successful", created_at: "2019-10-25 11:03:50" }, record: Some(DnsRecordCreateRecord { id: "475336563", name: "_acme-challenge.docker", status: "enabled" }) }]
[2019-10-25 11:03:50][run_s::common::dns::tool][DEBUG] [dns_status: DnsApiStatus { code: "1", message: "Action completed successful", created_at: "2019-10-25 11:03:50" }][dns_record: DnsRecordCreateRecord { id: "475336563", name: "_acme-challenge.docker", status: "enabled" }]
[2019-10-25 11:03:50][run_s::common::acme::tool][INFO] [(DNS-TXT)域名解析记录-结果][dns_record_id: "475336563"][dns_record_name: "_acme-challenge.docker"][dns_record_status: "enabled"]
[2019-10-25 11:03:50][run_s::common::acme::tool][DEBUG] [###]循环解析挑战订单: acme_order_auth_data: AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: Some("7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A") } }
[2019-10-25 11:03:50][run_s::common::acme::tool][DEBUG] [####] order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }
[2019-10-25 11:03:50][run_s::common::acme::tool][DEBUG] [####] order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: Some("7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A") }
[2019-10-25 11:03:50][run_s::common::acme::tool][INFO] [###]发起TXT解析["wsw.io": Some("Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A")]
[2019-10-25 11:03:50][run_s::common::acme::tool][INFO] [(DNS-TXT)域名解析记录-新建][type: TXT,name: _acme-challenge,value: Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A]
[2019-10-25 11:03:50][run_s::common::tools][INFO] #[执行命令: run_command(...)][cmd_rs_path: "/data/home/coam/Server/Run/run_s"][cmd_rs_envs: {}]...
[2019-10-25 11:03:50][run_s::common::tools][INFO] #> curl -X POST https://dnsapi.cn/Record.Create -d login_token=72921,303e442575de36c5b854c9eb95da2106&format=json&domain=wsw.io&sub_domain=_acme-challenge&value=Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A&record_type=TXT&mx=0&ttl=600&record_line=默认
[2019-10-25 11:03:51][run_s::common::tools][DEBUG] command run status: exit code: 0
[2019-10-25 11:03:51][run_s::common::tools][DEBUG] command run stdout: {"status":{"code":"1","message":"Action completed successful","created_at":"2019-10-25 11:03:51"},"record":{"id":"475336569","name":"_acme-challenge","status":"enabled","weight":null}}
[2019-10-25 11:03:51][run_s::common::tools][DEBUG] command run stderr:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   385  100   184  100   201    554    605 --:--:-- --:--:-- --:--:--  1156

[2019-10-25 11:03:51][run_s::common::dns::tool][DEBUG] [###][dns_record_create_result: DnsRecordCreateResult { status: DnsApiStatus { code: "1", message: "Action completed successful", created_at: "2019-10-25 11:03:51" }, record: Some(DnsRecordCreateRecord { id: "475336569", name: "_acme-challenge", status: "enabled" }) }]
[2019-10-25 11:03:51][run_s::common::dns::tool][DEBUG] [dns_status: DnsApiStatus { code: "1", message: "Action completed successful", created_at: "2019-10-25 11:03:51" }][dns_record: DnsRecordCreateRecord { id: "475336569", name: "_acme-challenge", status: "enabled" }]
[2019-10-25 11:03:51][run_s::common::acme::tool][INFO] [(DNS-TXT)域名解析记录-结果][dns_record_id: "475336569"][dns_record_name: "_acme-challenge"][dns_record_status: "enabled"]
[2019-10-25 11:03:51][run_s::common::acme::tool][DEBUG] [###]循环解析挑战订单: acme_order_auth_data: AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: Some("LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4") } }
[2019-10-25 11:03:51][run_s::common::acme::tool][DEBUG] [####] order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }
[2019-10-25 11:03:51][run_s::common::acme::tool][DEBUG] [####] order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: Some("LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4") }
[2019-10-25 11:03:51][run_s::common::acme::tool][INFO] [###]发起TXT解析["wsw.io": Some("-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4")]
[2019-10-25 11:03:51][run_s::common::acme::tool][INFO] [(DNS-TXT)域名解析记录-新建][type: TXT,name: _acme-challenge,value: -0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4]
[2019-10-25 11:03:51][run_s::common::tools][INFO] #[执行命令: run_command(...)][cmd_rs_path: "/data/home/coam/Server/Run/run_s"][cmd_rs_envs: {}]...
[2019-10-25 11:03:51][run_s::common::tools][INFO] #> curl -X POST https://dnsapi.cn/Record.Create -d login_token=72921,303e442575de36c5b854c9eb95da2106&format=json&domain=wsw.io&sub_domain=_acme-challenge&value=-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4&record_type=TXT&mx=0&ttl=600&record_line=默认
[2019-10-25 11:03:51][run_s::common::tools][DEBUG] command run status: exit code: 0
[2019-10-25 11:03:51][run_s::common::tools][DEBUG] command run stdout: {"status":{"code":"1","message":"Action completed successful","created_at":"2019-10-25 11:03:51"},"record":{"id":"475336572","name":"_acme-challenge","status":"enabled","weight":null}}
[2019-10-25 11:03:51][run_s::common::tools][DEBUG] command run stderr:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   385  100   184  100   201    494    540 --:--:-- --:--:-- --:--:--  1034

[2019-10-25 11:03:51][run_s::common::dns::tool][DEBUG] [###][dns_record_create_result: DnsRecordCreateResult { status: DnsApiStatus { code: "1", message: "Action completed successful", created_at: "2019-10-25 11:03:51" }, record: Some(DnsRecordCreateRecord { id: "475336572", name: "_acme-challenge", status: "enabled" }) }]
[2019-10-25 11:03:51][run_s::common::dns::tool][DEBUG] [dns_status: DnsApiStatus { code: "1", message: "Action completed successful", created_at: "2019-10-25 11:03:51" }][dns_record: DnsRecordCreateRecord { id: "475336572", name: "_acme-challenge", status: "enabled" }]
[2019-10-25 11:03:51][run_s::common::acme::tool][INFO] [(DNS-TXT)域名解析记录-结果][dns_record_id: "475336572"][dns_record_name: "_acme-challenge"][dns_record_status: "enabled"]
[2019-10-25 11:03:54][run_s::common::acme::tool][INFO] [批量解析延时等待 3 秒生效...]
[2019-10-25 11:03:54][run_s::common::acme::task][INFO] [######][:->10][ACME:验证域名服务商批量创建(DNS-TXT)验证记录][acme_name: "wsw.io"]--------------------------------------------------------------------------------------
[2019-10-25 11:03:54][run_s::common::acme::tool][INFO] [###]解析记录 -> 批量验证: acme_order_auth_list: [AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: Some("EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs") } }, AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: Some("7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A") } }, AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: Some("LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4") } }]


[2019-10-25 11:03:54][run_s::common::acme::tool][DEBUG] [###]验证TXT解析签名: acme_order_auth_data: AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: Some("EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs") } }
[2019-10-25 11:03:54][run_s::common::acme::tool][DEBUG] [####] order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }
[2019-10-25 11:03:54][run_s::common::acme::tool][DEBUG] [####] order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: Some("EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs") }
[2019-10-25 11:03:54][run_s::common::acme::tool][INFO] [###]待验证TXT解析名["_acme-challenge.docker.wsw.io": "F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs"]


[2019-10-25 11:03:54][run_s::common::acme::tool][INFO] [循环延时(DNS-TXT)验证批次][acme_name: wsw.io][acme_order_auth_challenge_name: "_acme-challenge.docker.wsw.io"][acme_order_auth_dns_token: "F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs"],尝试延时验证批次[try_ts: 10]
[2019-10-25 11:03:54][run_s::common::acme::tool][DEBUG] [#][域名服务解析响应数据][TXT][dns_txt_name: Name { is_fqdn: false, labels: [_acme-challenge, docker, wsw, io] }][dns_response: DnsResponse([Message { header: Header { id: 2439, message_type: Response, op_code: Query, authoritative: false, truncation: false, recursion_desired: true, recursion_available: true, authentic_data: false, checking_disabled: false, response_code: 0, query_count: 1, answer_count: 1, name_server_count: 0, additional_count: 1 }, queries: [Query { name: Name { is_fqdn: true, labels: [_acme-challenge, docker, wsw, io] }, query_type: TXT, query_class: IN }], answers: [Record { name_labels: Name { is_fqdn: true, labels: [_acme-challenge, docker, wsw, io] }, rr_type: TXT, dns_class: IN, ttl: 599, rdata: TXT(TXT { txt_data: [[70, 53, 117, 102, 107, 72, 81, 52, 108, 83, 78, 87, 97, 122, 45, 114, 52, 100, 86, 106, 117, 49, 69, 119, 81, 98, 48, 108, 97, 105, 65, 78, 108, 99, 87, 100, 107, 114, 95, 115, 55, 82, 115]] }) }], name_servers: [], additionals: [], sig0: [], edns: Some(Edns { rcode_high: 0, version: 0, dnssec_ok: false, max_payload: 512, options: OPT { options: {} } }) }])]
[2019-10-25 11:03:54][run_s::common::acme::tool][TRACE] [#][域名服务响应][dns_answer: Record { name_labels: Name { is_fqdn: true, labels: [_acme-challenge, docker, wsw, io] }, rr_type: TXT, dns_class: IN, ttl: 599, rdata: TXT(TXT { txt_data: [[70, 53, 117, 102, 107, 72, 81, 52, 108, 83, 78, 87, 97, 122, 45, 114, 52, 100, 86, 106, 117, 49, 69, 119, 81, 98, 48, 108, 97, 105, 65, 78, 108, 99, 87, 100, 107, 114, 95, 115, 55, 82, 115]] }) }]
[2019-10-25 11:03:54][run_s::common::acme::tool][TRACE] [#][域名服务记录][TXT.txt_data][txt_str: "F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs"]
[2019-10-25 11:03:54][run_s::common::acme::tool][DEBUG] [#][域名服务器TXT解析数据][dns_txt_records: ["F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs"]]
[2019-10-25 11:03:54][run_s::common::acme::tool][INFO] [(DNS-TXT)验证完成,跳出循环验证请求][acme_name: wsw.io][acme_order_auth_challenge_name: "_acme-challenge.docker.wsw.io"][acme_order_auth_dns_token: F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs][try_ts: 10]


[2019-10-25 11:03:54][run_s::common::acme::tool][DEBUG] [###]验证TXT解析签名: acme_order_auth_data: AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: Some("7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A") } }
[2019-10-25 11:03:54][run_s::common::acme::tool][DEBUG] [####] order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }
[2019-10-25 11:03:54][run_s::common::acme::tool][DEBUG] [####] order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: Some("7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A") }
[2019-10-25 11:03:54][run_s::common::acme::tool][INFO] [###]待验证TXT解析名["_acme-challenge.wsw.io": "Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A"]


[2019-10-25 11:03:54][run_s::common::acme::tool][INFO] [循环延时(DNS-TXT)验证批次][acme_name: wsw.io][acme_order_auth_challenge_name: "_acme-challenge.wsw.io"][acme_order_auth_dns_token: "Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A"],尝试延时验证批次[try_ts: 10]
[2019-10-25 11:03:54][run_s::common::acme::tool][DEBUG] [#][域名服务解析响应数据][TXT][dns_txt_name: Name { is_fqdn: false, labels: [_acme-challenge, wsw, io] }][dns_response: DnsResponse([Message { header: Header { id: 44256, message_type: Response, op_code: Query, authoritative: false, truncation: false, recursion_desired: true, recursion_available: true, authentic_data: false, checking_disabled: false, response_code: 0, query_count: 1, answer_count: 2, name_server_count: 0, additional_count: 1 }, queries: [Query { name: Name { is_fqdn: true, labels: [_acme-challenge, wsw, io] }, query_type: TXT, query_class: IN }], answers: [Record { name_labels: Name { is_fqdn: true, labels: [_acme-challenge, wsw, io] }, rr_type: TXT, dns_class: IN, ttl: 599, rdata: TXT(TXT { txt_data: [[90, 54, 65, 48, 87, 56, 79, 108, 111, 73, 78, 70, 53, 98, 90, 55, 85, 112, 113, 71, 57, 48, 65, 71, 45, 84, 75, 71, 109, 115, 89, 68, 51, 69, 120, 70, 82, 77, 106, 116, 122, 51, 65]] }) }, Record { name_labels: Name { is_fqdn: true, labels: [_acme-challenge, wsw, io] }, rr_type: TXT, dns_class: IN, ttl: 599, rdata: TXT(TXT { txt_data: [[45, 48, 90, 79, 76, 109, 120, 119, 77, 95, 120, 108, 54, 51, 68, 54, 57, 48, 97, 73, 82, 109, 70, 55, 106, 67, 66, 73, 69, 79, 81, 77, 109, 107, 71, 65, 55, 52, 119, 51, 102, 90, 52]] }) }], name_servers: [], additionals: [], sig0: [], edns: Some(Edns { rcode_high: 0, version: 0, dnssec_ok: false, max_payload: 512, options: OPT { options: {} } }) }])]
[2019-10-25 11:03:54][run_s::common::acme::tool][TRACE] [#][域名服务响应][dns_answer: Record { name_labels: Name { is_fqdn: true, labels: [_acme-challenge, wsw, io] }, rr_type: TXT, dns_class: IN, ttl: 599, rdata: TXT(TXT { txt_data: [[90, 54, 65, 48, 87, 56, 79, 108, 111, 73, 78, 70, 53, 98, 90, 55, 85, 112, 113, 71, 57, 48, 65, 71, 45, 84, 75, 71, 109, 115, 89, 68, 51, 69, 120, 70, 82, 77, 106, 116, 122, 51, 65]] }) }]
[2019-10-25 11:03:54][run_s::common::acme::tool][TRACE] [#][域名服务记录][TXT.txt_data][txt_str: "Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A"]
[2019-10-25 11:03:54][run_s::common::acme::tool][TRACE] [#][域名服务响应][dns_answer: Record { name_labels: Name { is_fqdn: true, labels: [_acme-challenge, wsw, io] }, rr_type: TXT, dns_class: IN, ttl: 599, rdata: TXT(TXT { txt_data: [[45, 48, 90, 79, 76, 109, 120, 119, 77, 95, 120, 108, 54, 51, 68, 54, 57, 48, 97, 73, 82, 109, 70, 55, 106, 67, 66, 73, 69, 79, 81, 77, 109, 107, 71, 65, 55, 52, 119, 51, 102, 90, 52]] }) }]
[2019-10-25 11:03:54][run_s::common::acme::tool][TRACE] [#][域名服务记录][TXT.txt_data][txt_str: "-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4"]
[2019-10-25 11:03:54][run_s::common::acme::tool][DEBUG] [#][域名服务器TXT解析数据][dns_txt_records: ["Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A", "-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4"]]
[2019-10-25 11:03:54][run_s::common::acme::tool][INFO] [(DNS-TXT)验证完成,跳出循环验证请求][acme_name: wsw.io][acme_order_auth_challenge_name: "_acme-challenge.wsw.io"][acme_order_auth_dns_token: Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A][try_ts: 10]


[2019-10-25 11:03:54][run_s::common::acme::tool][DEBUG] [###]验证TXT解析签名: acme_order_auth_data: AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: Some("LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4") } }
[2019-10-25 11:03:54][run_s::common::acme::tool][DEBUG] [####] order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }
[2019-10-25 11:03:54][run_s::common::acme::tool][DEBUG] [####] order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: Some("LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4") }
[2019-10-25 11:03:54][run_s::common::acme::tool][INFO] [###]待验证TXT解析名["_acme-challenge.wsw.io": "-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4"]


[2019-10-25 11:03:54][run_s::common::acme::tool][INFO] [循环延时(DNS-TXT)验证批次][acme_name: wsw.io][acme_order_auth_challenge_name: "_acme-challenge.wsw.io"][acme_order_auth_dns_token: "-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4"],尝试延时验证批次[try_ts: 10]
[2019-10-25 11:03:54][run_s::common::acme::tool][DEBUG] [#][域名服务解析响应数据][TXT][dns_txt_name: Name { is_fqdn: false, labels: [_acme-challenge, wsw, io] }][dns_response: DnsResponse([Message { header: Header { id: 43488, message_type: Response, op_code: Query, authoritative: false, truncation: false, recursion_desired: true, recursion_available: true, authentic_data: false, checking_disabled: false, response_code: 0, query_count: 1, answer_count: 1, name_server_count: 0, additional_count: 1 }, queries: [Query { name: Name { is_fqdn: true, labels: [_acme-challenge, wsw, io] }, query_type: TXT, query_class: IN }], answers: [Record { name_labels: Name { is_fqdn: true, labels: [_acme-challenge, wsw, io] }, rr_type: TXT, dns_class: IN, ttl: 599, rdata: TXT(TXT { txt_data: [[90, 54, 65, 48, 87, 56, 79, 108, 111, 73, 78, 70, 53, 98, 90, 55, 85, 112, 113, 71, 57, 48, 65, 71, 45, 84, 75, 71, 109, 115, 89, 68, 51, 69, 120, 70, 82, 77, 106, 116, 122, 51, 65]] }) }], name_servers: [], additionals: [], sig0: [], edns: Some(Edns { rcode_high: 0, version: 0, dnssec_ok: false, max_payload: 512, options: OPT { options: {} } }) }])]
[2019-10-25 11:03:54][run_s::common::acme::tool][TRACE] [#][域名服务响应][dns_answer: Record { name_labels: Name { is_fqdn: true, labels: [_acme-challenge, wsw, io] }, rr_type: TXT, dns_class: IN, ttl: 599, rdata: TXT(TXT { txt_data: [[90, 54, 65, 48, 87, 56, 79, 108, 111, 73, 78, 70, 53, 98, 90, 55, 85, 112, 113, 71, 57, 48, 65, 71, 45, 84, 75, 71, 109, 115, 89, 68, 51, 69, 120, 70, 82, 77, 106, 116, 122, 51, 65]] }) }]
[2019-10-25 11:03:54][run_s::common::acme::tool][TRACE] [#][域名服务记录][TXT.txt_data][txt_str: "Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A"]
[2019-10-25 11:03:54][run_s::common::acme::tool][DEBUG] [#][域名服务器TXT解析数据][dns_txt_records: ["Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A"]]
[2019-10-25 11:03:54][run_s::common::acme::tool][ERROR] [(DNS-TXT)验证不匹配][acme_name: wsw.io][acme_order_auth_dns_token: -0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4][dns_txt_records: ["Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A"]]
[2019-10-25 11:04:04][run_s::common::acme::tool][WARN] [未匹配解析记录值,请耐心等待 10 秒延时验证...]
[2019-10-25 11:04:04][run_s::common::acme::tool][INFO] [循环延时(DNS-TXT)验证批次][acme_name: wsw.io][acme_order_auth_challenge_name: "_acme-challenge.wsw.io"][acme_order_auth_dns_token: "-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4"],尝试延时验证批次[try_ts: 20]
[2019-10-25 11:04:05][run_s::common::acme::tool][DEBUG] [#][域名服务解析响应数据][TXT][dns_txt_name: Name { is_fqdn: false, labels: [_acme-challenge, wsw, io] }][dns_response: DnsResponse([Message { header: Header { id: 5309, message_type: Response, op_code: Query, authoritative: false, truncation: false, recursion_desired: true, recursion_available: true, authentic_data: false, checking_disabled: false, response_code: 0, query_count: 1, answer_count: 2, name_server_count: 0, additional_count: 1 }, queries: [Query { name: Name { is_fqdn: true, labels: [_acme-challenge, wsw, io] }, query_type: TXT, query_class: IN }], answers: [Record { name_labels: Name { is_fqdn: true, labels: [_acme-challenge, wsw, io] }, rr_type: TXT, dns_class: IN, ttl: 599, rdata: TXT(TXT { txt_data: [[90, 54, 65, 48, 87, 56, 79, 108, 111, 73, 78, 70, 53, 98, 90, 55, 85, 112, 113, 71, 57, 48, 65, 71, 45, 84, 75, 71, 109, 115, 89, 68, 51, 69, 120, 70, 82, 77, 106, 116, 122, 51, 65]] }) }, Record { name_labels: Name { is_fqdn: true, labels: [_acme-challenge, wsw, io] }, rr_type: TXT, dns_class: IN, ttl: 599, rdata: TXT(TXT { txt_data: [[45, 48, 90, 79, 76, 109, 120, 119, 77, 95, 120, 108, 54, 51, 68, 54, 57, 48, 97, 73, 82, 109, 70, 55, 106, 67, 66, 73, 69, 79, 81, 77, 109, 107, 71, 65, 55, 52, 119, 51, 102, 90, 52]] }) }], name_servers: [], additionals: [], sig0: [], edns: Some(Edns { rcode_high: 0, version: 0, dnssec_ok: false, max_payload: 512, options: OPT { options: {} } }) }])]
[2019-10-25 11:04:05][run_s::common::acme::tool][TRACE] [#][域名服务响应][dns_answer: Record { name_labels: Name { is_fqdn: true, labels: [_acme-challenge, wsw, io] }, rr_type: TXT, dns_class: IN, ttl: 599, rdata: TXT(TXT { txt_data: [[90, 54, 65, 48, 87, 56, 79, 108, 111, 73, 78, 70, 53, 98, 90, 55, 85, 112, 113, 71, 57, 48, 65, 71, 45, 84, 75, 71, 109, 115, 89, 68, 51, 69, 120, 70, 82, 77, 106, 116, 122, 51, 65]] }) }]
[2019-10-25 11:04:05][run_s::common::acme::tool][TRACE] [#][域名服务记录][TXT.txt_data][txt_str: "Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A"]
[2019-10-25 11:04:05][run_s::common::acme::tool][TRACE] [#][域名服务响应][dns_answer: Record { name_labels: Name { is_fqdn: true, labels: [_acme-challenge, wsw, io] }, rr_type: TXT, dns_class: IN, ttl: 599, rdata: TXT(TXT { txt_data: [[45, 48, 90, 79, 76, 109, 120, 119, 77, 95, 120, 108, 54, 51, 68, 54, 57, 48, 97, 73, 82, 109, 70, 55, 106, 67, 66, 73, 69, 79, 81, 77, 109, 107, 71, 65, 55, 52, 119, 51, 102, 90, 52]] }) }]
[2019-10-25 11:04:05][run_s::common::acme::tool][TRACE] [#][域名服务记录][TXT.txt_data][txt_str: "-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4"]
[2019-10-25 11:04:05][run_s::common::acme::tool][DEBUG] [#][域名服务器TXT解析数据][dns_txt_records: ["Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A", "-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4"]]
[2019-10-25 11:04:05][run_s::common::acme::tool][INFO] [(DNS-TXT)验证完成,跳出循环验证请求][acme_name: wsw.io][acme_order_auth_challenge_name: "_acme-challenge.wsw.io"][acme_order_auth_dns_token: -0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4][try_ts: 20]


[2019-10-25 11:04:05][run_s::common::acme::task][INFO] [######][:->11][ACME:已验证域名服务商批量创建(DNS-TXT)验证记录,开始批量发起挑战][acme_name: "wsw.io"]--------------------------------------------------------------------------------------
[2019-10-25 11:04:05][acme_client::libs::v2][INFO] [循环验证 ACME 订单授权签名] ->[acme_order_auth_list: [AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: Some("EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs") } }, AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: Some("7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A") } }, AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: Some("LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4") } }]]




[2019-10-25 11:04:05][acme_client::libs::v2][DEBUG] [###]循环处理挑战订单: auth_acme_order_data: AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: Some("EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs") } }
[2019-10-25 11:04:05][acme_client::libs::v2][INFO] [###]验证挑战: [order_auth_challenge.url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw"][order_auth_challenge.auth_dns_token: Some("F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs")]
[2019-10-25 11:04:05][acme_client::libs::v2][DEBUG] [####] order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "docker.wsw.io" }
[2019-10-25 11:04:05][acme_client::libs::v2][DEBUG] [####] order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", token: "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU", wildcard: None, validation_record: None, auth_key_token: Some("EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs") }
[2019-10-25 11:04:05][acme_client::libs::v2][INFO] [挑战验证] -> Triggering dns-01 validation
[2019-10-25 11:04:05][acme_client::libs::v2][DEBUG] validate info: [challenge_token: "F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs"]
[2019-10-25 11:04:05][acme_client::libs::v2][TRACE] [ACME接口请求参数->request()][request_acme_resource: https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw][kid: Some("https://acme-v02.api.letsencrypt.org/acme/acct/62364548")][payload_value: {"keyAuthorization":"F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs"}]
[2019-10-25 11:04:05][acme_client::libs::v2][TRACE] [获取临时授权凭证->get_nonce()][acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/new-nonce]
[2019-10-25 11:04:05][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/new-nonce", status: 204, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:04:05 GMT", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "replay-nonce": "0001_RB5QdS8KrZBfcqMJG3GqkvXQK1Wya8X1g_O6yJIvlw", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:04:05][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:

[2019-10-25 11:04:05][acme_client::libs::v2][TRACE] [获取请求凭证->get_nonce()][nonce: Ok("0001_RB5QdS8KrZBfcqMJG3GqkvXQK1Wya8X1g_O6yJIvlw")]
[2019-10-25 11:04:05][acme_client::libs::v2][TRACE] [接口请求地址->request()->jws()][request_acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw]
[2019-10-25 11:04:05][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][payload: {"keyAuthorization":"F5ufkHQ4lSNWaz-r4dVju1EwQb0laiANlcWdkr_s7Rs"}]
[2019-10-25 11:04:05][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][protected: {"kid": String("https://acme-v02.api.letsencrypt.org/acme/acct/62364548"), "alg": String("RS256"), "nonce": String("0001_RB5QdS8KrZBfcqMJG3GqkvXQK1Wya8X1g_O6yJIvlw"), "url": String("https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw")}]
[2019-10-25 11:04:05][acme_client::libs::v2][TRACE] [接口签名结果->request()->jws()][signature: CJom2H22YWqPsLineKGc66aK4nmGLWCUB8nP0XaAWDv6hOwJwLehu8UasQAHeu2ERAnDSpqE0U_FA8X4-W2fds4xWyi0tIHz_D6ArT-t_sqBqaZsFAD32WGpJiRWJX3CCbloHdg8jAhH6WZIteIVxu3kvf6SkNhule-oH2tKElL8lnNYBMS3tBUtLUBEO0J30-gGZW6AQ_4grKeOhAVnEl3F02-Vrs0Vu4qd_hkyZDqugN03Cdzk0ZurIvqSHxdChkbz6lljcjBc6oIUuKpaiuuFPqXU5QKX5OK7qGF5g8N-gsJXlsfEpgFxYaLsTa5UmlywnGRkm8sttFU5OYMnJVsfTAwfJyb7Hz8fu8OoPdArS7TH2vTvbSX-l2L00N7nw0LEI1-ohnH6IlsnQKyN4MW5RbJ02C3cIH6FqmETBxJQU7IWoUhAoSNLhSdNfQNHszw9hGsELMJ6_Re-CXnHalHUzgLEfDUew5msdBApq-o0jKJ9z-3SIqXHl0KoMvHQFmImkpp4geb7AuslGoRBYRKqqTzBsm7WkxKixySOIfPd0CLTXsm7_kzkeKQZYyukPqBKG20wjM19_8trGqvbhGZtESY_FLctrn21uXDnOflz--a-P6jAQe81uhPb6eqbLx1FpTiRVTw4u4mcRVmsfsYJvm0jyRltfN08QXWKMtk]
[2019-10-25 11:04:05][acme_client::libs::v2][TRACE] [发起请求->request()][acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw][api_payload_jws: {"payload": String("eyJrZXlBdXRob3JpemF0aW9uIjoiRjV1ZmtIUTRsU05XYXotcjRkVmp1MUV3UWIwbGFpQU5sY1dka3JfczdScyJ9"), "signature": String("CJom2H22YWqPsLineKGc66aK4nmGLWCUB8nP0XaAWDv6hOwJwLehu8UasQAHeu2ERAnDSpqE0U_FA8X4-W2fds4xWyi0tIHz_D6ArT-t_sqBqaZsFAD32WGpJiRWJX3CCbloHdg8jAhH6WZIteIVxu3kvf6SkNhule-oH2tKElL8lnNYBMS3tBUtLUBEO0J30-gGZW6AQ_4grKeOhAVnEl3F02-Vrs0Vu4qd_hkyZDqugN03Cdzk0ZurIvqSHxdChkbz6lljcjBc6oIUuKpaiuuFPqXU5QKX5OK7qGF5g8N-gsJXlsfEpgFxYaLsTa5UmlywnGRkm8sttFU5OYMnJVsfTAwfJyb7Hz8fu8OoPdArS7TH2vTvbSX-l2L00N7nw0LEI1-ohnH6IlsnQKyN4MW5RbJ02C3cIH6FqmETBxJQU7IWoUhAoSNLhSdNfQNHszw9hGsELMJ6_Re-CXnHalHUzgLEfDUew5msdBApq-o0jKJ9z-3SIqXHl0KoMvHQFmImkpp4geb7AuslGoRBYRKqqTzBsm7WkxKixySOIfPd0CLTXsm7_kzkeKQZYyukPqBKG20wjM19_8trGqvbhGZtESY_FLctrn21uXDnOflz--a-P6jAQe81uhPb6eqbLx1FpTiRVTw4u4mcRVmsfsYJvm0jyRltfN08QXWKMtk"), "protected": String("eyJraWQiOiJodHRwczovL2FjbWUtdjAyLmFwaS5sZXRzZW5jcnlwdC5vcmcvYWNtZS9hY2N0LzYyMzY0NTQ4IiwiYWxnIjoiUlMyNTYiLCJub25jZSI6IjAwMDFfUkI1UWRTOEtyWkJmY3FNSkczR3FrdlhRSzFXeWE4WDFnX082eUpJdmx3IiwidXJsIjoiaHR0cHM6Ly9hY21lLXYwMi5hcGkubGV0c2VuY3J5cHQub3JnL2FjbWUvY2hhbGwtdjMvOTI4MjU2NzY3L2x6bWRRdyJ9")}]
[2019-10-25 11:04:06][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:04:06 GMT", "content-type": "application/json", "content-length": "183", "connection": "keep-alive", "boulder-requester": "62364548", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "link": "<https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767>;rel=\"up\"", "location": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", "replay-nonce": "01015_Sfin1rJ9z1u02rNxwnLbUIU0JF9DWYg_Ac1_jkjpo", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:04:06][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:
{
  "type": "dns-01",
  "status": "pending",
  "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw",
  "token": "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU"
}
[2019-10-25 11:04:06][acme_client::libs::v2][DEBUG] [MAIN][response.status(): 200 OK][response_value: {"type":"dns-01","status":"pending","url":"https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw","token":"EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU"}]
[2019-10-25 11:04:06][acme_client::libs::v2][INFO] [循环挑战验证状态] -> [challenge validate status: pending], trying again...
[2019-10-25 11:04:07][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:04:07 GMT", "content-type": "application/json", "content-length": "183", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "link": "<https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767>;rel=\"up\"", "location": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:04:07][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:
{
  "type": "dns-01",
  "status": "pending",
  "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw",
  "token": "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU"
}
[2019-10-25 11:04:07][acme_client::libs::v2][DEBUG] [LOOP][response.status(): 200 OK][response_value: {"type":"dns-01","status":"pending","url":"https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw","token":"EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU"}]
[2019-10-25 11:04:07][acme_client::libs::v2][WARN] [challenge validate status: pending]
[2019-10-25 11:04:09][acme_client::libs::v2][INFO] [循环挑战验证状态] -> [challenge validate status: pending], trying again...
[2019-10-25 11:04:10][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:04:10 GMT", "content-type": "application/json", "content-length": "256", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "link": "<https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767>;rel=\"up\"", "location": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:04:10][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:
{
  "type": "dns-01",
  "status": "valid",
  "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw",
  "token": "EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU",
  "validationRecord": [
    {
      "hostname": "docker.wsw.io"
    }
  ]
}
[2019-10-25 11:04:10][acme_client::libs::v2][DEBUG] [LOOP][response.status(): 200 OK][response_value: {"type":"dns-01","status":"valid","url":"https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256767/lzmdQw","token":"EcpOYWaZHHTVBCXuwhNXA9w2N6yXu-AJNNaJHZnY3FU","validationRecord":[{"hostname":"docker.wsw.io"}]}]
[2019-10-25 11:04:10][acme_client::libs::v2][WARN] [challenge validate status: pending]
[2019-10-25 11:04:12][acme_client::libs::v2][INFO] [循环挑战验证状态] -> [challenge validate status: valid], trying next challenge...
[2019-10-25 11:04:12][acme_client::libs::v2][WARN] [验证完成,跳出循环验证请求][acme_name: wsw.io]


[2019-10-25 11:04:12][acme_client::libs::v2][DEBUG] [###]循环处理挑战订单: auth_acme_order_data: AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: Some("7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A") } }
[2019-10-25 11:04:12][acme_client::libs::v2][INFO] [###]验证挑战: [order_auth_challenge.url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww"][order_auth_challenge.auth_dns_token: Some("Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A")]
[2019-10-25 11:04:12][acme_client::libs::v2][DEBUG] [####] order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }
[2019-10-25 11:04:12][acme_client::libs::v2][DEBUG] [####] order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", token: "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws", wildcard: None, validation_record: None, auth_key_token: Some("7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A") }
[2019-10-25 11:04:12][acme_client::libs::v2][INFO] [挑战验证] -> Triggering dns-01 validation
[2019-10-25 11:04:12][acme_client::libs::v2][DEBUG] validate info: [challenge_token: "Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A"]
[2019-10-25 11:04:12][acme_client::libs::v2][TRACE] [ACME接口请求参数->request()][request_acme_resource: https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww][kid: Some("https://acme-v02.api.letsencrypt.org/acme/acct/62364548")][payload_value: {"keyAuthorization":"Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A"}]
[2019-10-25 11:04:12][acme_client::libs::v2][TRACE] [获取临时授权凭证->get_nonce()][acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/new-nonce]
[2019-10-25 11:04:12][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/new-nonce", status: 204, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:04:12 GMT", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "replay-nonce": "0102JuTeVKOHs5CmyGaAnvU6hcWO2gUIOGUATWawjwZ1tM4", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:04:12][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:

[2019-10-25 11:04:12][acme_client::libs::v2][TRACE] [获取请求凭证->get_nonce()][nonce: Ok("0102JuTeVKOHs5CmyGaAnvU6hcWO2gUIOGUATWawjwZ1tM4")]
[2019-10-25 11:04:12][acme_client::libs::v2][TRACE] [接口请求地址->request()->jws()][request_acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww]
[2019-10-25 11:04:12][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][payload: {"keyAuthorization":"Z6A0W8OloINF5bZ7UpqG90AG-TKGmsYD3ExFRMjtz3A"}]
[2019-10-25 11:04:12][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][protected: {"nonce": String("0102JuTeVKOHs5CmyGaAnvU6hcWO2gUIOGUATWawjwZ1tM4"), "url": String("https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww"), "alg": String("RS256"), "kid": String("https://acme-v02.api.letsencrypt.org/acme/acct/62364548")}]
[2019-10-25 11:04:12][acme_client::libs::v2][TRACE] [接口签名结果->request()->jws()][signature: 3QCb5PeASoHSfuyeetKx-N7mNdybE006DCEm9qlBYNgUjkoICgB96HS0CcwhTPq2MLc4vGjrAsCmEBUY5KzqM9I0Epf104ocKSoPHVyZwrSR9hH6YE1Eb4KLViRmKaZmGHmeR8Cu8_RsjCbRYwd5hDjHN-mtQw9CjwhxXAHLTAy_dJU5pO8duZY90VOrm7da5PWeRfNemqOJanbphtOXhY6af2UX38hFVwIAi2Lw6HBFRpdkfTXoU16MUW5GfbXMLLeiE1OYMKHaRka6RcSmakwX4-s7kym1_a2SjjM9KFDvX4vs-wyt_jJ1x8hfO21MJ-lJpX9DqAzUCx0lP-814RDG2h-corraOx5vx46I51I4XtlEKz3mgQTV010cWwSXxQHE4eID7K4MpSm1bTqLHBKkLqTRUocYGq3TELkzDPTRltgNLcP0jtpAsfKT7wPbxmqOujeoKeNW4Afhn8jm5-QMwO3UJuGEUoywYTr_xioJpPced0qnDf8BnM1aLvQkrK7Kqp9ahIApJ88E2WEjt8gQsYfL-77K17h9WvJ0ZNjHLvZ60mOHe7Yet-1vQHfrt3jaJb-naM6SFsI6mvu86VawmjVLH9VnuxcI7w-tZEtQS26J0eLsjvydvDPP336oZ3JO3R_75Xqym2n2ED1tvH-cgVf7BVhRYc2WoxKsKQQ]
[2019-10-25 11:04:12][acme_client::libs::v2][TRACE] [发起请求->request()][acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww][api_payload_jws: {"payload": String("eyJrZXlBdXRob3JpemF0aW9uIjoiWjZBMFc4T2xvSU5GNWJaN1VwcUc5MEFHLVRLR21zWUQzRXhGUk1qdHozQSJ9"), "signature": String("3QCb5PeASoHSfuyeetKx-N7mNdybE006DCEm9qlBYNgUjkoICgB96HS0CcwhTPq2MLc4vGjrAsCmEBUY5KzqM9I0Epf104ocKSoPHVyZwrSR9hH6YE1Eb4KLViRmKaZmGHmeR8Cu8_RsjCbRYwd5hDjHN-mtQw9CjwhxXAHLTAy_dJU5pO8duZY90VOrm7da5PWeRfNemqOJanbphtOXhY6af2UX38hFVwIAi2Lw6HBFRpdkfTXoU16MUW5GfbXMLLeiE1OYMKHaRka6RcSmakwX4-s7kym1_a2SjjM9KFDvX4vs-wyt_jJ1x8hfO21MJ-lJpX9DqAzUCx0lP-814RDG2h-corraOx5vx46I51I4XtlEKz3mgQTV010cWwSXxQHE4eID7K4MpSm1bTqLHBKkLqTRUocYGq3TELkzDPTRltgNLcP0jtpAsfKT7wPbxmqOujeoKeNW4Afhn8jm5-QMwO3UJuGEUoywYTr_xioJpPced0qnDf8BnM1aLvQkrK7Kqp9ahIApJ88E2WEjt8gQsYfL-77K17h9WvJ0ZNjHLvZ60mOHe7Yet-1vQHfrt3jaJb-naM6SFsI6mvu86VawmjVLH9VnuxcI7w-tZEtQS26J0eLsjvydvDPP336oZ3JO3R_75Xqym2n2ED1tvH-cgVf7BVhRYc2WoxKsKQQ"), "protected": String("eyJub25jZSI6IjAxMDJKdVRlVktPSHM1Q215R2FBbnZVNmhjV08yZ1VJT0dVQVRXYXdqd1oxdE00IiwidXJsIjoiaHR0cHM6Ly9hY21lLXYwMi5hcGkubGV0c2VuY3J5cHQub3JnL2FjbWUvY2hhbGwtdjMvOTI4MjU2NzY4L05MWGd3dyIsImFsZyI6IlJTMjU2Iiwia2lkIjoiaHR0cHM6Ly9hY21lLXYwMi5hcGkubGV0c2VuY3J5cHQub3JnL2FjbWUvYWNjdC82MjM2NDU0OCJ9")}]
[2019-10-25 11:04:13][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:04:13 GMT", "content-type": "application/json", "content-length": "183", "connection": "keep-alive", "boulder-requester": "62364548", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "link": "<https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256768>;rel=\"up\"", "location": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", "replay-nonce": "0002r8sYZbLbcHLyLTvx3st4sb8EJV14PsYkROPmItnR5YE", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:04:13][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:
{
  "type": "dns-01",
  "status": "pending",
  "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww",
  "token": "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws"
}
[2019-10-25 11:04:13][acme_client::libs::v2][DEBUG] [MAIN][response.status(): 200 OK][response_value: {"type":"dns-01","status":"pending","url":"https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww","token":"7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws"}]
[2019-10-25 11:04:13][acme_client::libs::v2][INFO] [循环挑战验证状态] -> [challenge validate status: pending], trying again...
[2019-10-25 11:04:14][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:04:14 GMT", "content-type": "application/json", "content-length": "249", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "link": "<https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256768>;rel=\"up\"", "location": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:04:14][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:
{
  "type": "dns-01",
  "status": "valid",
  "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww",
  "token": "7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws",
  "validationRecord": [
    {
      "hostname": "wsw.io"
    }
  ]
}
[2019-10-25 11:04:14][acme_client::libs::v2][DEBUG] [LOOP][response.status(): 200 OK][response_value: {"type":"dns-01","status":"valid","url":"https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256768/NLXgww","token":"7lFC3XKzKykMnWsdMp27IWib4oPrM1HbYHt86lYexws","validationRecord":[{"hostname":"wsw.io"}]}]
[2019-10-25 11:04:14][acme_client::libs::v2][WARN] [challenge validate status: pending]
[2019-10-25 11:04:16][acme_client::libs::v2][INFO] [循环挑战验证状态] -> [challenge validate status: valid], trying next challenge...
[2019-10-25 11:04:16][acme_client::libs::v2][WARN] [验证完成,跳出循环验证请求][acme_name: wsw.io]


[2019-10-25 11:04:16][acme_client::libs::v2][DEBUG] [###]循环处理挑战订单: auth_acme_order_data: AcmeOrderAuthData { order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }, order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: Some("LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4") } }
[2019-10-25 11:04:16][acme_client::libs::v2][INFO] [###]验证挑战: [order_auth_challenge.url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg"][order_auth_challenge.auth_dns_token: Some("-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4")]
[2019-10-25 11:04:16][acme_client::libs::v2][DEBUG] [####] order_auth_identifier: AcmeOrderIdentifier { types: "dns", value: "wsw.io" }
[2019-10-25 11:04:16][acme_client::libs::v2][DEBUG] [####] order_auth_challenge: AcmeOrderAuthorizationChallenge { types: "dns-01", status: "pending", url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", token: "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8", wildcard: None, validation_record: None, auth_key_token: Some("LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8.wOaw5_YfUW_kqfcSohkSmByWsQ8BokfcqQ3QkUyV8qQ"), auth_dns_token: Some("-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4") }
[2019-10-25 11:04:16][acme_client::libs::v2][INFO] [挑战验证] -> Triggering dns-01 validation
[2019-10-25 11:04:16][acme_client::libs::v2][DEBUG] validate info: [challenge_token: "-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4"]
[2019-10-25 11:04:16][acme_client::libs::v2][TRACE] [ACME接口请求参数->request()][request_acme_resource: https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg][kid: Some("https://acme-v02.api.letsencrypt.org/acme/acct/62364548")][payload_value: {"keyAuthorization":"-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4"}]
[2019-10-25 11:04:16][acme_client::libs::v2][TRACE] [获取临时授权凭证->get_nonce()][acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/new-nonce]
[2019-10-25 11:04:17][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/new-nonce", status: 204, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:04:17 GMT", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "replay-nonce": "0101GYUKCdYz7TphUjaLXAQbq6saJBN5nzl16jmIoIgqm_I", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:04:17][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:

[2019-10-25 11:04:17][acme_client::libs::v2][TRACE] [获取请求凭证->get_nonce()][nonce: Ok("0101GYUKCdYz7TphUjaLXAQbq6saJBN5nzl16jmIoIgqm_I")]
[2019-10-25 11:04:17][acme_client::libs::v2][TRACE] [接口请求地址->request()->jws()][request_acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg]
[2019-10-25 11:04:17][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][payload: {"keyAuthorization":"-0ZOLmxwM_xl63D690aIRmF7jCBIEOQMmkGA74w3fZ4"}]
[2019-10-25 11:04:17][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][protected: {"url": String("https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg"), "kid": String("https://acme-v02.api.letsencrypt.org/acme/acct/62364548"), "alg": String("RS256"), "nonce": String("0101GYUKCdYz7TphUjaLXAQbq6saJBN5nzl16jmIoIgqm_I")}]
[2019-10-25 11:04:17][acme_client::libs::v2][TRACE] [接口签名结果->request()->jws()][signature: ZoktdKjyKgr0kf7Kv8lQToTyhqg3ujf17ml011X-OW6qn7MHagTa1vVcQn7oxtPwh8tml3_SEBbtqURUQu0l5pJTQllxMxqARUNpLiAO1AFWGfw_0H-VEUP5vmqv0ZoJ5qR098sCFgw9I1az6kvQr6DFxe0_Lj6uvofMvRmtIyA1b8lFMU449I1smRItADPqOYqISqaItsmEqzKgFBP80SkFZltVA9v3hJEXSbCl47ZYaa8tgA_6siB6h4PMWhv4GqVupiICpJZePiTMPNHYGncWm_uFepmNDdS_UMA3L4pbMH0bAp6pjPsASfEkCUu9ELgN-JXHwJRkDSZLvSTNTcrOso_9PK8BuV1u1dc7qa_b_AzY_CPgGcVz_H3yqSG3kbrM5e2qPZYIsAfPeH6BDMCSUrSizwAd9uXo0-KUDpBp9GN3aMG2JNR8TEZYePOR1JWUUeDMyig_xqY7dl5IGVS5l8hNyWjLnHBE1x-BZjHe1dUkRlk329jg1h-ER3r9k7upew0wU0cwzAXhC7EFgPCJnmZhT5uegn7Ht5bCJNXw30xyoOT-Ee4M1B_zwUmejaFn5dZ4lNZklRBJS_GaCbE8cXsQy3ZR8W6sZ8gAfB9VBS6cQFnpIytipDCYkkpCQNCwnsUQjtrqiCf-bYlWVaLVA1sgQsw1tiWqUevzYvE]
[2019-10-25 11:04:17][acme_client::libs::v2][TRACE] [发起请求->request()][acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg][api_payload_jws: {"payload": String("eyJrZXlBdXRob3JpemF0aW9uIjoiLTBaT0xteHdNX3hsNjNENjkwYUlSbUY3akNCSUVPUU1ta0dBNzR3M2ZaNCJ9"), "protected": String("eyJ1cmwiOiJodHRwczovL2FjbWUtdjAyLmFwaS5sZXRzZW5jcnlwdC5vcmcvYWNtZS9jaGFsbC12My85MjgyNTY3NjkvS1dxZ3lnIiwia2lkIjoiaHR0cHM6Ly9hY21lLXYwMi5hcGkubGV0c2VuY3J5cHQub3JnL2FjbWUvYWNjdC82MjM2NDU0OCIsImFsZyI6IlJTMjU2Iiwibm9uY2UiOiIwMTAxR1lVS0NkWXo3VHBoVWphTFhBUWJxNnNhSkJONW56bDE2am1Jb0lncW1fSSJ9"), "signature": String("ZoktdKjyKgr0kf7Kv8lQToTyhqg3ujf17ml011X-OW6qn7MHagTa1vVcQn7oxtPwh8tml3_SEBbtqURUQu0l5pJTQllxMxqARUNpLiAO1AFWGfw_0H-VEUP5vmqv0ZoJ5qR098sCFgw9I1az6kvQr6DFxe0_Lj6uvofMvRmtIyA1b8lFMU449I1smRItADPqOYqISqaItsmEqzKgFBP80SkFZltVA9v3hJEXSbCl47ZYaa8tgA_6siB6h4PMWhv4GqVupiICpJZePiTMPNHYGncWm_uFepmNDdS_UMA3L4pbMH0bAp6pjPsASfEkCUu9ELgN-JXHwJRkDSZLvSTNTcrOso_9PK8BuV1u1dc7qa_b_AzY_CPgGcVz_H3yqSG3kbrM5e2qPZYIsAfPeH6BDMCSUrSizwAd9uXo0-KUDpBp9GN3aMG2JNR8TEZYePOR1JWUUeDMyig_xqY7dl5IGVS5l8hNyWjLnHBE1x-BZjHe1dUkRlk329jg1h-ER3r9k7upew0wU0cwzAXhC7EFgPCJnmZhT5uegn7Ht5bCJNXw30xyoOT-Ee4M1B_zwUmejaFn5dZ4lNZklRBJS_GaCbE8cXsQy3ZR8W6sZ8gAfB9VBS6cQFnpIytipDCYkkpCQNCwnsUQjtrqiCf-bYlWVaLVA1sgQsw1tiWqUevzYvE")}]
[2019-10-25 11:04:18][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:04:17 GMT", "content-type": "application/json", "content-length": "183", "connection": "keep-alive", "boulder-requester": "62364548", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "link": "<https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256769>;rel=\"up\"", "location": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", "replay-nonce": "0002mcrCcayGiu1Mvm3eN3r6_kvVUQRyToYLB-WqfL9eo-E", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:04:18][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:
{
  "type": "dns-01",
  "status": "pending",
  "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg",
  "token": "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8"
}
[2019-10-25 11:04:18][acme_client::libs::v2][DEBUG] [MAIN][response.status(): 200 OK][response_value: {"type":"dns-01","status":"pending","url":"https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg","token":"LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8"}]
[2019-10-25 11:04:18][acme_client::libs::v2][INFO] [循环挑战验证状态] -> [challenge validate status: pending], trying again...
[2019-10-25 11:04:18][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:04:18 GMT", "content-type": "application/json", "content-length": "249", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "link": "<https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256769>;rel=\"up\"", "location": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:04:18][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:
{
  "type": "dns-01",
  "status": "valid",
  "url": "https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg",
  "token": "LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8",
  "validationRecord": [
    {
      "hostname": "wsw.io"
    }
  ]
}
[2019-10-25 11:04:18][acme_client::libs::v2][DEBUG] [LOOP][response.status(): 200 OK][response_value: {"type":"dns-01","status":"valid","url":"https://acme-v02.api.letsencrypt.org/acme/chall-v3/928256769/KWqgyg","token":"LK6Dgr6Xk9lYLBHRC2DImJRyKVCxa3v9x3owinbEbc8","validationRecord":[{"hostname":"wsw.io"}]}]
[2019-10-25 11:04:18][acme_client::libs::v2][WARN] [challenge validate status: pending]
[2019-10-25 11:04:20][acme_client::libs::v2][INFO] [循环挑战验证状态] -> [challenge validate status: valid], trying next challenge...
[2019-10-25 11:04:20][acme_client::libs::v2][WARN] [验证完成,跳出循环验证请求][acme_name: wsw.io]


[2019-10-25 11:04:20][run_s::common::acme::task][WARN] [验证完成,跳出循环验证请求][acme_name: wsw.io][acme_account_order_verify: 挑战列表验证成功!]
[2019-10-25 11:04:20][run_s::common::acme::task][INFO] [######][:->12][ACME:已验证域名服务商批量创建(DNS-TXT)验证记录,清除域名解析记录][acme_name: "wsw.io"]--------------------------------------------------------------------------------------
[2019-10-25 11:04:20][run_s::common::acme::tool][INFO] [删除(DNS-TXT)域名解析记录][domain_record[acme_dns_txt_record_id: 475336563]
[2019-10-25 11:04:20][run_s::common::tools][INFO] #[执行命令: run_command(...)][cmd_rs_path: "/data/home/coam/Server/Run/run_s"][cmd_rs_envs: {}]...
[2019-10-25 11:04:20][run_s::common::tools][INFO] #> curl -X POST https://dnsapi.cn/Record.Remove -d login_token=72921,303e442575de36c5b854c9eb95da2106&format=json&domain=wsw.io&record_id=475336563
[2019-10-25 11:04:21][run_s::common::tools][DEBUG] command run status: exit code: 0
[2019-10-25 11:04:21][run_s::common::tools][DEBUG] command run stdout: {"status":{"code":"1","message":"Action completed successful","created_at":"2019-10-25 11:04:21"}}
[2019-10-25 11:04:21][run_s::common::tools][DEBUG] command run stderr:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   194  100    98  100    96    202    197 --:--:-- --:--:-- --:--:--   400

[2019-10-25 11:04:21][run_s::common::acme::tool][INFO] [删除(DNS-TXT)域名解析记录][domain_record[acme_dns_txt_record_id: 475336569]
[2019-10-25 11:04:21][run_s::common::tools][INFO] #[执行命令: run_command(...)][cmd_rs_path: "/data/home/coam/Server/Run/run_s"][cmd_rs_envs: {}]...
[2019-10-25 11:04:21][run_s::common::tools][INFO] #> curl -X POST https://dnsapi.cn/Record.Remove -d login_token=72921,303e442575de36c5b854c9eb95da2106&format=json&domain=wsw.io&record_id=475336569
[2019-10-25 11:04:21][run_s::common::tools][DEBUG] command run status: exit code: 0
[2019-10-25 11:04:21][run_s::common::tools][DEBUG] command run stdout: {"status":{"code":"1","message":"Action completed successful","created_at":"2019-10-25 11:04:21"}}
[2019-10-25 11:04:21][run_s::common::tools][DEBUG] command run stderr:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   194  100    98  100    96    273    268 --:--:-- --:--:-- --:--:--   541

[2019-10-25 11:04:21][run_s::common::acme::tool][INFO] [删除(DNS-TXT)域名解析记录][domain_record[acme_dns_txt_record_id: 475336572]
[2019-10-25 11:04:21][run_s::common::tools][INFO] #[执行命令: run_command(...)][cmd_rs_path: "/data/home/coam/Server/Run/run_s"][cmd_rs_envs: {}]...
[2019-10-25 11:04:21][run_s::common::tools][INFO] #> curl -X POST https://dnsapi.cn/Record.Remove -d login_token=72921,303e442575de36c5b854c9eb95da2106&format=json&domain=wsw.io&record_id=475336572
[2019-10-25 11:04:22][run_s::common::tools][DEBUG] command run status: exit code: 0
[2019-10-25 11:04:22][run_s::common::tools][DEBUG] command run stdout: {"status":{"code":"1","message":"Action completed successful","created_at":"2019-10-25 11:04:21"}}
[2019-10-25 11:04:22][run_s::common::tools][DEBUG] command run stderr:   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   194  100    98  100    96    311    304 --:--:-- --:--:-- --:--:--   615

[2019-10-25 11:04:22][run_s::common::acme::task][INFO] [######][:->13][ACME:创建泛域名CSR证书][acme_name: "wsw.io"]--------------------------------------------------------------------------------------
[2019-10-25 11:04:22][run_s::common::acme::task][INFO] [######][:->14][ACME:发送泛域名CSR证书验证确认回执][acme_name: "wsw.io"]--------------------------------------------------------------------------------------
[2019-10-25 11:04:22][acme_client::libs::v2][TRACE] [ACME接口请求参数->request()][request_acme_resource: https://acme-v02.api.letsencrypt.org/acme/finalize/62364548/1358562732][kid: Some("https://acme-v02.api.letsencrypt.org/acme/acct/62364548")][payload_value: {"csr":"MIIClTCCAX0CAQAwETEPMA0GA1UEAwwGd3N3LmlvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1qy-s2Gyxkn-mlrjpJroQ3-tEZ0FSSK39hYHp20Q2t2mSPMrGrglOryiW93tHp6KFPoWCgh8TwKNfGNQ_83aGHvaVPgCgpFNs089EfJF7G-FHrL7VOXf6mj7yrxAhYkQiZwS23SGyRSE3Tp7t2S76jksg-i8QDfhthEZrxWcPBctKh-M509b1uiQKQ85it13pebbIYwZLRJBu7EvkfAfMRGBmFzd-CdtPKcDK1Elh4qGHhIdXKdid-qsGoM5BemacajAqWbGZqwKuxfrTspw8mmbQnYo97JHAhpI4tvjIG1QUzJ2KNRg1e4MmCiAKIwE9VjYayg9j0Zr8l_LeH1-_wIDAQABoD8wPQYJKoZIhvcNAQkOMTAwLjAsBgNVHREEJTAjggZ3c3cuaW-CCCoud3N3Lmlvgg8qLmRvY2tlci53c3cuaW8wDQYJKoZIhvcNAQELBQADggEBALdIGuPw96PlcPHIKl_b-38tmHpKgxqUok0zkt_hzIyKcEDUvk92JcbHzDdnI6UmPIdijKYr6ZscQPtErFGbntzLKZ-v2A_B4gFKVLQU8H2qb3FUQzBVDuOLjnMwzI3Mj6xWGTAvRh3I07Pa6SoC_Ckw_yGoZTcE-O1op7ci1JGngpfdVvulLKfZvtafu9YqD8bJzTD2O6_XKMaJ8yglPkLvv7sz_bnxe-vDlsOoTErp-N1nG-olRUCosCPATq1lzHAenJlGhdR6L0BiFcW3SdHntcj3KXFznCXCEiCFBlzMBieKukLmBLko7JnssQIaGw9yaqRCkev3LfELUQ4LNyI"}]
[2019-10-25 11:04:22][acme_client::libs::v2][TRACE] [获取临时授权凭证->get_nonce()][acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/new-nonce]
[2019-10-25 11:04:22][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/new-nonce", status: 204, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:04:22 GMT", "connection": "keep-alive", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "replay-nonce": "0102tjrbII5vW5Yj0mIcPfEkjVq_GtsJgX8yx-YHcBogyb4", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:04:22][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:

[2019-10-25 11:04:22][acme_client::libs::v2][TRACE] [获取请求凭证->get_nonce()][nonce: Ok("0102tjrbII5vW5Yj0mIcPfEkjVq_GtsJgX8yx-YHcBogyb4")]
[2019-10-25 11:04:22][acme_client::libs::v2][TRACE] [接口请求地址->request()->jws()][request_acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/finalize/62364548/1358562732]
[2019-10-25 11:04:22][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][payload: {"csr":"MIIClTCCAX0CAQAwETEPMA0GA1UEAwwGd3N3LmlvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1qy-s2Gyxkn-mlrjpJroQ3-tEZ0FSSK39hYHp20Q2t2mSPMrGrglOryiW93tHp6KFPoWCgh8TwKNfGNQ_83aGHvaVPgCgpFNs089EfJF7G-FHrL7VOXf6mj7yrxAhYkQiZwS23SGyRSE3Tp7t2S76jksg-i8QDfhthEZrxWcPBctKh-M509b1uiQKQ85it13pebbIYwZLRJBu7EvkfAfMRGBmFzd-CdtPKcDK1Elh4qGHhIdXKdid-qsGoM5BemacajAqWbGZqwKuxfrTspw8mmbQnYo97JHAhpI4tvjIG1QUzJ2KNRg1e4MmCiAKIwE9VjYayg9j0Zr8l_LeH1-_wIDAQABoD8wPQYJKoZIhvcNAQkOMTAwLjAsBgNVHREEJTAjggZ3c3cuaW-CCCoud3N3Lmlvgg8qLmRvY2tlci53c3cuaW8wDQYJKoZIhvcNAQELBQADggEBALdIGuPw96PlcPHIKl_b-38tmHpKgxqUok0zkt_hzIyKcEDUvk92JcbHzDdnI6UmPIdijKYr6ZscQPtErFGbntzLKZ-v2A_B4gFKVLQU8H2qb3FUQzBVDuOLjnMwzI3Mj6xWGTAvRh3I07Pa6SoC_Ckw_yGoZTcE-O1op7ci1JGngpfdVvulLKfZvtafu9YqD8bJzTD2O6_XKMaJ8yglPkLvv7sz_bnxe-vDlsOoTErp-N1nG-olRUCosCPATq1lzHAenJlGhdR6L0BiFcW3SdHntcj3KXFznCXCEiCFBlzMBieKukLmBLko7JnssQIaGw9yaqRCkev3LfELUQ4LNyI"}]
[2019-10-25 11:04:22][acme_client::libs::v2][TRACE] [接口签名参数->request()->jws()][protected: {"url": String("https://acme-v02.api.letsencrypt.org/acme/finalize/62364548/1358562732"), "alg": String("RS256"), "nonce": String("0102tjrbII5vW5Yj0mIcPfEkjVq_GtsJgX8yx-YHcBogyb4"), "kid": String("https://acme-v02.api.letsencrypt.org/acme/acct/62364548")}]
[2019-10-25 11:04:22][acme_client::libs::v2][TRACE] [接口签名结果->request()->jws()][signature: NRlIx37BdqBKRg-j9K9XiXr2bsb6w-qGOIevnXGXWnucB1rl4gaPDaz1IoGADYUX4wSzeJJhzeB29Z36K91U9fKFDFhA0CAKhFMUpmN2qyY151NAsyYKexdRU6Qmi3EcczCcN9R0ImT5ugpnhXD_3_PbNAYIh196N1FE7OouwvMcPV8Gx16nDeseldFJ39AbfIrVzR76HzbgTop7kQbvZ5KLuzAy56t9mm6WB_63zSTGwKERk7uV2UDVv8P-LckxZiNKjWVs9Y1N6I2EqE7reqmnIoL_576_nOPu0HrkvRSIeCku3AU8YAYbGauLmo8QmLWSRGKUClRq9XbkG0TvhMSodc0tixzUTXh6PSH7Y1d-_pDlynm0G9gwULjqoe5_G5dVwwTRRYgVRYotLdFXdVahyeW2RwwXogpzmVzWUu55UkWct9cwg82lliVMgvkKeBXDIZTvDO9T_s4JMEEw_G3lZf-TAr4Eyd_Rm7gYuKekqdegDDyWba4Kmn1r9-5q0JCtECT-Vimw0qhumUmZi97hytj30EABD9WeCHLByXQ4knVJbkADp26_409HqXWh2emrxgNZ2RB9WE6tNRXy59HA_cHqilHL6aAvWs32mVZCpbdlSJQMq1oDtnyGgOnTVx4Bu3UK_7Z5XcOZ9Whnjme4K9oRu0O0KOtInE54HSk]
[2019-10-25 11:04:22][acme_client::libs::v2][TRACE] [发起请求->request()][acme_resource_api: https://acme-v02.api.letsencrypt.org/acme/finalize/62364548/1358562732][api_payload_jws: {"signature": String("NRlIx37BdqBKRg-j9K9XiXr2bsb6w-qGOIevnXGXWnucB1rl4gaPDaz1IoGADYUX4wSzeJJhzeB29Z36K91U9fKFDFhA0CAKhFMUpmN2qyY151NAsyYKexdRU6Qmi3EcczCcN9R0ImT5ugpnhXD_3_PbNAYIh196N1FE7OouwvMcPV8Gx16nDeseldFJ39AbfIrVzR76HzbgTop7kQbvZ5KLuzAy56t9mm6WB_63zSTGwKERk7uV2UDVv8P-LckxZiNKjWVs9Y1N6I2EqE7reqmnIoL_576_nOPu0HrkvRSIeCku3AU8YAYbGauLmo8QmLWSRGKUClRq9XbkG0TvhMSodc0tixzUTXh6PSH7Y1d-_pDlynm0G9gwULjqoe5_G5dVwwTRRYgVRYotLdFXdVahyeW2RwwXogpzmVzWUu55UkWct9cwg82lliVMgvkKeBXDIZTvDO9T_s4JMEEw_G3lZf-TAr4Eyd_Rm7gYuKekqdegDDyWba4Kmn1r9-5q0JCtECT-Vimw0qhumUmZi97hytj30EABD9WeCHLByXQ4knVJbkADp26_409HqXWh2emrxgNZ2RB9WE6tNRXy59HA_cHqilHL6aAvWs32mVZCpbdlSJQMq1oDtnyGgOnTVx4Bu3UK_7Z5XcOZ9Whnjme4K9oRu0O0KOtInE54HSk"), "payload": String("eyJjc3IiOiJNSUlDbFRDQ0FYMENBUUF3RVRFUE1BMEdBMVVFQXd3R2QzTjNMbWx2TUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUExcXktczJHeXhrbi1tbHJqcEpyb1EzLXRFWjBGU1NLMzloWUhwMjBRMnQybVNQTXJHcmdsT3J5aVc5M3RIcDZLRlBvV0NnaDhUd0tOZkdOUV84M2FHSHZhVlBnQ2dwRk5zMDg5RWZKRjdHLUZIckw3Vk9YZjZtajd5cnhBaFlrUWlad1MyM1NHeVJTRTNUcDd0MlM3Nmprc2ctaThRRGZodGhFWnJ4V2NQQmN0S2gtTTUwOWIxdWlRS1E4NWl0MTNwZWJiSVl3WkxSSkJ1N0V2a2ZBZk1SR0JtRnpkLUNkdFBLY0RLMUVsaDRxR0hoSWRYS2RpZC1xc0dvTTVCZW1hY2FqQXFXYkdacXdLdXhmclRzcHc4bW1iUW5Zbzk3SkhBaHBJNHR2aklHMVFVekoyS05SZzFlNE1tQ2lBS0l3RTlWallheWc5ajBacjhsX0xlSDEtX3dJREFRQUJvRDh3UFFZSktvWklodmNOQVFrT01UQXdMakFzQmdOVkhSRUVKVEFqZ2daM2MzY3VhVy1DQ0NvdWQzTjNMbWx2Z2c4cUxtUnZZMnRsY2k1M2MzY3VhVzh3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUxkSUd1UHc5NlBsY1BISUtsX2ItMzh0bUhwS2d4cVVvazB6a3RfaHpJeUtjRURVdms5MkpjYkh6RGRuSTZVbVBJZGlqS1lyNlpzY1FQdEVyRkdibnR6TEtaLXYyQV9CNGdGS1ZMUVU4SDJxYjNGVVF6QlZEdU9Mam5Nd3pJM01qNnhXR1RBdlJoM0kwN1BhNlNvQ19Da3dfeUdvWlRjRS1PMW9wN2NpMUpHbmdwZmRWdnVsTEtmWnZ0YWZ1OVlxRDhiSnpURDJPNl9YS01hSjh5Z2xQa0x2djdzel9ibnhlLXZEbHNPb1RFcnAtTjFuRy1vbFJVQ29zQ1BBVHExbHpIQWVuSmxHaGRSNkwwQmlGY1czU2RIbnRjajNLWEZ6bkNYQ0VpQ0ZCbHpNQmllS3VrTG1CTGtvN0puc3NRSWFHdzl5YXFSQ2tldjNMZkVMVVE0TE55SSJ9"), "protected": String("eyJ1cmwiOiJodHRwczovL2FjbWUtdjAyLmFwaS5sZXRzZW5jcnlwdC5vcmcvYWNtZS9maW5hbGl6ZS82MjM2NDU0OC8xMzU4NTYyNzMyIiwiYWxnIjoiUlMyNTYiLCJub25jZSI6IjAxMDJ0anJiSUk1dlc1WWowbUljUGZFa2pWcV9HdHNKZ1g4eXgtWUhjQm9neWI0Iiwia2lkIjoiaHR0cHM6Ly9hY21lLXYwMi5hcGkubGV0c2VuY3J5cHQub3JnL2FjbWUvYWNjdC82MjM2NDU0OCJ9")}]
[2019-10-25 11:04:24][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-INFO]:
Response { url: "https://acme-v02.api.letsencrypt.org/acme/finalize/62364548/1358562732", status: 200, headers: {"server": "nginx", "date": "Fri, 25 Oct 2019 03:04:23 GMT", "content-type": "application/json", "content-length": "690", "connection": "keep-alive", "boulder-requester": "62364548", "cache-control": "public, max-age=0, no-cache", "link": "<https://acme-v02.api.letsencrypt.org/directory>;rel=\"index\"", "location": "https://acme-v02.api.letsencrypt.org/acme/order/62364548/1358562732", "replay-nonce": "0002F2RDkVTV1uN9UyBkfQ4X9c9z8hQheEFvnHSIMmGn1gs", "x-frame-options": "DENY", "strict-transport-security": "max-age=604800"} }
[2019-10-25 11:04:24][acme_client::libs::v2][TRACE] [ACME-API-RESPONSE-CONTENT]:
{
  "status": "valid",
  "expires": "2019-11-01T03:03:47Z",
  "identifiers": [
    {
      "type": "dns",
      "value": "*.docker.wsw.io"
    },
    {
      "type": "dns",
      "value": "*.wsw.io"
    },
    {
      "type": "dns",
      "value": "wsw.io"
    }
  ],
  "authorizations": [
    "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256767",
    "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256768",
    "https://acme-v02.api.letsencrypt.org/acme/authz-v3/928256769"
  ],
  "finalize": "https://acme-v02.api.letsencrypt.org/acme/finalize/62364548/1358562732",
  "certificate": "https://acme-v02.api.letsencrypt.org/acme/cert/031a4d8bb154e8b731eb689b26ef22b8a675"
}
[2019-10-25 11:04:24][acme_client::libs::v2][INFO] [#][ACME订单核发的证书签发地址][acme_order_response.certificate: Some("https://acme-v02.api.letsencrypt.org/acme/cert/031a4d8bb154e8b731eb689b26ef22b8a675")]
[2019-10-25 11:04:24][run_s::common::acme::task][INFO] [######][:->15][ACME:获取泛域名签名证书][acme_name: "wsw.io"]--------------------------------------------------------------------------------------
[2019-10-25 11:04:24][acme_client::libs::v2][INFO] [验证订单签发证书流程] -> Signing certificate
[2019-10-25 11:04:24][acme_client::libs::v2][DEBUG] [获取已签发订单域名证书][certificate_url: "https://acme-v02.api.letsencrypt.org/acme/cert/031a4d8bb154e8b731eb689b26ef22b8a675"]
[2019-10-25 11:04:24][acme_client::libs::v2][INFO] [###]签发域名证书:
-----BEGIN CERTIFICATE-----
MIIFYDCCBEigAwIBAgISAxpNi7FU6Lcx62ibJu8iuKZ1MA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xOTEwMjUwMjA0MjNaFw0y
MDAxMjMwMjA0MjNaMBExDzANBgNVBAMTBndzdy5pbzCCASIwDQYJKoZIhvcNAQEB
BQADggEPADCCAQoCggEBANasvrNhssZJ/ppa46Sa6EN/rRGdBUkit/YWB6dtENrd
pkjzKxq4JTq8olvd7R6eihT6FgoIfE8CjXxjUP/N2hh72lT4AoKRTbNPPRHyRexv
hR6y+1Tl3+po+8q8QIWJEImcEtt0hskUhN06e7dku+o5LIPovEA34bYRGa8VnDwX
LSofjOdPW9bokCkPOYrdd6Xm2yGMGS0SQbuxL5HwHzERgZhc3fgnbTynAytRJYeK
hh4SHVynYnfqrBqDOQXpmnGowKlmxmasCrsX607KcPJpm0J2KPeyRwIaSOLb4yBt
UFMydijUYNXuDJgogCiMBPVY2GsoPY9Ga/Jfy3h9fv8CAwEAAaOCAncwggJzMA4G
A1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDAYD
VR0TAQH/BAIwADAdBgNVHQ4EFgQUKVfx4HzziSt6P/WCk4nuJHSPdPkwHwYDVR0j
BBgwFoAUqEpqYwR93brm0Tm3pkVl7/Oo7KEwbwYIKwYBBQUHAQEEYzBhMC4GCCsG
AQUFBzABhiJodHRwOi8vb2NzcC5pbnQteDMubGV0c2VuY3J5cHQub3JnMC8GCCsG
AQUFBzAChiNodHRwOi8vY2VydC5pbnQteDMubGV0c2VuY3J5cHQub3JnLzAsBgNV
HREEJTAjgg8qLmRvY2tlci53c3cuaW+CCCoud3N3LmlvggZ3c3cuaW8wTAYDVR0g
BEUwQzAIBgZngQwBAgEwNwYLKwYBBAGC3xMBAQEwKDAmBggrBgEFBQcCARYaaHR0
cDovL2Nwcy5sZXRzZW5jcnlwdC5vcmcwggEFBgorBgEEAdZ5AgQCBIH2BIHzAPEA
dwCyHgXMi6LNiiBOh2b5K7mKJSBna9r6cOeySVMt74uQXgAAAW4A30oqAAAEAwBI
MEYCIQCIWgzZtE/EuwBGQjFBcZI30lg0wKEYWm/TRcKeLF/CQgIhAPt5AXThfoSS
pjFz/ME8ESpvy0/c9gQEHKwuyHcQNi4eAHYAb1N2rDHwMRnYmQCkURX/dxUcEdkC
wQApBo2yCJo32RMAAAFuAN9KUwAABAMARzBFAiBofVWPD+MruP04x5YhsexJ3vyT
pHYyKrPlVhhs0If8FwIhANMn04N/VsM2+mMM0MH1Ght6wA0CAxy1N2TzdeEWybnj
MA0GCSqGSIb3DQEBCwUAA4IBAQAPvcfKg3ufCmKMEUaNfV22KuZRcWfdk0zrxNaV
SpEdCT5SlRH53gvnkNgOdgKCJEdYcK/OuNCkfkYouHjCj1O8GG1Ip+aiG5lFBfPe
eWfurZP6MuFRehyS4UphxDPx5hmYi0zqaUcY3Oqh0sfMfhwpmGsSWm/cVvAdvg82
kHuBdWSlwpfhdmiNi8QXQx3Kzmfx/Gdfl/CKK4FqHzEUNwnngGPzP1yvTWs0d03N
QqRgUJ40g+HLCmvyl0KFhBk22qaVNNMjDzZojwmmMRERT613zpGVvq3Bg4ynhhvv
b7BhRp4Itpz4zJKpMkSfLsr0FF0m2TCT+hsE8D8EDAL/0mDV
-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF
q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8
SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0
Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA
a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj
/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T
AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG
CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv
bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k
c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw
VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC
ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz
MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu
Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF
AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo
uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/
wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu
X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG
PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6
KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
-----END CERTIFICATE-----

[2019-10-25 11:04:24][acme_client::libs::v2][INFO] [域名证书签发成功]........................................................................................
[2019-10-25 11:04:25][run_s::common::acme::task][INFO] [已签发域名证书][ACME][authorization][acme_name: wsw.io][acme_wildcards: ["wsw.io", "*.wsw.io", "*.docker.wsw.io"]]!
[2019-10-25 11:04:25][run_s::common::acme::task][INFO] [完成证书文件下单更新结果:完成!]
[acme_order: Ok(())]
[2019-10-25 11:04:25][run_s::common::acme::task][INFO] [######][:->16][ACME:泛域名证书签发完成!][acme_name: "wsw.io"]--------------------------------------------------------------------------------------
[2019-10-25 11:04:25][run_s][INFO] acme run [=======================================================================================================================================]

Comments

Cor-Ethan, the beverage → www.iirii.com