{"id":324667,"date":"2021-06-09T21:00:19","date_gmt":"2021-06-09T21:00:19","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=324667"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=324667","title":{"rendered":"Acme.sh + Ansible + Alias mode: \u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435 TLS \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432"},"content":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>Acme.sh &#8212; \u0441\u043a\u0440\u0438\u043f\u0442, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0431\u0435\u0437 \u043e\u0441\u043e\u0431\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c let&#8217;s encrypt \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0437\u0431\u0435\u0440\u0443 \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0447\u0435\u0440\u0435\u0437 DNS api, \u043d\u043e \u044d\u0442\u0438\u043c \u0443\u0436\u0435 \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435 \u0443\u0434\u0438\u0432\u0438\u0448\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u043c\u0435\u0442\u043e\u0434 DNS alias, \u043e\u043d \u0441\u0432\u0435\u0436\u0438\u0439 (\u0432\u0441\u0435\u0433\u043e <a href=\"https:\/\/community.letsencrypt.org\/t\/acme-sh-support-domain-alias-mode-now\/52700\" rel=\"noopener noreferrer nofollow\">3 \u0433\u043e\u0434\u0430<\/a>) \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439. \u0410 \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430 Ansible \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432.<\/p>\n<p>\u0412\u0438\u0434\u0435\u043e\u0432\u0435\u0440\u0441\u0438\u044f<\/p>\n<p><iframe id=\"60c0e9ce8eee42c616d9c9ba\" src=\"https:\/\/embedd.srv.habr.com\/iframe\/60c0e9ce8eee42c616d9c9ba\" class=\"embed_video embed__content\" allowfullscreen=\"true\"><\/iframe><\/p>\n<p>\u0420\u0435\u0436\u0438\u043c\u044b acme.sh \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435<\/p>\n<ul>\n<li>\n<p>Webroot<\/p>\n<\/li>\n<li>\n<p>Nginx\\Apache<\/p>\n<\/li>\n<li>\n<p>Stanalone<\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0435\u0436\u0438\u043c\u044b \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0438 \u0443\u0434\u043e\u0431\u043d\u044b\u0435, \u043a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u043e\u0434\u0438\u043d &#8212; \u0434\u0432\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c acme.sh. \u041a\u043e\u0433\u0434\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0443\u0436\u043d\u043e TLS, \u043f\u0435\u0440\u0435\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u0430 \u0434\u0435\u0441\u044f\u0442\u043e\u043a, \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c wilcard \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\\\u043e\u0432. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c wildcard \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f DNS \u0437\u043e\u043d\u043e\u0439. DNS \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e:<\/p>\n<ul>\n<li>\n<p>DNS manual<\/p>\n<\/li>\n<li>\n<p>DNS API<\/p>\n<\/li>\n<li>\n<p>DNS alias<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0431\u0443\u0434\u0443 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u043c\u043e\u0451\u043c \u043b\u0438\u0447\u043d\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u0435 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e acme.sh.<\/p>\n<h2>DNS manual mode<\/h2>\n<p>Manual \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0443\u043f\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c acme.sh \u0441 \u0444\u043b\u0430\u0433\u043e\u043c &#8212;dns<\/p>\n<p><code>acme.sh --issue --dns -d *.itdog.info --yes-I-know-dns-manual-mode-enough-go-ahead-please<\/code><\/p>\n<pre><code>koala@x220:~$ acme.sh --issue --dns -d *.itdog.info --yes-I-know-dns-manual-mode-enough-go-ahead-please [\u0421\u0440 \u043c\u0430\u044f  5 14:52:29 MSK 2021] Using CA: https:\/\/acme-v02.api.letsencrypt.org\/directory [\u0421\u0440 \u043c\u0430\u044f  5 14:52:29 MSK 2021] Creating domain key [\u0421\u0440 \u043c\u0430\u044f  5 14:52:29 MSK 2021] The domain key is here: \/home\/koala\/.acme.sh\/*.itdog.info\/*.itdog.info.key [\u0421\u0440 \u043c\u0430\u044f  5 14:52:29 MSK 2021] Single domain='*.itdog.info' [\u0421\u0440 \u043c\u0430\u044f  5 14:52:29 MSK 2021] Getting domain auth token for each domain [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] Getting webroot for domain='*.itdog.info' [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] Add the following TXT record: [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] Domain: '_acme-challenge.itdog.info' [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] TXT value: 'QXRgFOfVOZGOBC1qxAToMNOf7Xsv9gjM8hYG6akRoJ8' [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] Please be aware that you prepend _acme-challenge. before your domain [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] so the resulting subdomain will be: _acme-challenge.itdog.info [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] Please add the TXT records to the domains, and re-run with --renew. [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] Please add '--debug' or '--log' to check more details. [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] See: https:\/\/github.com\/acmesh-official\/acme.sh\/wiki\/How-to-debug-acme.sh<\/code><\/pre>\n<p><code>--issue<\/code> &#8212; \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435<\/p>\n<p><code>--dns<\/code> \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 &#8212; \u0440\u0435\u0436\u0438\u043c \u0440\u0443\u0447\u043d\u043e\u0433\u043e DNS<\/p>\n<p><code>--yes-I-know-dns-manual-mode-enough-go-ahead-please<\/code> &#8212; \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 <a href=\"https:\/\/github.com\/acmesh-official\/acme.sh\/issues\/1029\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/a> \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043a\u043e\u0433\u0434\u0430 \u043b\u044e\u0434\u0438 \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0440\u0443\u0447\u043d\u043e\u0439 \u0440\u0435\u0436\u0438\u043c<\/p>\n<p>\u041e\u043d \u0432\u044b\u0434\u0430\u0451\u0442 TXT \u0437\u0430\u043f\u0438\u0441\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0430\u0448 dns \u0445\u043e\u0441\u0442\u0438\u043d\u0433, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e <code>_acme-challenge.itdog.info TXT QXRgFOfVOZGOBC1qxAToMNOf7Xsv9gjM8hYG6akRoJ8<\/code><\/p>\n<p>\u0420\u0443\u0447\u043d\u043e\u0439 \u043e\u043d \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e, \u043c\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u044d\u0442\u0443 \u0437\u0430\u043f\u0438\u0441\u044c.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/664\/d71\/2eb\/664d712eb961465d9510eab1c66bd42b.gif\" alt=\"\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f manual mode\" title=\"\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f manual mode\" width=\"690\" height=\"388\"><figcaption>\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f manual mode<\/figcaption><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u0447\u0442\u043e \u0431\u044b \u0437\u0430\u043f\u0438\u0441\u044c \u0437\u0430\u0440\u0435\u0437\u043e\u043b\u0432\u0438\u043b\u0430\u0441\u044c \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u0442\u043e\u043b\u044c\u043a\u043e \u0441 &#8212;renew<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u0430 \u043b\u0438 \u043e\u043d\u0430 \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442\u0441\u044f \u043d\u0430 \u0433\u0443\u0433\u043b\u043e\u0432\u043e\u043c dns<\/p>\n<pre><code>koala@x220:~$ dig -t txt _acme-challenge.itdog.info @8.8.8.8  ; &lt;&lt;&gt;&gt; DiG 9.11.3-1ubuntu1.15-Ubuntu &lt;&lt;&gt;&gt; -t txt _acme-challenge.itdog.info @8.8.8.8  ;; ANSWER SECTION: _acme-challenge.itdog.info. 1798 IN    TXT    \"QXRgFOfVOZGOBC1qxAToMNOf7Xsv9gjM8hYG6akRoJ8\"<\/code><\/pre>\n<p>\u041e\u043d\u0430 \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442\u0441\u044f, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442<\/p>\n<pre><code>koala@x220:~$ acme.sh --renew --dns -d *.itdog.info --yes-I-know-dns-manual-mode-enough-go-ahead-please [\u0421\u0440 \u043c\u0430\u044f  5 14:58:08 MSK 2021] Renew: '*.itdog.info' [\u0421\u0440 \u043c\u0430\u044f  5 14:58:09 MSK 2021] Using CA: https:\/\/acme-v02.api.letsencrypt.org\/directory [\u0421\u0440 \u043c\u0430\u044f  5 14:58:09 MSK 2021] Single domain='*.itdog.info' [\u0421\u0440 \u043c\u0430\u044f  5 14:58:09 MSK 2021] Getting domain auth token for each domain [\u0421\u0440 \u043c\u0430\u044f  5 14:58:09 MSK 2021] Verifying: *.itdog.info [\u0421\u0440 \u043c\u0430\u044f  5 14:58:13 MSK 2021] Success [\u0421\u0440 \u043c\u0430\u044f  5 14:58:13 MSK 2021] Verify finished, start to sign. [\u0421\u0440 \u043c\u0430\u044f  5 14:58:13 MSK 2021] Lets finalize the order. [\u0421\u0440 \u043c\u0430\u044f  5 14:58:13 MSK 2021] Le_OrderFinalize='https:\/\/acme-v02.api.letsencrypt.org\/acme\/finalize\/121...' [\u0421\u0440 \u043c\u0430\u044f  5 14:58:15 MSK 2021] Downloading cert. [\u0421\u0440 \u043c\u0430\u044f  5 14:58:15 MSK 2021] Le_LinkCert='https:\/\/acme-v02.api.letsencrypt.org\/acme\/cert\/042...' [\u0421\u0440 \u043c\u0430\u044f  5 14:58:16 MSK 2021] Cert success. -----BEGIN CERTIFICATE----- certificate -----END CERTIFICATE----- [\u0421\u0440 \u043c\u0430\u044f  5 14:58:16 MSK 2021] Your cert is in  \/home\/koala\/.acme.sh\/*.itdog.info\/*.itdog.info.cer  [\u0421\u0440 \u043c\u0430\u044f  5 14:58:16 MSK 2021] Your cert key is in  \/home\/koala\/.acme.sh\/*.itdog.info\/*.itdog.info.key  [\u0421\u0440 \u043c\u0430\u044f  5 14:58:16 MSK 2021] The intermediate CA cert is in  \/home\/koala\/.acme.sh\/*.itdog.info\/ca.cer  [\u0421\u0440 \u043c\u0430\u044f  5 14:58:16 MSK 2021] And the full chain certs is there:  \/home\/koala\/.acme.sh\/*.itdog.info\/fullchain.cer <\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e TXT \u0437\u0430\u043f\u0438\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c \u043a\u043b\u044e\u0447 \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u0435\u043d 3 \u043c\u0435\u0441\u044f\u0446\u0430. \u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 2 \u043c\u0435\u0441\u044f\u0446\u0430, let&#8217;s enctypt \u0434\u0430\u0451\u0442 \u0437\u0430\u043f\u0430\u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432\u0434\u0440\u0443\u0433 \u0447\u0442\u043e-\u0442\u043e \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f, \u0431\u0443\u0434\u0435\u0442 \u0446\u0435\u043b\u044b\u0439 \u043c\u0435\u0441\u044f\u0446 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0447\u0438\u043d\u0438\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442.<\/p>\n<p>\u0418 \u0434\u0430, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u043a\u043b\u044e\u0447 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u043c, \u043a\u0430\u043a\u043e\u0439 \u0431\u044b\u043b \u0432\u044b\u0434\u0430\u043d \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0430\u0442\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e *.example.com.key<\/p>\n<pre><code># ls -l --time-style=+%Y-%m-%d \\*.example.com\/ total 28 -rw-r--r-- 1 root root 1587 2021-04-15 ca.cer -rw-r--r-- 1 root root 3433 2021-04-15 fullchain.cer -rw-r--r-- 1 root root 1846 2021-04-15 *.example.com.cer -rw-r--r-- 1 root root  719 2021-04-15 *.example.com.conf -rw-r--r-- 1 root root  980 2021-04-15 *.example.com.csr -rw-r--r-- 1 root root  211 2021-04-15 *.example.com.csr.conf -rw-r--r-- 1 root root 1675 2019-04-10 *.example.com.key<\/code><\/pre>\n<p>\u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0430 \u0438\u043b\u0438 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435, \u043d\u043e \u043d\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043a\u0435 \u043a\u0430\u0436\u0434\u044b\u0435 2 \u043c\u0435\u0441\u044f\u0446\u0430 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c TXT \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0436\u0438\u043c.<\/p>\n<h3>DNS API mode<\/h3>\n<p>\u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442? \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u0447\u0442\u043e \u0443 manual, \u0442\u043e\u043b\u044c\u043a\u043e acme.sh \u0441\u0430\u043c \u0432\u043d\u043e\u0441\u0438\u0442 \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 TXT \u0437\u0430\u043f\u0438\u0441\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e API \u0432\u0430\u0448\u0435\u0433\u043e dns \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/7a6\/a5f\/199\/7a6a5f199a68cc80bf9bae6ae27ce55f.gif\" alt=\"\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f API mode\" title=\"\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f API mode\" width=\"690\" height=\"388\"><figcaption>\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f API mode<\/figcaption><\/figure>\n<p>\u041f\u043e\u0434 DNS \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u043c \u0438 DNS \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u043c \u044f \u0431\u0443\u0434\u0443 \u0438\u043c\u0435\u0442\u044c \u0432 \u0432\u0438\u0434\u0443 \u0441\u0435\u0440\u0432\u0438\u0441, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043d\u043e\u0441\u044f\u0442\u0441\u044f DNS \u0437\u0430\u043f\u0438\u0441\u0438. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438 DNS \u0445\u043e\u0441\u0442\u0438\u043d\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0441\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0442\u043e\u0440\u0433\u0443\u044e\u0449\u0435\u0439 \u0434\u043e\u043c\u0435\u043d\u0430\u043c\u0438 (namecheap, beget \u0438\u0442\u0434) \u0438\u043b\u0438 \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0437\u0430 \u0434\u0435\u043d\u044c\u0433\u0438 (Amazon Route 53, ClouDNS \u0438\u0442\u0434), \u0438\u043b\u0438 \u0436\u0435 \u0432\u0430\u0448 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e BIND, PowerDNS \u0438\u0442\u0434.<\/p>\n<p>\u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e DNS \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0441\u0432\u043e\u0439 \u043d\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 API \u0438 \u0438\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 acme.sh \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 <a href=\"https:\/\/github.com\/acmesh-official\/acme.sh\/tree\/master\/dnsapi\" rel=\"noopener noreferrer nofollow\">\u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438<\/a>. \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u0443\u0442 <a href=\"https:\/\/github.com\/acmesh-official\/acme.sh\/wiki\/dnsapi\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/acmesh-official\/acme.sh\/wiki\/dnsapi<\/a><\/p>\n<p>\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u0440\u0438\u043c\u0435\u0440. \u0415\u0441\u043b\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043d\u0435\u0442 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043d\u043e \u043d\u0435 \u0441\u043f\u0435\u0448\u0438\u0442\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c vim, \u0434\u043e\u0436\u0434\u0438\u0442\u0435\u0441\u044c \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430.<\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0443 \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u043f\u043e\u043a\u0430\u0436\u0443 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 DNS \u0443 <a href=\"https:\/\/github.com\/acmesh-official\/acme.sh\/wiki\/dnsapi#53-use-namecheap\" rel=\"noopener noreferrer nofollow\">namecheap<\/a>.<\/p>\n<p>\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e DNS \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0441\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u0433\u0434\u0435-\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c API \u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043a\u0435\u043d, \u0433\u0434\u0435-\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f namecheap \u043d\u0443\u0436\u043d\u043e \u0435\u0449\u0451 \u0432\u043d\u0435\u0441\u0442\u0438 IP  \u0432 allow list. \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c API \u0438 \u0441\u0440\u0430\u0437\u0443 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f token, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c IP \u0432 \u0441\u043f\u0438\u0441\u043e\u043a. <\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/33c\/df9\/a43\/33cdf9a43c40dfbfe8c93af3acf2ea5b.png\" width=\"1057\" height=\"465\"><figcaption><\/figcaption><\/figure>\n<p> \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a API <\/p>\n<pre><code>export NAMECHEAP_USERNAME=\"USERNAME\" export NAMECHEAP_API_KEY=\"TOKEN\" export NAMECHEAP_SOURCEIP=\"MY-IP\"<\/code><\/pre>\n<blockquote>\n<p>\u041e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u043b\u0430\u0433\u0438 force \u0438 test. \u0411\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043b\u0430\u0433 -f (&#8212;force), \u0447\u0442\u043e \u0431\u044b \u043d\u0430\u0448\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0437\u0430\u043d\u043e\u0432\u043e, \u0442.\u043a. acme.sh \u0432\u0438\u0434\u0438\u0442 \u0443\u0436\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043f\u0440\u0438 \u0438\u0445 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u043e\u0432\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c. \u041c\u043e\u0436\u043d\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c <code>rm -rf ~\/.acme.sh\/domain\/<\/code> \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e. \u0422\u0430\u043a \u0436\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043b\u0430\u0433 &#8212;test, \u0447\u0442\u043e \u0431\u044b \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437 \u043d\u0435 \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d \u0441\u0435\u0440\u0432\u0435\u0440\u0430 let&#8217;s encrypt. \u0412\u043e\u0442 \u0442\u0430\u043a\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c, \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0432 manual \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0435\u0436\u0438\u043c.<\/p>\n<p><code>[\u0421\u0440 \u043c\u0430\u044f  5 16:39:31 MSK 2021] *.itdog.info is  already verified, skip dns-01. <\/code> <\/p>\n<\/blockquote>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 API \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c<\/p>\n<pre><code>acme.sh --issue --dns dns_namecheap -d *.itdog.info --test<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043f\u043e\u0441\u043b\u0435 &#8212;dns \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u043c\u044f \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c acme.sh<\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0430\u0441\u043a\u0440\u044b\u0442\u044c<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>koala@x220:~$ acme.sh --issue --dns dns_namecheap -d *.itdog.info --test [\u0421\u0440 \u043c\u0430\u044f  5 16:48:05 MSK 2021] Using ACME_DIRECTORY: https:\/\/acme-staging-v02.api.letsencrypt.org\/directory [\u0421\u0440 \u043c\u0430\u044f  5 16:48:06 MSK 2021] Using CA: https:\/\/acme-staging-v02.api.letsencrypt.org\/directory [\u0421\u0440 \u043c\u0430\u044f  5 16:48:06 MSK 2021] Creating domain key [\u0421\u0440 \u043c\u0430\u044f  5 16:48:07 MSK 2021] The domain key is here: \/home\/koala\/.acme.sh\/*.itdog.info\/*.itdog.info.key [\u0421\u0440 \u043c\u0430\u044f  5 16:48:07 MSK 2021] Single domain='*.itdog.info' [\u0421\u0440 \u043c\u0430\u044f  5 16:48:07 MSK 2021] Getting domain auth token for each domain [\u0421\u0440 \u043c\u0430\u044f  5 16:48:09 MSK 2021] Getting webroot for domain='*.itdog.info' [\u0421\u0440 \u043c\u0430\u044f  5 16:48:10 MSK 2021] Adding txt value: nCH4tBWCkSVn76301f2SdJqCAzmtXvzQAB_Ag8hURLo for domain:  _acme-challenge.itdog.info [\u0421\u0440 \u043c\u0430\u044f  5 16:48:15 MSK 2021] The txt record is added: Success. [\u0421\u0440 \u043c\u0430\u044f  5 16:48:15 MSK 2021] Let's check each DNS record now. Sleep 20 seconds first. [\u0421\u0440 \u043c\u0430\u044f  5 16:48:36 MSK 2021] You can use '--dnssleep' to disable public dns checks. [\u0421\u0440 \u043c\u0430\u044f  5 16:48:36 MSK 2021] See: https:\/\/github.com\/acmesh-official\/acme.sh\/wiki\/dnscheck [\u0421\u0440 \u043c\u0430\u044f  5 16:48:36 MSK 2021] Checking itdog.info for _acme-challenge.itdog.info [\u0421\u0440 \u043c\u0430\u044f  5 16:48:37 MSK 2021] Domain itdog.info '_acme-challenge.itdog.info' success. [\u0421\u0440 \u043c\u0430\u044f  5 16:48:37 MSK 2021] All success, let's return [\u0421\u0440 \u043c\u0430\u044f  5 16:48:37 MSK 2021] Verifying: *.itdog.info [\u0421\u0440 \u043c\u0430\u044f  5 16:48:41 MSK 2021] Success [\u0421\u0440 \u043c\u0430\u044f  5 16:48:41 MSK 2021] Removing DNS records. [\u0421\u0440 \u043c\u0430\u044f  5 16:48:41 MSK 2021] Removing txt: nCH4tBWCkSVn76301f2SdJqCAzmtXvzQAB_Ag8hURLo for domain: _acme-challenge.itdog.info [\u0421\u0440 \u043c\u0430\u044f  5 16:48:46 MSK 2021] Removed: Success [\u0421\u0440 \u043c\u0430\u044f  5 16:48:46 MSK 2021] Verify finished, start to sign. [\u0421\u0440 \u043c\u0430\u044f  5 16:48:46 MSK 2021] Lets finalize the order. [\u0421\u0440 \u043c\u0430\u044f  5 16:48:46 MSK 2021] Le_OrderFinalize='https:\/\/acme-staging-v02.api.letsencrypt.org\/acme\/finalize\/193...' [\u0421\u0440 \u043c\u0430\u044f  5 16:48:48 MSK 2021] Downloading cert. [\u0421\u0440 \u043c\u0430\u044f  5 16:48:48 MSK 2021] Le_LinkCert='https:\/\/acme-staging-v02.api.letsencrypt.org\/acme\/cert\/fa62...' [\u0421\u0440 \u043c\u0430\u044f  5 16:48:49 MSK 2021] Cert success. -----BEGIN CERTIFICATE----- certificate -----END CERTIFICATE----- [\u0421\u0440 \u043c\u0430\u044f  5 16:48:49 MSK 2021] Your cert is in  \/home\/koala\/.acme.sh\/*.itdog.info\/*.itdog.info.cer  [\u0421\u0440 \u043c\u0430\u044f  5 16:48:49 MSK 2021] Your cert key is in  \/home\/koala\/.acme.sh\/*.itdog.info\/*.itdog.info.key  [\u0421\u0440 \u043c\u0430\u044f  5 16:48:49 MSK 2021] The intermediate CA cert is in  \/home\/koala\/.acme.sh\/*.itdog.info\/ca.cer  [\u0421\u0440 \u043c\u0430\u044f  5 16:48:49 MSK 2021] And the full chain certs is there:  \/home\/koala\/.acme.sh\/*.itdog.info\/fullchain.cer<\/code><\/pre>\n<\/div>\n<\/details>\n<p>\u0412 \u043b\u043e\u0433\u0435 \u043f\u0440\u044f\u043c \u0432\u0438\u0434\u043d\u043e, \u0447\u0442\u043e acme.sh \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 TXT \u0437\u0430\u043f\u0438\u0441\u044c, \u0436\u0434\u0451\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e, \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u0447\u0435\u0440\u0435\u0437 \u0434\u043e\u0432\u0435\u0440\u0435\u043d\u043d\u044b\u0435 DNS \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u0437\u0430\u043f\u0438\u0441\u044c \u0438 \u0441\u043a\u0430\u0447\u0438\u0432\u0430\u0435\u0442 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0441 \u043a\u043b\u044e\u0447\u043e\u043c.<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0447\u0435\u0440\u0435\u0437 API, acme.sh \u0437\u0430\u043d\u043e\u0441\u0438\u0442 env \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 c \u0434\u043e\u0441\u0442\u0443\u043f\u0430\u043c\u0438 \u043a API \u0441\u0435\u0431\u0435 \u0432 \u0444\u0430\u0439\u043b ~\/.acme.sh\/account.conf \u0438 \u0432\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 \u0440\u0430\u0437 \u0438\u0445 \u044d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c.<\/p>\n<p>\u041e\u0442\u043b\u0438\u0447\u043d\u043e, \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0438, \u0432\u0441\u0451 \u0432\u0440\u043e\u0434\u0435 \u043a\u043b\u0430\u0441\u0441\u043d\u043e. \u041d\u043e \u0443 \u044d\u0442\u043e\u0433\u043e \u043c\u0435\u0442\u043e\u0434\u0430 \u0435\u0441\u0442\u044c \u0441\u0432\u043e\u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438:<\/p>\n<ul>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u043d\u0438\u043a\u0442\u043e \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043b \u0441\u043a\u0440\u0438\u043f\u0442\u0430 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\\\u0441\u0435\u0440\u0432\u0438\u0441\u0430, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043b\u0438\u0431\u043e \u043f\u0438\u0441\u0430\u0442\u044c, \u043b\u0438\u0431\u043e \u043f\u0435\u0440\u0435\u0435\u0437\u0436\u0430\u0442\u044c \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440<\/p>\n<\/li>\n<li>\n<p>\u0410 \u0435\u0441\u0442\u044c \u043b\u0438 \u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 API?<\/p>\n<\/li>\n<li>\n<p>\u041f\u043e\u0440\u0430\u0437\u043c\u044b\u0448\u043b\u044f\u0435\u043c \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0431 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. \u0412\u043e\u0442 \u0443 \u043c\u0435\u043d\u044f \u0432 &#171;\u043e\u0442\u043a\u0440\u044b\u0442\u0443\u044e&#187; \u043b\u0435\u0436\u0438\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044e \u043c\u043e\u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430, \u0435\u0441\u043b\u0438 \u043e\u043d \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043f\u043e\u043f\u0430\u0434\u0451\u0442 \u0432 \u0447\u0443\u0436\u0438\u0435 \u0440\u0443\u043a\u0438, \u044d\u0442\u0438 \u0440\u0443\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0447\u0442\u043e \u0443\u0433\u043e\u0434\u043d\u043e. \u042d\u0442\u0443 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0448\u0438\u0442\u044c \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0432 API, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u043f\u043e \u0442\u043e\u043a\u0435\u043d\u0443 \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0442\u044c\\\u0443\u0434\u0430\u043b\u044f\u0442\u044c txt \u0437\u0430\u043f\u0438\u0441\u0438 _acme-challenge. \u0415\u0441\u0442\u044c \u043b\u0438 \u0442\u0430\u043a\u0430\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430? \u042f \u043d\u0435 \u0432\u0441\u0442\u0440\u0435\u0447\u0430\u043b \u0442\u0430\u043a\u043e\u0433\u043e, \u043d\u0430\u0432\u0435\u0440\u043d\u043e\u0435 \u0435\u0441\u0442\u044c \u0443 \u043a\u0430\u043a\u043e\u0433\u043e-\u043d\u0438\u0431\u0443\u0434\u044c AWS \u043a\u043e\u043d\u0435\u0447\u043d\u043e. \u041e\u0431\u044b\u0447\u043d\u043e \u0443\u0436\u0435 \u0445\u043e\u0440\u043e\u0448\u043e \u0435\u0441\u043b\u0438 \u0435\u0441\u0442\u044c API, \u0430 \u0442\u043e\u043a\u0435\u043d \u043e\u0434\u0438\u043d \u0438 \u0434\u0430\u0451\u0442 \u043f\u043e\u043b\u043d\u044b\u0439 \u0434\u043e\u0441\u0442\u0443\u043f<\/p>\n<\/li>\n<li>\n<p>\u0423 \u0432\u0430\u0441 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u043d\u0430 \u0440\u0430\u0437\u043d\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u0445 (\u0441\u043e\u0447\u0443\u0432\u0441\u0442\u0432\u0443\u044e). \u0422\u0443\u0442 \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u043a\u0430\u0436\u0434\u043e\u0435 API \u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0437\u0430\u043f\u0443\u0441\u043a acme.sh \u0441\u043e \u0441\u0432\u043e\u0438\u043c\u0438 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u043c\u0438, \u043d\u043e \u043c\u043d\u0435 \u043a\u0430\u0436\u0435\u0442\u0441\u044f \u044d\u0442\u043e \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0443\u0434\u043e\u0431\u043d\u044b\u043c. \u0422\u0435\u043c \u0431\u043e\u043b\u0435\u0435 \u0435\u0441\u043b\u0438 \u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043d\u0438\u0445 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u0435\u0442 API \u0438\u043b\u0438 \u0441\u043a\u0440\u0438\u043f\u0442<\/p>\n<\/li>\n<li>\n<p>\u041a\u0442\u043e-\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0435 \u043b\u044e\u0431\u0438\u0442, \u0447\u0442\u043e \u0431\u044b \u0432 DNS \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u043b\u0430\u0437\u0438\u043b \u043a\u0430\u043a\u043e\u0439-\u0442\u043e \u0441\u043a\u0440\u0438\u043f\u0442 \u0438 \u0447\u0442\u043e-\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u043b\\\u0443\u0434\u0430\u043b\u044f\u043b<\/p>\n<\/li>\n<\/ul>\n<h2>DNS aliase mode<\/h2>\n<p>\u042d\u0442\u043e \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c DNS API.<\/p>\n<p>\u0418\u0434\u0435\u044f \u0442\u0430\u043a\u0430\u044f: \u0415\u0441\u0442\u044c \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u043e\u043c\u0435\u043d, \u0447\u0435\u0440\u0435\u0437 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f TXT \u0437\u0430\u043f\u0438\u0441\u0435\u0439 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0430\u0435\u043c \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0434\u043e\u043c\u0435\u043d\u043e\u043c. \u0442.\u0435. acme.sh \u0441\u043c\u043e\u0442\u0440\u0438\u0442 CNAME \u0437\u0430\u043f\u0438\u0441\u044c \u0443 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430, \u0432\u0438\u0434\u0438\u0442 &#171;\u043f\u0435\u0440\u0435\u043d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435&#187; \u043d\u0430 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u043e\u043c\u0435\u043d \u0438 \u0438\u0434\u0451\u0442 \u043a \u043d\u0435\u043c\u0443 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c TXT \u0437\u0430\u043f\u0438\u0441\u044c. \u0410 \u0434\u0430\u043b\u044c\u0448\u0435 \u0432\u0441\u0451 \u043a\u0430\u043a \u0432 \u0440\u0435\u0436\u0438\u043c\u0435 DNS API.<\/p>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/baa\/3b2\/11a\/baa3b211ac9c610a05ed2c8c26e6a5d2.gif\" alt=\"\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f alias mode\" title=\"\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f alias mode\" width=\"690\" height=\"388\"><figcaption>\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f alias mode<\/figcaption><\/figure>\n<p>\u0420\u0430\u0437\u0431\u0435\u0440\u0451\u043c \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e. \u0414\u043b\u044f \u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044f \u043a\u0443\u043f\u0438\u043b \u0434\u043e\u043c\u0435\u043d tech-domain.club, \u043e\u043d \u0432\u044b\u0441\u0442\u0443\u043f\u0430\u0435\u0442 \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430. \u0412 \u043c\u043e\u0451\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u0434\u043e\u043c\u0435\u043d itdog.info \u0440\u0430\u0441\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u043d\u0430 namecheap, \u0430 \u0442\u0435\u0445\u043d\u0438\u0447\u0441\u043a\u0438\u0439 tech-domain.club \u044f \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u044e \u043d\u0430 Hetzner DNS, \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u0438 \u0441 \u0437\u0430\u043f\u0438\u0441\u044f\u043c\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0447\u0435\u0440\u0435\u0437 API Hetzner&#8217;a.<\/p>\n<p>\u0412 \u0437\u0430\u043f\u0438\u0441\u044f\u0445 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430 \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c CNAME \u0437\u0430\u043f\u0438\u0441\u044c, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442 \u043d\u0430 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u043e\u043c\u0435\u043d<\/p>\n<pre><code>_acme-challenge CNAME _acme-challenge.tech-domain.club<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0441 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0434\u043e\u043c\u0435\u043d\u043e\u043c \u043c\u044b \u043d\u0430\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c \u0434\u043e\u0441\u0442\u0443\u043f \u043a API.<\/p>\n<p>\u042d\u043a\u0441\u043f\u043e\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0442\u043e\u043a\u0435\u043d Hetzner <code>export HETZNER_Token=\"TOKEN\"<\/code><\/p>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a (-f \u0438 &#8212;test \u043e\u043f\u044f\u0442\u044c \u0436\u0435 \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430)<\/p>\n<pre><code>acme.sh --issue -d *.itdog.info --challenge-alias tech-domain.club --dns dns_hetzner -f --test<\/code><\/pre>\n<details class=\"spoiler\">\n<summary>\u0420\u0430\u0441\u043a\u0440\u044b\u0442\u044c<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>koala@x220:~$ acme.sh --issue -d *.itdog.info -d itdog.info --challenge-alias tech-domain.club --dns dns_hetzner -f --test [\u041f\u0442 \u043c\u0430\u044f  7 13:40:11 MSK 2021] Domains have changed. [\u041f\u0442 \u043c\u0430\u044f  7 13:40:11 MSK 2021] Using CA: https:\/\/acme-v02.api.letsencrypt.org\/directory [\u041f\u0442 \u043c\u0430\u044f  7 13:40:11 MSK 2021] Multi domain='DNS:*.itdog.info,DNS:itdog.info' [\u041f\u0442 \u043c\u0430\u044f  7 13:40:11 MSK 2021] Getting domain auth token for each domain [\u041f\u0442 \u043c\u0430\u044f  7 13:40:15 MSK 2021] Getting webroot for domain='*.itdog.info' [\u041f\u0442 \u043c\u0430\u044f  7 13:40:15 MSK 2021] Getting webroot for domain='itdog.info' [\u041f\u0442 \u043c\u0430\u044f  7 13:40:15 MSK 2021] Adding txt value: Zlrij9n4y5QXfH6yx_PBn45bgmIcT70-JuW2rIUa6lc for domain:  _acme-challenge.tech-domain.club [\u041f\u0442 \u043c\u0430\u044f  7 13:40:16 MSK 2021] Adding record [\u041f\u0442 \u043c\u0430\u044f  7 13:40:17 MSK 2021] Record added, OK [\u041f\u0442 \u043c\u0430\u044f  7 13:40:20 MSK 2021] The txt record is added: Success. [\u041f\u0442 \u043c\u0430\u044f  7 13:40:20 MSK 2021] Let's check each DNS record now. Sleep 20 seconds first. [\u041f\u0442 \u043c\u0430\u044f  7 13:40:41 MSK 2021] You can use '--dnssleep' to disable public dns checks. [\u041f\u0442 \u043c\u0430\u044f  7 13:40:41 MSK 2021] See: https:\/\/github.com\/acmesh-official\/acme.sh\/wiki\/dnscheck [\u041f\u0442 \u043c\u0430\u044f  7 13:40:41 MSK 2021] Checking itdog.info for _acme-challenge.tech-domain.club [\u041f\u0442 \u043c\u0430\u044f  7 13:40:42 MSK 2021] Domain itdog.info '_acme-challenge.tech-domain.club' success. [\u041f\u0442 \u043c\u0430\u044f  7 13:40:42 MSK 2021] All success, let's return [\u041f\u0442 \u043c\u0430\u044f  7 13:40:42 MSK 2021] *.itdog.info is already verified, skip dns-01. [\u041f\u0442 \u043c\u0430\u044f  7 13:40:42 MSK 2021] Verifying: itdog.info [\u041f\u0442 \u043c\u0430\u044f  7 13:40:46 MSK 2021] Success [\u041f\u0442 \u043c\u0430\u044f  7 13:40:46 MSK 2021] Removing DNS records. [\u041f\u0442 \u043c\u0430\u044f  7 13:40:46 MSK 2021] Removing txt: Zlrij9n4y5QXfH6yx_PBn45bgmIcT70-JuW2rIUa6lc for domain: _acme-challenge.tech-domain.club [\u041f\u0442 \u043c\u0430\u044f  7 13:40:50 MSK 2021] Record deleted [\u041f\u0442 \u043c\u0430\u044f  7 13:40:50 MSK 2021] Removed: Success [\u041f\u0442 \u043c\u0430\u044f  7 13:40:50 MSK 2021] Verify finished, start to sign. [\u041f\u0442 \u043c\u0430\u044f  7 13:40:50 MSK 2021] Lets finalize the order. [\u041f\u0442 \u043c\u0430\u044f  7 13:40:50 MSK 2021] Le_OrderFinalize='https:\/\/acme-v02.api.letsencrypt.org\/acme\/finalize\/121...' [\u041f\u0442 \u043c\u0430\u044f  7 13:40:52 MSK 2021] Downloading cert. [\u041f\u0442 \u043c\u0430\u044f  7 13:40:52 MSK 2021] Le_LinkCert='https:\/\/acme-v02.api.letsencrypt.org\/acme\/cert\/04e...' [\u041f\u0442 \u043c\u0430\u044f  7 13:40:53 MSK 2021] Cert success. -----BEGIN CERTIFICATE----- certificate -----END CERTIFICATE----- [\u041f\u0442 \u043c\u0430\u044f  7 13:40:53 MSK 2021] Your cert is in  \/home\/koala\/.acme.sh\/*.itdog.info\/*.itdog.info.cer  [\u041f\u0442 \u043c\u0430\u044f  7 13:40:53 MSK 2021] Your cert key is in  \/home\/koala\/.acme.sh\/*.itdog.info\/*.itdog.info.key  [\u041f\u0442 \u043c\u0430\u044f  7 13:40:53 MSK 2021] The intermediate CA cert is in  \/home\/koala\/.acme.sh\/*.itdog.info\/ca.cer  [\u041f\u0442 \u043c\u0430\u044f  7 13:40:53 MSK 2021] And the full chain certs is there:  \/home\/koala\/.acme.sh\/*.itdog.info\/fullchain.cer <\/code><\/pre>\n<\/div>\n<\/details>\n<p>CNAME \u0437\u0430\u043f\u0438\u0441\u044c \u0443\u0434\u0430\u043b\u044f\u0442\u044c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e, \u043e\u043d\u0430 \u0431\u0443\u0434\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043f\u0440\u0438 \u043a\u0430\u0436\u0434\u043e\u043c \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0441 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u043e\u0439 CNAME \u0437\u0430\u043f\u0438\u0441\u044c\u044e \u043d\u0430 \u043e\u0434\u0438\u043d \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u043e\u043c\u0435\u043d \u0438 \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0434\u043b\u044f \u0432\u0441\u0435\u0445.<\/p>\n<p>\u041a\u0441\u0442\u0430\u0442\u0438, \u0435\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0438\u043c\u0435\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0438 itdog.info \u0438 wildcard *.itdog.info, \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0438\u0442\u0435 \u0438\u0445 \u0441 -d, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440<\/p>\n<pre><code>acme.sh --issue --challenge-alias tech-domain.club --dns hetzner -d *.itdog.info -d itdog.info<\/code><\/pre>\n<p>\u042d\u0442\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0443\u0435\u0442 \u0438 \u0434\u043b\u044f \u0434\u0440\u0443\u0433\u0438\u0445 \u043c\u0435\u0442\u043e\u0434\u043e\u0432. <\/p>\n<p>\u0418 \u0442\u0430\u043a, \u0447\u0442\u043e \u0434\u0430\u0451\u0442 \u043d\u0430\u043c \u044d\u0442\u043e\u0442 \u0440\u0435\u0436\u0438\u043c:<\/p>\n<ul>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043d\u0435\u0442 API \u0438\u043b\u0438 \u043b\u0435\u043d\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u0440\u0438\u043f\u0442, \u0432\u043e\u0437\u044c\u043c\u0438\u0442\u0435 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u043e\u043c\u0435\u043d, \u0434\u0435\u043b\u0435\u0433\u0438\u0440\u0443\u0439\u0442\u0435 \u0435\u0433\u043e \u043d\u0430 \u0441\u0435\u0440\u0432\u0438\u0441, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 <a href=\"https:\/\/github.com\/acmesh-official\/acme.sh\/wiki\/dnsapi\" rel=\"noopener noreferrer nofollow\">\u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442<\/a> acme.sh<\/p>\n<\/li>\n<li>\n<p>\u0415\u0441\u043b\u0438 \u0443 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u043d\u0435\u0442 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043f\u0440\u0430\u0432 \u0434\u043b\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430 \u0447\u0435\u0440\u0435\u0437 API, \u0442\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u043e\u043c\u0435\u043d \u0442\u043e\u0436\u0435 \u0432\u044b\u0440\u0443\u0447\u0430\u0435\u0442. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435, \u0435\u0441\u043b\u0438 \u043d\u0430\u0448 token \u0443\u0442\u0435\u0447\u0451\u0442, \u0443 \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a\u0430 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u0442\u043e\u043b\u044c\u043a\u043e \u043a \u0432\u0430\u0448\u0435\u043c\u0443 \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u043e\u043c\u0443 \u0434\u043e\u043c\u0435\u043d\u0443, \u0438 \u0435\u0441\u043b\u0438 \u0432\u044b \u0435\u0433\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f acme.sh, \u0442\u043e \u043c\u0430\u043a\u0441\u0438\u043c\u0443\u043c \u0447\u0442\u043e \u0441\u043c\u043e\u0436\u0435\u0442 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0437\u043b\u043e\u0443\u043c\u044b\u0448\u043b\u0435\u043d\u043d\u0438\u043a &#8212; \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043a\u043b\u044e\u0447 \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0434\u043b\u044f \u0432\u0430\u0448\u0435\u0433\u043e \u0434\u043e\u043c\u0435\u043d\u0430. \u042d\u0442\u043e \u0442\u043e\u0436\u0435 \u043d\u0435\u043f\u0440\u0438\u044f\u0442\u043d\u043e \u0438 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c, \u043d\u043e \u044d\u0442\u043e \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u0434\u0440\u0443\u0433\u043e\u0439 \u0443\u0440\u043e\u0432\u0435\u043d\u044c \u0443\u0433\u0440\u043e\u0437\u044b, \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u043f\u043e\u043b\u043d\u044b\u043c \u0434\u043e\u0441\u0442\u0443\u043f\u043e\u043c \u043a \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u0439 \u0437\u043e\u043d\u0435<\/p>\n<\/li>\n<li>\n<p>\u0412 \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438 \u0441 \u043a\u0443\u0447\u0435\u0439 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u043d\u0430 \u043e\u0434\u043d\u043e\u043c \u0438\u043b\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430\u0445, \u0436\u0438\u0437\u043d\u044c \u0442\u0430\u043a \u0436\u0435 \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u043f\u0440\u043e\u0449\u0435, \u043a\u043e\u0433\u0434\u0430 \u0432\u0441\u0435 \u043e\u043d\u0438 \u043f\u0440\u043e\u0441\u0442\u043e \u0438\u043c\u0435\u044e\u0442 CNAME \u0437\u0430\u043f\u0438\u0441\u044c<\/p>\n<\/li>\n<\/ul>\n<p>\u0415\u0441\u0442\u044c \u0442\u0430\u043a \u0436\u0435 \u0440\u0435\u0436\u0438\u043c domain-alias, \u043e\u043d \u0434\u0430\u0451\u0442 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043d\u0435 _acme-challenge \u0437\u0430\u043f\u0438\u0441\u044c, \u0430 \u043a\u0430\u0441\u0442\u043e\u043c\u043d\u0443\u044e, \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u043e\u0441\u0442\u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0442\u044c \u0432 <a href=\"https:\/\/github.com\/acmesh-official\/acme.sh\/wiki\/DNS-alias-mode\" rel=\"noopener noreferrer nofollow\">\u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u0446\u0438\u0438<\/a><\/p>\n<h2>\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432<\/h2>\n<p>\u041c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b, \u043b\u0435\u0436\u0430\u0442 \u043e\u043d\u0438 \u0443 \u043d\u0430\u0441 \u043a\u0440\u0430\u0441\u0438\u0432\u043e \u0432 ~\/.acme.sh \u0438 \u043d\u0438\u043a\u0430\u043a \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f. \u041d\u0430\u0434\u043e \u043a\u0430\u043a\u0438\u043c-\u0442\u043e \u043e\u0431\u0440\u0430\u0437\u043e\u043c \u0438\u0445 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0442\u044c \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0414\u0430\u043b\u0435\u0435 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443, \u043a\u0430\u043a \u044f \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u044e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e ansible. Ansible \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0438 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f\\\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f \u0438 \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f. \u0421\u0440\u0430\u0437\u0443 \u043f\u0440\u0435\u0434\u0443\u043f\u0440\u0435\u0436\u0434\u0430\u044e, \u043c\u043e\u0438 \u043f\u043b\u0435\u0439\u0431\u0443\u043a\u0438 \u043f\u0440\u043e\u0441\u0442\u044b\u0435 \u043a\u0430\u043a \u0442\u0440\u0438 \u043a\u043e\u043f\u0435\u0439\u043a\u0438 \u0438 \u0437\u0430\u0442\u043e\u0447\u0435\u043d\u044b \u043f\u043e\u0434 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0443\u044e \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443. Playbooks, hosts \u043d\u0430 <a href=\"https:\/\/github.com\/itdoginfo\/acme.sh-ansible-automation\" rel=\"noopener noreferrer nofollow\">github<\/a>.<\/p>\n<p>\u041c\u043e\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0441 ansible, \u0443\u0436\u0435 \u0438\u043c\u0435\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f \u043a\u043e \u0432\u0441\u0435\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0430\u043c, \u043d\u0430 \u043d\u0451\u043c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d acme.sh \u0438 \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u0434\u0432\u0430 \u043f\u043b\u0435\u0439\u0431\u0443\u043a\u0430, \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435 \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u0435. \u041a\u0441\u0442\u0430\u0442\u0438, \u043d\u0435 \u0437\u0430\u0431\u0443\u0434\u044c\u0442\u0435 \u0437\u0430\u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c acme.sh \u0432 crontab, \u0447\u0442\u043e \u0431\u044b \u043d\u0435 \u0431\u044b\u043b\u043e \u043b\u0438\u0448\u043d\u0438\u0445 \u0437\u0430\u043f\u0440\u043e\u0441\u043e\u0432 \u0438 \u043f\u0443\u0442\u0430\u043d\u0438\u0446\u044b.<\/p>\n<h3>Playbook \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432<\/h3>\n<p>\u0412 vars \u0443\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0442\u0435\u0445\u043d\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0434\u043e\u043c\u0435\u043d, \u044d\u0442\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u0422\u043e\u043a\u0435\u043d \u043e\u0442 API \u0432\u044b\u043d\u0435\u0441\u0435\u043d \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 vars \u0444\u0430\u0439\u043b, \u0447\u0442\u043e \u0431\u044b \u0445\u0440\u0430\u043d\u0438\u0442\u044c \u0435\u0433\u043e \u0432 \u0437\u0430\u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u0432 git. Task &#171;Date and time&#187; \u043d\u0443\u0436\u0435\u043d \u0434\u043b\u044f \u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f, \u0447\u0442\u043e \u0431\u044b \u043f\u043e\u043d\u0438\u043c\u0430\u0442\u044c \u043a\u043e\u0433\u0434\u0430 \u0438\u043c\u0435\u043d\u043d\u043e \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a. \u0421\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0434\u0432\u0430 \u043f\u043b\u0435\u0439\u0431\u0443\u043a\u0430 \u044d\u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e\u0439 shell, \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0432 \u043e\u0434\u043d\u043e\u043c \u0444\u0430\u0439\u043b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430. \u0412\u0441\u0435\u043c \u0434\u043e\u043c\u0435\u043d\u0430\u043c, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u043e\u0447\u0435\u0442\u0430\u0442\u044c \u0432 \u0441\u0435\u0431\u0435 \u043e\u0431\u044b\u0447\u043d\u044b\u0439 \u0438 wildcard \u0434\u043e\u043c\u0435\u043d, \u0438\u0434\u0443\u0442 \u0441\u043f\u0438\u0441\u043a\u043e\u043c \u0432 loop.<\/p>\n<p>\u0414\u043e\u043c\u0435\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0434\u043e\u043b\u0436\u043d\u044b \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442\u044c \u043a\u0430\u043a \u0434\u043b\u044f \u043e\u0431\u044b\u0447\u043d\u043e\u0433\u043e, \u0442\u0430\u043a \u0438 \u0434\u043b\u044f wildcard \u0438\u0434\u0443\u0442 \u043f\u043e \u0432\u0442\u043e\u0440\u043e\u043c taks, \u0442\u043e\u0436\u0435 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e loop. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 wilcard \u0432\u0438\u0434\u0430 <code>*.*.itdog.info<\/code>, \u0442\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u044c\u0442\u0435 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d -d \u0438 \u0435\u0449\u0451 \u043e\u0434\u0438\u043d subkey \u0432 item. \u041e\u043f\u0446\u0438\u044f ignore_errors \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0430, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e exit <code>code 0<\/code> \u0431\u0443\u0434\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e 6 \u0440\u0430\u0437 \u0437\u0430 \u0433\u043e\u0434 \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430, \u0432 \u043e\u0441\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u044f \u043e \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c, \u0434\u043b\u044f ansible \u044d\u0442\u043e \u043e\u0448\u0438\u0431\u043a\u0430 \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d \u0431\u0443\u0434\u0435\u0442 \u043e\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n<blockquote>\n<p>\u0414\u043b\u044f \u0447\u0435\u0433\u043e \u043f\u043b\u0435\u0439\u0431\u0443\u043a \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435? \u0412\u0435\u0434\u044c \u0432 acme.sh \u0438 \u0442\u0430\u043a \u0443\u0436\u0435 \u0432\u0441\u0451 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u043e!<\/p>\n<\/blockquote>\n<p>\u0412 \u043e\u0434\u043d\u043e\u043c \u043f\u043b\u0435\u0439\u0431\u0443\u043a\u0435 \u043c\u044b \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0432\u0441\u044e \u043d\u0430\u0448\u0443 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e, \u0434\u043e\u0441\u0442\u0443\u043f\u044b \u0438 \u0432\u0441\u0435 \u0434\u043e\u043c\u0435\u043d\u044b, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c TLS, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u044d\u0442\u043e \u0443\u0434\u043e\u0431\u043d\u043e &#8212; \u043d\u0435 \u043d\u0430\u0434\u043e \u043a\u043e\u043f\u0430\u0442\u044c\u0441\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0430\u0445 acme.sh. \u0412 \u0441\u043b\u0443\u0447\u0430\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0442\u043e\u043a\u0435\u043d\u0430, \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c \u0435\u0433\u043e \u0432 vars_files, \u0430 \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0434\u043e\u043c\u0435\u043d\\\u043f\u043e\u0434\u043e\u043c\u0435\u043d, \u043c\u044b \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0433\u043e \u0432 loop. \u041d\u0443 \u0438 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430, \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u0438\u0442\u044c ~\/.acme.sh, \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u043b\u0435\u0439\u0431\u0443\u043a\u0438 \u0441 vars_files \u0432\u0437\u044f\u0442\u044c \u0438\u0437 git.<\/p>\n<h3>Playbook \u0434\u043b\u044f \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432<\/h3>\n<p>\u0417\u0434\u0435\u0441\u044c \u043d\u0443\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043f\u043e\u0434 \u0432\u0430\u0448\u0443 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0443, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u043e\u0432\u0442\u043e\u0440\u044e\u0441\u044c, \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u044e \u044d\u0442\u043e \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430.<\/p>\n<p>\u0422\u0440\u0438 \u0442\u0438\u043f\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0438\u0437 \u043c\u043e\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b:<\/p>\n<ul>\n<li>\n<p>tls-hosts &#8212; \u041e\u0431\u044b\u0447\u043d\u044b\u0439 nginx \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044b\u0439 \u043a\u0430\u043a \u043f\u0430\u043a\u0435\u0442 \u0438\u0437 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u0440\u0435\u043f\u043e\u0437\u0438\u0442\u043e\u0440\u0438\u044f<\/p>\n<\/li>\n<li>\n<p>tls-hosts-docker &#8212; \u0412\u0435\u0431 \u043f\u0440\u043e\u0435\u043a\u0442 \u0441 \u0442\u0435\u043c \u0436\u0435 nginx, \u043d\u043e \u0443\u0436\u0435 \u0432 docker<\/p>\n<\/li>\n<li>\n<p>tls-hosts-docker-rename &#8212; \u0421\u0442\u043e\u0440\u043e\u043d\u043d\u0438\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u0434\u043e \u043f\u043e\u0434\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0438 \u043a\u043b\u044e\u0447 \u0441 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u044b\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 Harbor, Zabbix)<\/p>\n<\/li>\n<\/ul>\n<p>\u041f\u0435\u0440\u0432\u044b\u0439 \u043a\u0435\u0439\u0441 \u0441\u0430\u043c\u044b\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0439, \u043c\u044b \u0441\u0430\u043c\u0438 \u043f\u0438\u0448\u0435\u043c \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044e nginx \u0438 \u043c\u043e\u0436\u0435\u043c \u043a\u0443\u0434\u0430 \u0443\u0433\u043e\u0434\u043d\u043e \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u043a\u0430\u043a \u0443\u0433\u043e\u0434\u043d\u043e \u043d\u0430\u0437\u0432\u0430\u0442\u044c \u0438\u0445. \u041f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430, \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0441\u0434\u0435\u043b\u0430\u0442\u044c <code>nginx -s reload<\/code><\/p>\n<p>\u0412\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u0441\u0451 \u043f\u043b\u044e\u0441-\u043c\u0438\u043d\u0443\u0441 \u0442\u0430\u043a \u0436\u0435, \u043d\u043e \u0443\u0436\u0435 \u043d\u0443\u0436\u043d\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c <code>docker exec project-nginx -s reolad<\/code>, \u0442.\u0435. \u0443\u0436\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 handler.<\/p>\n<p>\u0412 \u0442\u0440\u0435\u0442\u044c\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0443 \u043d\u0430\u0441 \u043f\u043e\u043c\u0438\u043c\u043e handler \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435, \u0435\u0449\u0451 \u043d\u0443\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0443 \u0441 \u043a\u043b\u044e\u0447\u043e\u043c \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0451\u043d\u043d\u043e\u0435 \u0438\u043c\u044f, \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e \u043e\u043d\u043e \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u043e \u0432 \u0438\u0445 \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043b\u0443\u0447\u0448\u0435 \u043d\u0435 \u0442\u0440\u043e\u0433\u0430\u0442\u044c, \u0447\u0442\u043e\u0431 \u043d\u0435 \u0431\u044b\u043b\u043e \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u0440\u0438 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0438.<\/p>\n<p>\u0412 \u043c\u043e\u0451\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u043c\u043d\u043e\u0433\u043e, \u043f\u0443\u0442\u0438, \u043f\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0441 \u043a\u043b\u044e\u0447\u0430\u043c\u0438 \u0445\u0440\u0430\u043d\u044f\u0442\u0441\u044f, \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f. \u0422\u0430\u043a \u0436\u0435 \u0435\u0441\u0442\u044c \u0441\u043b\u0443\u0447\u0430\u0438 \u043a\u043e\u0433\u0434\u0430 \u0443 \u043e\u0434\u043d\u043e\u0433\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043c\u0435\u043d\u043e\u0432. \u0427\u0442\u043e \u0431\u044b \u0431\u044b\u043b\u0430 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430 \u0441\u0432\u043e\u0439 \u043f\u0443\u0442\u044c \u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u044b\u0439 \u0434\u043e\u043c\u0435\u043d, \u0432 hosts \u0434\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0445\u043e\u0441\u0442\u0430 \u0437\u0430\u0434\u0430\u043d\u044b \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u0438 \u0434\u043e\u043c\u0435\u043d\u0430.<\/p>\n<pre><code>nginx.itdog.info tls_path=\/etc\/letsencrypt\/*.itdog.info\/ DOMAIN=*.itdog.info<\/code><\/pre>\n<p>\u0414\u043b\u044f \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e, \u0434\u0435\u043b\u0430\u0435\u0442\u0441\u044f \u0434\u0432\u0430 \u0445\u043e\u0441\u0442\u0430 \u0441 \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0438\u043c\u0435\u043d\u0430\u043c\u0438 \u0438 \u043e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u044b\u043c ansible_host (\u0421\u043e\u0432\u0435\u0442, \u043a\u0430\u043a \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u043b\u0443\u0447\u0448\u0435, \u043f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442\u0441\u044f).<\/p>\n<pre><code>nginx.example.com-1 ansible_host=nginx.example.com tls_path=\/etc\/letsencrypt\/*.example.com\/ DOMAIN=example.com nginx.example.com-2 ansible_host=nginx.example.com tls_path=\/etc\/letsencrypt\/*.example.org\/ DOMAIN=example.org<\/code><\/pre>\n<p>\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u0442\u0438\u043f\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u0441\u0432\u043e\u044f \u0433\u0440\u0443\u043f\u043f\u0430 \u0432 hosts. \u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0439 \u0433\u0440\u0443\u043f\u043f\u044b \u0441\u0432\u043e\u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u044e\u0449\u0438\u0435\u0441\u044f \u0434\u0440\u0443\u0433 \u043e\u0442 \u0434\u0440\u0443\u0433\u0430 tasks. \u0414\u043b\u044f tls-hosts-docker \u0442\u0430\u043a \u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f \u0441 \u0438\u043c\u0435\u043d\u0435\u043c \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0430 nginx. \u0410 \u0434\u043b\u044f tls-hosts-docker-rename \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0430 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0437\u0430\u0434\u0430\u0451\u0442\u0441\u044f \u043a\u043e\u043d\u0435\u0447\u043d\u043e\u0435 \u0438\u043c\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430 \u0438 \u043a\u043b\u044e\u0447\u0430.<\/p>\n<pre><code>docker-zabbix.itdog.info tls_path=\/root\/docker-zabbix\/zbx_env\/etc\/ssl\/nginx\/ DOMAIN=*.itdog.info CONTAINER=docker-zabbix_zabbix-web-nginx-pgsql_1 cert_name=ssl.crt key_name=ssl.key <\/code><\/pre>\n<p>\u0414\u043b\u044f nginx \u043d\u0443\u0436\u0435\u043d fullchain \u0438 domain.key &#8212; \u043a\u043e\u043f\u0438\u0440\u0443\u044e\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u043e\u043d\u0438. \u0415\u0441\u043b\u0438 \u0444\u0430\u0439\u043b\u044b \u0440\u0430\u0437\u043b\u0438\u0447\u0430\u044e\u0442\u0441\u044f, \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0441\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0435\u0442 handler <code>nginx -s reload<\/code>. \u0422\u0430\u043a \u0436\u0435 \u0435\u0441\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430, \u043f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c \u043a\u0430\u043a \u0437\u0430\u0440\u0435\u043b\u043e\u0443\u0434\u0438\u0442\u044c nginx, \u0447\u0442\u043e \u044d\u0442\u043e \u0444\u0430\u0439\u043b. \u0423 \u043c\u0435\u043d\u044f \u043e\u0434\u0438\u043d \u0440\u0430\u0437 \u0431\u044b\u043b \u0441\u043b\u0443\u0447\u0430\u0439, \u0432 \u0441\u0430\u043c\u043e\u043c \u043d\u0430\u0447\u0430\u043b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f acme.sh, \u0441\u043a\u0440\u0438\u043f\u0442 \u0432\u043c\u0435\u0441\u0442\u043e \u0444\u0430\u0439\u043b\u0430 \u0441 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u043c \u0441\u043e\u0437\u0434\u0430\u043b \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e. \u041f\u0440\u044f\u043c\u043e \u043a\u0430\u043a traefik 1.7 \u0441\u043e\u0437\u0434\u0430\u0451\u0442 acme.json \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e, \u0432\u043c\u0435\u0441\u0442\u043e \u0444\u0430\u0439\u043b\u0430. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u0441\u0434\u0435\u043b\u0430\u043b \u043f\u0440\u043e\u0441\u0442\u0443\u044e \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443. \u0412 \u0438\u0434\u0435\u0430\u043b\u0435 \u043d\u0443\u0436\u043d\u043e \u0434\u0435\u043b\u0430\u0442\u044c \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0443, \u0447\u0442\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 \u0438 \u043d\u0435 \u043f\u0440\u043e\u0441\u0440\u043e\u0447\u0435\u043d\u043d\u044b\u0439, \u043d\u043e \u0434\u043b\u044f \u044d\u0442\u043e\u0433\u043e <a href=\"https:\/\/docs.ansible.com\/ansible\/2.7\/modules\/openssl_certificate_module.html#requirements\" rel=\"noopener noreferrer nofollow\">\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f<\/a> \u0438\u043c\u0435\u0442\u044c \u043d\u0430 \u043a\u0430\u0436\u0434\u043e\u043c \u0445\u043e\u0441\u0442\u0435 python-pyOpenSSL.<\/p>\n<h3>Crontab<\/h3>\n<pre><code>23 3 * * * \/usr\/bin\/ansible-playbook \/etc\/ansible\/playbook-get-tls.yml -v &gt;&gt; \/var\/log\/get-tls.log 23 4 * * * \/usr\/bin\/ansible-playbook \/etc\/ansible\/playbook-copy-tls.yml -v &gt;&gt; \/var\/log\/copy-tls.log<\/code><\/pre>\n<p>\u041c\u043e\u0436\u043d\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0432\u044b\u0437\u044b\u0432\u0430\u0442\u044c \u0438\u0445 \u043a\u0430\u0436\u0434\u044b\u0439 \u0434\u0435\u043d\u044c, let&#8217;s encrypt \u0431\u0443\u0434\u0435\u0442 \u0432\u0435\u0436\u043b\u0438\u0432\u043e \u0433\u043e\u0432\u043e\u0440\u0438\u0442\u044c, \u0447\u0442\u043e \u043f\u043e\u043a\u0430 \u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c\u0441\u044f. \u0410 \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438\u0434\u0451\u0442 \u0441\u0440\u043e\u043a, \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u044b.<\/p>\n<h2>\u041c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432<\/h2>\n<p>\u041d\u0430\u0434\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u0442\u0435\u043c, \u0447\u0442\u043e \u0431\u044b \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043d\u0430 \u0434\u043e\u043c\u0435\u043d\u0430\u0445 \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u043b\u0438\u0441\u044c. \u041c\u043e\u0436\u043d\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u0442\u044c \u043b\u043e\u0433\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f, \u0438 \u043a\u043e\u0433\u0434\u0430 \u0447\u0442\u043e-\u0442\u043e \u0438\u0434\u0451\u0442 \u043d\u0435 \u0442\u0430\u043a &#8212; \u043a\u0438\u0434\u0430\u0442\u044c warning \u0432 \u0441\u0438\u0441\u0442\u0435\u043c\u0435 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430. \u041d\u043e \u043c\u044b \u043f\u043e\u0439\u0434\u0451\u043c \u0441 \u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u043e\u0440\u043e\u043d\u044b \u043d\u0430 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u043a\u0430\u0445, \u0441 \u0434\u0440\u0443\u0433\u043e\u0439 \u0431\u043e\u043b\u0435\u0435 \u043e\u0441\u043d\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u0435\u0449\u0451 \u043f\u043e\u043c\u0438\u043c\u043e \u044d\u0442\u043e\u0433\u043e \u0437\u0430\u0445\u0432\u0430\u0442\u0438\u043c \u0434\u0440\u0443\u0433\u0438\u0435 \u0438\u0441\u0442\u0430\u043b\u044f\u0446\u0438\u0438, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0441 traefik, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0436\u0438\u0432\u0451\u0442 \u0442\u0430\u043c \u0441\u0430\u043c \u043f\u043e \u0441\u0435\u0431\u0435.<\/p>\n<p>\u042f \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e zabbix \u0438 <a href=\"https:\/\/github.com\/selivan\/https-ssl-cert-check-zabbix\/blob\/master\/ssl_cert_check.sh\" rel=\"noopener noreferrer nofollow\">\u0441\u043a\u0440\u0438\u043f\u0442<\/a> \u043e\u0442 <a class=\"mention\" href=\"\/users\/selivanov_pavel\">@selivanov_pavel<\/a><\/p>\n<p> \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0441 \u0435\u0433\u043e \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043c\u043e\u0439 \u0434\u043e\u043c\u0435\u043d \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e<\/p>\n<pre><code>koala@x220 ~\/t\/acme.sh-test&gt; .\/ssl_cert_check.sh expire itdog.info 443 41<\/code><\/pre>\n<p>41 \u0434\u0435\u043d\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0430 itdog.info \u0431\u0443\u0434\u0435\u0442 \u0430\u043a\u0442\u0443\u0430\u043b\u0435\u043d. \u0421\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0432 let&#8217;s encrypt \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0437\u0430 30 \u0434\u043d\u0435\u0439 \u0434\u043e \u043f\u0440\u043e\u0442\u0443\u0445\u0430\u043d\u0438\u044f. \u0410 \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0435\u0441\u043b\u0438 \u0435\u043c\u0443 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u0436\u0438\u0442\u044c 10 \u0434\u043d\u0435\u0439, \u0437\u043d\u0430\u0447\u0438\u0442 \u0447\u0442\u043e-\u0442\u043e \u043f\u043e\u0448\u043b\u043e \u043d\u0435 \u0442\u0430\u043a \u0438 \u043d\u0430\u0434\u043e \u0438\u0434\u0442\u0438 \u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c.<\/p>\n<p>\u0422\u0435\u043c\u043f\u043b\u0435\u0439\u0442 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e item \u0438 \u043e\u0434\u043d\u043e\u0433\u043e trigger. \u0422\u0435\u043f\u043b\u0435\u0439\u0442 \u0435\u0441\u0442\u044c \u0442\u0430\u043a \u0436\u0435 \u043d\u0430 <a href=\"https:\/\/github.com\/itdoginfo\/acme.sh-ansible-automation\/blob\/main\/zbx-template-check-tls-expire.yaml\" rel=\"noopener noreferrer nofollow\">github<\/a><\/p>\n<pre><code>ssl_cert_check.sh[\"expire\",\"{HOST.NAME}\",\"{$TLS_PORT}\"]<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/24d\/fa6\/261\/24dfa6261a7adf1830895b11b56f28e7.png\" width=\"711\" height=\"322\"><figcaption><\/figcaption><\/figure>\n<p>\u0412 item \u0434\u0432\u0435 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445, \u043f\u0435\u0440\u0432\u0430\u044f HOST.NAME \u0431\u0435\u0440\u0451\u0442 \u0438\u043c\u044f \u0445\u043e\u0441\u0442\u0430, \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f \u0447\u0442\u043e \u0443 \u043d\u0430\u0441 \u0445\u043e\u0441\u0442 \u043d\u0430\u0437\u0432\u0430\u043d \u043f\u043e \u0434\u043e\u043c\u0435\u043d\u043d\u043e\u043c\u0443 \u0438\u043c\u0435\u043d\u0438. \u041f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0430\u044f $TLS_PORT \u043f\u043e \u0434\u0435\u0444\u043e\u043b\u0442\u0443 443, \u043d\u043e \u0435\u0441\u043b\u0438 \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043d\u0430 \u043d\u0435\u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u0442\u0443, \u0442\u043e \u0437\u0430\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0440\u0442\u0430 \u0432 macros. <\/p>\n<p>\u0422\u0440\u0438\u0433\u0433\u0435\u0440 \u0442\u043e\u0436\u0435 \u0441\u0443\u043f\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e\u0439<\/p>\n<pre><code>{Check tls expire:ssl_cert_check.sh[\"expire\",\"{HOST.NAME}\",\"{$TLS_PORT}\"].last()}&lt;=10<\/code><\/pre>\n<figure class=\"full-width\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/habrastorage.org\/getpro\/habr\/upload_files\/d86\/2ca\/d52\/d862cad5258dff7aa8e71ca4ba7ef77a.png\" width=\"635\" height=\"293\"><figcaption><\/figcaption><\/figure>\n<p>\u0415\u0441\u043b\u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043c\u0435\u043d\u044c\u0448\u0435 10\u0442\u0438 &#8212; \u0430\u043b\u043b\u0435\u0440\u0442. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, \u043c\u044b \u0443\u0437\u043d\u0430\u0435\u043c \u0435\u0441\u043b\u0438 \u0443 \u043d\u0430\u0441 \u043d\u0430\u0447\u043d\u0443\u0442 \u043f\u0440\u043e\u0442\u0443\u0445\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u0431\u0443\u0434\u0435\u0442 10 \u0434\u043d\u0435\u0439 \u043d\u0430 \u043f\u043e\u0447\u0438\u043d\u043a\u0443. <\/p>\n<h2>\u041d\u043e\u0440\u043c\u0430\u043b\u044c\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442?<\/h2>\n<p>\u0414\u0430, acme.sh + DNS API + ansible  \u0443 \u043c\u0435\u043d\u044f \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u0434\u0432\u0430 \u0433\u043e\u0434\u0430. acme.sh + DNS Alias + ansible \u043a\u0440\u0443\u0442\u0438\u0442\u0441\u044f \u043f\u043e\u043b \u0433\u043e\u0434\u0430. \u041f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u043b\u0438 \u0442\u043e\u043b\u044c\u043a\u043e, \u043a\u043e\u0433\u0434\u0430 \u043f\u0440\u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438 \u0434\u043e\u043c\u0435\u043d\u043e\u0432 \u0437\u0430\u0431\u044b\u043b \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c crontab \u0438 \u043e\u043d \u043f\u0440\u0438\u043d\u0451\u0441 staging \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043d\u0430 \u043f\u0440\u043e\u0434. \u0422\u0430\u043a\u0430\u044f \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0440\u0435\u0448\u0430\u0435\u0442\u0441\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u043e\u0439 \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c.<\/p>\n<p>\u0414\u0430, \u0432 \u0438\u0434\u0435\u0430\u043b\u0435, ansible \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c \u043f\u0435\u0440\u0435\u0434 \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c, \u0447\u0442\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u0439 \u0438 \u043d\u0435 \u043f\u0440\u043e\u0441\u0440\u043e\u0447\u0435\u043d\u043d\u044b\u0439. \u0410 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0430 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0442\u044c, \u043f\u043e\u043c\u0438\u043c\u043e expire, \u0432\u0430\u043b\u0438\u0434\u043d\u043e\u0441\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432.<\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/562026\/\"> https:\/\/habr.com\/ru\/post\/562026\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text_v2\" id=\"post-content-body\">\n<p>Acme.sh &#8212; \u0441\u043a\u0440\u0438\u043f\u0442, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0431\u0435\u0437 \u043e\u0441\u043e\u0431\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c let&#8217;s encrypt \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043e\u0447\u0435\u043d\u044c \u0440\u0430\u0437\u043d\u044b\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438. \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044f \u0440\u0430\u0437\u0431\u0435\u0440\u0443 \u043a\u0430\u043a \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0447\u0435\u0440\u0435\u0437 DNS api, \u043d\u043e \u044d\u0442\u0438\u043c \u0443\u0436\u0435 \u043d\u0438\u043a\u043e\u0433\u043e \u043d\u0435 \u0443\u0434\u0438\u0432\u0438\u0448\u044c, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0441\u0441\u043a\u0430\u0436\u0443 \u043f\u0440\u043e \u043c\u0435\u0442\u043e\u0434 DNS alias, \u043e\u043d \u0441\u0432\u0435\u0436\u0438\u0439 (\u0432\u0441\u0435\u0433\u043e <a href=\"https:\/\/community.letsencrypt.org\/t\/acme-sh-support-domain-alias-mode-now\/52700\" rel=\"noopener noreferrer nofollow\">3 \u0433\u043e\u0434\u0430<\/a>) \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439. \u0410 \u0442\u0430\u043a \u0436\u0435 \u043f\u0440\u043e \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044e \u043d\u0430 Ansible \u0438 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u043f\u0440\u043e \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432.<\/p>\n<p>\u0412\u0438\u0434\u0435\u043e\u0432\u0435\u0440\u0441\u0438\u044f<\/p>\n<p><iframe id=\"60c0e9ce8eee42c616d9c9ba\" src=\"https:\/\/embedd.srv.habr.com\/iframe\/60c0e9ce8eee42c616d9c9ba\" class=\"embed_video embed__content\" allowfullscreen=\"true\"><\/iframe><\/p>\n<p>\u0420\u0435\u0436\u0438\u043c\u044b acme.sh \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0432 \u043f\u0440\u044f\u043c\u043e \u043d\u0430 \u0446\u0435\u043b\u0435\u0432\u043e\u043c \u0441\u0435\u0440\u0432\u0435\u0440\u0435<\/p>\n<ul>\n<li>\n<p>Webroot<\/p>\n<\/li>\n<li>\n<p>Nginx\\Apache<\/p>\n<\/li>\n<li>\n<p>Stanalone<\/p>\n<\/li>\n<\/ul>\n<p>\u0420\u0435\u0436\u0438\u043c\u044b \u0445\u043e\u0440\u043e\u0448\u0438\u0435 \u0438 \u0443\u0434\u043e\u0431\u043d\u044b\u0435, \u043a\u043e\u0433\u0434\u0430 \u0443 \u0432\u0430\u0441 \u043e\u0434\u0438\u043d &#8212; \u0434\u0432\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0438 \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430 \u043a\u0430\u0436\u0434\u044b\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c acme.sh. \u041a\u043e\u0433\u0434\u0430 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043d\u0443\u0436\u043d\u043e TLS, \u043f\u0435\u0440\u0435\u0432\u0430\u043b\u0438\u0432\u0430\u0435\u0442 \u0437\u0430 \u0434\u0435\u0441\u044f\u0442\u043e\u043a, \u0443\u0434\u043e\u0431\u043d\u0435\u0435 \u043d\u0430\u0447\u0430\u0442\u044c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c wilcard \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0438 \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0435\u0440 \u0434\u043b\u044f \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u0438\u044f \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u0430\\\u043e\u0432. \u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c wildcard \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043c\u043e\u0436\u043d\u043e \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0435\u0440\u0435\u0437 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435 \u0432\u043b\u0430\u0434\u0435\u043d\u0438\u044f DNS \u0437\u043e\u043d\u043e\u0439. DNS \u0440\u0435\u0436\u0438\u043c\u043e\u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e:<\/p>\n<ul>\n<li>\n<p>DNS manual<\/p>\n<\/li>\n<li>\n<p>DNS API<\/p>\n<\/li>\n<li>\n<p>DNS alias<\/p>\n<\/li>\n<\/ul>\n<p>\u0412\u0441\u0435 \u043f\u0440\u0438\u043c\u0435\u0440\u044b \u0431\u0443\u0434\u0443 \u043f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u043c\u043e\u0451\u043c \u043b\u0438\u0447\u043d\u043e\u043c \u0434\u043e\u043c\u0435\u043d\u0435 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u043e\u043c \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e acme.sh.<\/p>\n<h2>DNS manual mode<\/h2>\n<p>Manual \u0440\u0435\u0436\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u0441\u0443\u043f\u0435\u0440 \u043f\u0440\u043e\u0441\u0442\u043e. \u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c acme.sh \u0441 \u0444\u043b\u0430\u0433\u043e\u043c &#8212;dns<\/p>\n<p><code>acme.sh --issue --dns -d *.itdog.info --yes-I-know-dns-manual-mode-enough-go-ahead-please<\/code><\/p>\n<pre><code>koala@x220:~$ acme.sh --issue --dns -d *.itdog.info --yes-I-know-dns-manual-mode-enough-go-ahead-please [\u0421\u0440 \u043c\u0430\u044f  5 14:52:29 MSK 2021] Using CA: https:\/\/acme-v02.api.letsencrypt.org\/directory [\u0421\u0440 \u043c\u0430\u044f  5 14:52:29 MSK 2021] Creating domain key [\u0421\u0440 \u043c\u0430\u044f  5 14:52:29 MSK 2021] The domain key is here: \/home\/koala\/.acme.sh\/*.itdog.info\/*.itdog.info.key [\u0421\u0440 \u043c\u0430\u044f  5 14:52:29 MSK 2021] Single domain='*.itdog.info' [\u0421\u0440 \u043c\u0430\u044f  5 14:52:29 MSK 2021] Getting domain auth token for each domain [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] Getting webroot for domain='*.itdog.info' [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] Add the following TXT record: [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] Domain: '_acme-challenge.itdog.info' [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] TXT value: 'QXRgFOfVOZGOBC1qxAToMNOf7Xsv9gjM8hYG6akRoJ8' [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] Please be aware that you prepend _acme-challenge. before your domain [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] so the resulting subdomain will be: _acme-challenge.itdog.info [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] Please add the TXT records to the domains, and re-run with --renew. [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] Please add '--debug' or '--log' to check more details. [\u0421\u0440 \u043c\u0430\u044f  5 14:52:32 MSK 2021] See: https:\/\/github.com\/acmesh-official\/acme.sh\/wiki\/How-to-debug-acme.sh<\/code><\/pre>\n<p><code>--issue<\/code> &#8212; \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u0435<\/p>\n<p><code>--dns<\/code> \u0431\u0435\u0437 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442\u0430 &#8212; \u0440\u0435\u0436\u0438\u043c \u0440\u0443\u0447\u043d\u043e\u0433\u043e DNS<\/p>\n<p><code>--yes-I-know-dns-manual-mode-enough-go-ahead-please<\/code> &#8212; \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e\u0435 <a href=\"https:\/\/github.com\/acmesh-official\/acme.sh\/issues\/1029\" rel=\"noopener noreferrer nofollow\">\u0440\u0435\u0448\u0435\u043d\u0438\u0435<\/a> \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b, \u043a\u043e\u0433\u0434\u0430 \u043b\u044e\u0434\u0438 \u043d\u0435 \u043f\u043e\u043d\u0438\u043c\u0430\u044e\u0442 \u0447\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0440\u0443\u0447\u043d\u043e\u0439 \u0440\u0435\u0436\u0438\u043c<\/p>\n<p>\u041e\u043d \u0432\u044b\u0434\u0430\u0451\u0442 TXT \u0437\u0430\u043f\u0438\u0441\u044c, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043d\u0430\u043c \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u043d\u0430\u0448 dns \u0445\u043e\u0441\u0442\u0438\u043d\u0433, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e <code>_acme-challenge.itdog.info TXT QXRgFOfVOZGOBC1qxAToMNOf7Xsv9gjM8hYG6akRoJ8<\/code><\/p>\n<p>\u0420\u0443\u0447\u043d\u043e\u0439 \u043e\u043d \u043f\u043e\u0442\u043e\u043c\u0443 \u0447\u0442\u043e, \u043c\u044b \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u044d\u0442\u0443 \u0437\u0430\u043f\u0438\u0441\u044c.<\/p>\n<figure class=\"full-width\"><figcaption>\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f manual mode<\/figcaption><\/figure>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0434\u043e\u0436\u0434\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0435-\u0442\u043e \u0432\u0440\u0435\u043c\u044f, \u0447\u0442\u043e \u0431\u044b \u0437\u0430\u043f\u0438\u0441\u044c \u0437\u0430\u0440\u0435\u0437\u043e\u043b\u0432\u0438\u043b\u0430\u0441\u044c \u0438 \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u0442\u0430\u043a\u0443\u044e \u0436\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u0443, \u0442\u043e\u043b\u044c\u043a\u043e \u0441 &#8212;renew<\/p>\n<p>\u041f\u043e\u0441\u043b\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0437\u0430\u043f\u0438\u0441\u0438 \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u043d\u0430\u0447\u0430\u043b\u0430 \u043b\u0438 \u043e\u043d\u0430 \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442\u0441\u044f \u043d\u0430 \u0433\u0443\u0433\u043b\u043e\u0432\u043e\u043c dns<\/p>\n<pre><code>koala@x220:~$ dig -t txt _acme-challenge.itdog.info @8.8.8.8  ; &lt;&lt;&gt;&gt; DiG 9.11.3-1ubuntu1.15-Ubuntu &lt;&lt;&gt;&gt; -t txt _acme-challenge.itdog.info @8.8.8.8  ;; ANSWER SECTION: _acme-challenge.itdog.info. 1798 IN    TXT    \"QXRgFOfVOZGOBC1qxAToMNOf7Xsv9gjM8hYG6akRoJ8\"<\/code><\/pre>\n<p>\u041e\u043d\u0430 \u0440\u0435\u0437\u043e\u043b\u0432\u0438\u0442\u0441\u044f, \u0430 \u0437\u043d\u0430\u0447\u0438\u0442 \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442<\/p>\n<pre><code>koala@x220:~$ acme.sh --renew --dns -d *.itdog.info --yes-I-know-dns-manual-mode-enough-go-ahead-please [\u0421\u0440 \u043c\u0430\u044f  5 14:58:08 MSK 2021] Renew: '*.itdog.info' [\u0421\u0440 \u043c\u0430\u044f  5 14:58:09 MSK 2021] Using CA: https:\/\/acme-v02.api.letsencrypt.org\/directory [\u0421\u0440 \u043c\u0430\u044f  5 14:58:09 MSK 2021] Single domain='*.itdog.info' [\u0421\u0440 \u043c\u0430\u044f  5 14:58:09 MSK 2021] Getting domain auth token for each domain [\u0421\u0440 \u043c\u0430\u044f  5 14:58:09 MSK 2021] Verifying: *.itdog.info [\u0421\u0440 \u043c\u0430\u044f  5 14:58:13 MSK 2021] Success [\u0421\u0440 \u043c\u0430\u044f  5 14:58:13 MSK 2021] Verify finished, start to sign. [\u0421\u0440 \u043c\u0430\u044f  5 14:58:13 MSK 2021] Lets finalize the order. [\u0421\u0440 \u043c\u0430\u044f  5 14:58:13 MSK 2021] Le_OrderFinalize='https:\/\/acme-v02.api.letsencrypt.org\/acme\/finalize\/121...' [\u0421\u0440 \u043c\u0430\u044f  5 14:58:15 MSK 2021] Downloading cert. [\u0421\u0440 \u043c\u0430\u044f  5 14:58:15 MSK 2021] Le_LinkCert='https:\/\/acme-v02.api.letsencrypt.org\/acme\/cert\/042...' [\u0421\u0440 \u043c\u0430\u044f  5 14:58:16 MSK 2021] Cert success. -----BEGIN CERTIFICATE----- certificate -----END CERTIFICATE----- [\u0421\u0440 \u043c\u0430\u044f  5 14:58:16 MSK 2021] Your cert is in  \/home\/koala\/.acme.sh\/*.itdog.info\/*.itdog.info.cer  [\u0421\u0440 \u043c\u0430\u044f  5 14:58:16 MSK 2021] Your cert key is in  \/home\/koala\/.acme.sh\/*.itdog.info\/*.itdog.info.key  [\u0421\u0440 \u043c\u0430\u044f  5 14:58:16 MSK 2021] The intermediate CA cert is in  \/home\/koala\/.acme.sh\/*.itdog.info\/ca.cer  [\u0421\u0440 \u043c\u0430\u044f  5 14:58:16 MSK 2021] And the full chain certs is there:  \/home\/koala\/.acme.sh\/*.itdog.info\/fullchain.cer <\/code><\/pre>\n<p>\u041f\u043e\u0441\u043b\u0435 \u044d\u0442\u043e\u0433\u043e TXT \u0437\u0430\u043f\u0438\u0441\u044c \u043c\u043e\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c.<\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u0435\u0441\u0442\u044c \u043a\u043b\u044e\u0447 \u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u0443\u0434\u0435\u0442 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u0435\u043d 3 \u043c\u0435\u0441\u044f\u0446\u0430. \u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442 \u043c\u043e\u0436\u043d\u043e \u0431\u0443\u0434\u0435\u0442 \u0447\u0435\u0440\u0435\u0437 2 \u043c\u0435\u0441\u044f\u0446\u0430, let&#8217;s enctypt \u0434\u0430\u0451\u0442 \u0437\u0430\u043f\u0430\u0441 \u0432\u0440\u0435\u043c\u0435\u043d\u0438 \u0438 \u0435\u0441\u043b\u0438 \u0443 \u0432\u0430\u0441 \u0432\u0434\u0440\u0443\u0433 \u0447\u0442\u043e-\u0442\u043e \u0441\u043b\u043e\u043c\u0430\u0435\u0442\u0441\u044f, \u0431\u0443\u0434\u0435\u0442 \u0446\u0435\u043b\u044b\u0439 \u043c\u0435\u0441\u044f\u0446 \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u0447\u0438\u043d\u0438\u0442\u044c \u0438 \u043e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442.<\/p>\n<p>\u0418 \u0434\u0430, \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442, \u043a\u043b\u044e\u0447 \u043e\u0441\u0442\u0430\u0451\u0442\u0441\u044f \u0442\u0430\u043a\u0438\u043c, \u043a\u0430\u043a\u043e\u0439 \u0431\u044b\u043b \u0432\u044b\u0434\u0430\u043d \u0432 \u043f\u0435\u0440\u0432\u044b\u0439 \u0440\u0430\u0437. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0430\u0442\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0444\u0430\u0439\u043b\u043e\u0432, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e *.example.com.key<\/p>\n<pre><code># ls -l --time-style=+%Y-%m-%d \\*.example.com\/ total 28 -rw-r--r-- 1 root root 1587 2021-04-15 ca.cer -rw-r--r-- 1 root root 3433 2021-04-15 fullchain.cer -rw-r--r-- 1 root root 1846 2021-04-15 *.example.com.cer -rw-r--r-- 1 root root  719 2021-04-15 *.example.com.conf -rw-r--r-- 1 root root  980 2021-04-15 *.example.com.csr -rw-r--r-- 1 root root  211 2021-04-15 *.example.com.csr.conf -rw-r--r-- 1 root root 1675 2019-04-10 *.example.com.key<\/code><\/pre>\n<p>\u0425\u043e\u0440\u043e\u0448\u0438\u0439 \u0440\u0435\u0436\u0438\u043c \u0434\u043b\u044f \u043e\u0434\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0430 \u0438\u043b\u0438 \u0434\u043b\u044f \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435, \u043d\u043e \u043d\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043a\u0435 \u043a\u0430\u0436\u0434\u044b\u0435 2 \u043c\u0435\u0441\u044f\u0446\u0430 \u0432\u0440\u0443\u0447\u043d\u0443\u044e \u043e\u0431\u043d\u043e\u0432\u043b\u044f\u0442\u044c TXT \u0437\u0430\u043f\u0438\u0441\u0438 \u043d\u0435 \u0441\u0435\u0440\u044c\u0451\u0437\u043d\u043e, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0440\u0435\u0436\u0438\u043c.<\/p>\n<h3>DNS API mode<\/h3>\n<p>\u041a\u0430\u043a \u044d\u0442\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442? \u041f\u0440\u0438\u043d\u0446\u0438\u043f \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044f \u0442\u043e\u0442 \u0436\u0435 \u0441\u0430\u043c\u044b\u0439 \u0447\u0442\u043e \u0443 manual, \u0442\u043e\u043b\u044c\u043a\u043e acme.sh \u0441\u0430\u043c \u0432\u043d\u043e\u0441\u0438\u0442 \u0438 \u0443\u0434\u0430\u043b\u044f\u0435\u0442 TXT \u0437\u0430\u043f\u0438\u0441\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e API \u0432\u0430\u0448\u0435\u0433\u043e dns \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430. <\/p>\n<figure class=\"full-width\"><figcaption>\u0410\u043d\u0438\u043c\u0430\u0446\u0438\u044f API mode<\/figcaption><\/figure>\n<p>\u041f\u043e\u0434 DNS \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u043e\u043c \u0438 DNS \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u043c \u044f \u0431\u0443\u0434\u0443 \u0438\u043c\u0435\u0442\u044c \u0432 \u0432\u0438\u0434\u0443 \u0441\u0435\u0440\u0432\u0438\u0441, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043d\u043e\u0441\u044f\u0442\u0441\u044f DNS \u0437\u0430\u043f\u0438\u0441\u0438. \u042d\u0442\u043e \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0438 DNS \u0445\u043e\u0441\u0442\u0438\u043d\u0433, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0435\u0441\u0442\u044c \u043f\u043e\u0447\u0442\u0438 \u0443 \u043a\u0430\u0436\u0434\u043e\u0439 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0438, \u0442\u043e\u0440\u0433\u0443\u044e\u0449\u0435\u0439 \u0434\u043e\u043c\u0435\u043d\u0430\u043c\u0438 (namecheap, beget \u0438\u0442\u0434) \u0438\u043b\u0438 \u043a\u0430\u043a \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0437\u0430 \u0434\u0435\u043d\u044c\u0433\u0438 (Amazon Route 53, ClouDNS \u0438\u0442\u0434), \u0438\u043b\u0438 \u0436\u0435 \u0432\u0430\u0448 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u0440\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044b\u0439 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e BIND, PowerDNS \u0438\u0442\u0434.<\/p>\n<p>\u0423 \u043a\u0430\u0436\u0434\u043e\u0433\u043e DNS \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0441\u0432\u043e\u0439 \u043d\u0435 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 API \u0438 \u0438\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0432 acme.sh \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u0430 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u043c\u0438 <a href=\"https:\/\/github.com\/acmesh-official\/acme.sh\/tree\/master\/dnsapi\" rel=\"noopener noreferrer nofollow\">\u0441\u043a\u0440\u0438\u043f\u0442\u0430\u043c\u0438<\/a>. \u0421\u043f\u0438\u0441\u043e\u043a \u0432\u0441\u0435\u0445 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u043e\u0432 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0442\u0443\u0442 <a href=\"https:\/\/github.com\/acmesh-official\/acme.sh\/wiki\/dnsapi\" rel=\"noopener noreferrer nofollow\">https:\/\/github.com\/acmesh-official\/acme.sh\/wiki\/dnsapi<\/a><\/p>\n<p>\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u043a\u0430\u043a \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0438 \u043f\u0440\u0438\u043c\u0435\u0440. \u0415\u0441\u043b\u0438 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0438\u043b\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430 \u043d\u0435\u0442 \u0432 \u0441\u043f\u0438\u0441\u043a\u0435, \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0432\u043e\u0439 \u0441\u043a\u0440\u0438\u043f\u0442, \u043d\u043e \u043d\u0435 \u0441\u043f\u0435\u0448\u0438\u0442\u0435 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c vim, \u0434\u043e\u0436\u0434\u0438\u0442\u0435\u0441\u044c \u0442\u0440\u0435\u0442\u044c\u0435\u0433\u043e \u0441\u043f\u043e\u0441\u043e\u0431\u0430.<\/p>\n<p>\u0420\u0430\u0431\u043e\u0442\u0443 \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0436\u0438\u043c\u0430 \u043f\u043e\u043a\u0430\u0436\u0443 \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 DNS \u0443 <a href=\"https:\/\/github.com\/acmesh-official\/acme.sh\/wiki\/dnsapi#53-use-namecheap\" rel=\"noopener noreferrer nofollow\">namecheap<\/a>.<\/p>\n<p>\u0414\u043b\u044f \u043a\u0430\u0436\u0434\u043e\u0433\u043e DNS \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430 \u0441\u0432\u043e\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438, \u0433\u0434\u0435-\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c API \u0438 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0442\u043e\u043a\u0435\u043d, \u0433\u0434\u0435-\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043f\u043e\u0441\u043b\u043e\u0436\u043d\u0435\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440 \u0434\u043b\u044f namecheap \u043d\u0443\u0436\u043d\u043e \u0435\u0449\u0451 \u0432\u043d\u0435\u0441\u0442\u0438 IP  \u0432 allow list. \u0412\u043a\u043b\u044e\u0447\u0430\u0435\u043c API \u0438 \u0441\u0440\u0430\u0437\u0443 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442\u0441\u044f token, \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c IP \u0432 \u0441\u043f\u0438\u0441\u043e\u043a. <\/p>\n<figure class=\"full-width\"><figcaption><\/figcaption><\/figure>\n<p> \u0422\u0435\u043f\u0435\u0440\u044c \u043d\u0430 \u043b\u043e\u043a\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0438\u0442\u044c \u0434\u043e\u0441\u0442\u0443\u043f \u043a API <\/p>\n<pre><code>export NAMECHEAP_USERNAME=\"USERNAME\" export NAMECHEAP_API_KEY=\"TOKEN\" export NAMECHEAP_SOURCEIP=\"MY-IP\"<\/code><\/pre>\n<blockquote>\n<p>\u041e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u043f\u0440\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u0444\u043b\u0430\u0433\u0438 force \u0438 test. \u0411\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043b\u0430\u0433 -f (&#8212;force), \u0447\u0442\u043e \u0431\u044b \u043d\u0430\u0448\u0438 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0437\u0430\u043d\u043e\u0432\u043e, \u0442.\u043a. acme.sh \u0432\u0438\u0434\u0438\u0442 \u0443\u0436\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u0441\u0435\u0440\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u044b \u043f\u0440\u0438 \u0438\u0445 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u043d\u043e\u0432\u043e \u043f\u043e\u043b\u0443\u0447\u0430\u0442\u044c. \u041c\u043e\u0436\u043d\u043e \u043a\u043e\u043d\u0435\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u0442\u044c <code>rm -rf ~\/.acme.sh\/domain\/<\/code> \u0432\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e. \u0422\u0430\u043a \u0436\u0435 \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0444\u043b\u0430\u0433 &#8212;test, \u0447\u0442\u043e \u0431\u044b \u043b\u0438\u0448\u043d\u0438\u0439 \u0440\u0430\u0437 \u043d\u0435 \u043d\u0430\u0433\u0440\u0443\u0436\u0430\u0442\u044c \u043f\u0440\u043e\u0434\u0430\u043a\u0448\u043d \u0441\u0435\u0440\u0432\u0435\u0440\u0430 let&#8217;s encrypt. \u0412\u043e\u0442 \u0442\u0430\u043a\u043e\u0435 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043c\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u043c, \u0435\u0441\u043b\u0438 \u043f\u043e\u0441\u043b\u0435 \u043f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u044f \u0432 manual \u0440\u0435\u0436\u0438\u043c\u0435 \u043f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0434\u0440\u0443\u0433\u043e\u0439 \u0440\u0435\u0436\u0438\u043c.<\/p>\n<p><code>[\u0421\u0440 \u043c\u0430\u044f  5 16:39:31 MSK 2021] *.itdog.info is  already verified, skip dns-01. <\/code> <\/p>\n<\/blockquote>\n<p>\u041a\u043e\u043c\u0430\u043d\u0434\u0430 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044f \u0447\u0435\u0440\u0435\u0437 API \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c<\/p>\n<pre><code>acme.sh --issue --dns dns_namecheap -d *.itdog.info --test<\/code><\/pre>\n<p>\u0417\u0434\u0435\u0441\u044c \u043f\u043e\u0441\u043b\u0435 &#8212;dns \u043c\u044b \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0438\u043c\u044f \u043f\u0440\u043e\u0432\u0430\u0439\u0434\u0435\u0440\u0430.<\/p>\n<p>\u0417\u0430\u043f\u0443\u0441\u043a\u0430\u0435\u043c acme.sh<\/p>\n<details class=\"spoiler\">\n<summary>\u0420\u0430\u0441\u043a\u0440\u044b\u0442\u044c<\/summary>\n<div class=\"spoiler__content\">\n<pre><code>koala@x220:~$ acme.sh --issue --dns dns_namecheap -d *.itdog.info --test [\u0421\u0440 \u043c\u0430\u044f  5 16:48:05 MSK 2021] Using ACME_DIRECTORY: https:\/\/acme-staging-v02.api.letsencrypt.org\/directory [\u0421\u0440 \u043c\u0430\u044f  5 16:48:06 MSK 2021] Using CA: https:\/\/acme-staging-v02.api.letsencrypt.org\/directory [\u0421\u0440 \u043c\u0430\u044f  5 16:48:06 MSK 2021] Creating domain key [\u0421\u0440 \u043c\u0430\u044f  5 16:48:07 MSK 2021] The domain key is here: \/home\/koala\/.acme.sh\/*.itdog.info\/*.itdog.info.key [\u0421\u0440 \u043c\u0430\u044f  5 16:48:07 MSK 2021] Single domain='*.itdog.info' [\u0421\u0440 \u043c\u0430\u044f  5 16:48:07 MSK 2021] Getting domain auth token for each domain [\u0421\u0440 \u043c\u0430\u044f  5 16:48:09 MSK 2021] Getting webroot for domain='*.itdog.info' [\u0421\u0440 \u043c\u0430\u044f  5 16:48:10 MSK 2021] Adding txt value: nCH4tBWCkSVn76301f2SdJqCAzmtXvzQAB_Ag8hURLo for domain:  _acme-challenge.itdog.info [\u0421\u0440 \u043c\u0430\u044f  5 16:48:15 MSK 2021] The txt record is added: Success. [\u0421\u0440 \u043c\u0430\u044f  5 16:48:15 MSK 2021] Let's check each DNS record now. Sleep 20 seconds first. [\u0421\u0440 \u043c\u0430\u044f  5 16:48:36 MSK 2021] You can use '--dnssleep' to disable public dns checks. [\u0421\u0440 \u043c\u0430\u044f  5 16:48:36 MSK 2021] See: https:\/\/github.com\/acmesh-official\/acme.sh\/wiki\/dnscheck [\u0421\u0440 \u043c\u0430\u044f  5 16:48:36 MSK 2021] Checking itdog.info for _acme-challenge.itdog.info [\u0421\u0440 \u043c\u0430\u044f  5 16:48:37 MSK 2021] Domain itdog.info '_acme-challenge.itdog.info' success. [\u0421\u0440 \u043c\u0430\u044f  5 16:48:37 MSK 2021] All success, let's return [\u0421\u0440 \u043c\u0430\u044f  5 16:48:37 MSK 2021] Verifying: *.itdog.info [\u0421\u0440 \u043c\u0430\u044f  5 16:48:41 MSK 2021] Success [\u0421\u0440 \u043c\u0430\u044f  5 16:48:41 MSK 2021] Removing DNS records. [\u0421\u0440 \u043c\u0430\u044f  5 16:48:41 MSK 2021] Removing txt: nCH4tBWCkSVn76301f2SdJqCAzmtXvzQAB_Ag8hURLo for domain: _acme-challenge.itdog.info [\u0421\u0440 \u043c\u0430\u044f  5 16:48:46 MSK 2021] Removed: Success [\u0421\u0440 \u043c\u0430\u044f  5 16:48:46 MSK 2021] Verify finished, start to sign. [\u0421\u0440 \u043c\u0430\u044f  5 16:48:46 MSK 2021] Lets finalize the order. [\u0421\u0440 \u043c\u0430\u044f  5 16:48:46 MSK 2021] Le_OrderFinalize='https:\/\/acme-staging-v02.api.letsencrypt.org\/acme\/finalize\/193...' [\u0421\u0440 \u043c\u0430\u044f  5 16:48:48 MSK 2021] Downloading cert. [\u0421\u0440 \u043c\u0430\u044f  5 16:48:48 MSK 2021]<\/code><\/pre>\n<\/div>\n<\/details>\n<\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-324667","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/324667","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=324667"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/324667\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=324667"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=324667"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=324667"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}