На ΠΏΡƒΡ‚ΠΈ ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ выпуска SSL

Достаточно часто Π½Π°ΠΌ приходится Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с SSL сСртификатами. Π”Π°Π²Π°ΠΉΡ‚Π΅ вспомним процСсс создания ΠΈ установки сСртификата (Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π°).

  • Найти ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° (сайт Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΊΡƒΠΏΠΈΡ‚ΡŒ SSL).
  • Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ CSR.
  • ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Ρƒ.
  • ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½ΠΎΠΌ.
  • ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ сСртификат.
  • ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ сСртификат Π² Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ„ΠΎΡ€ΠΌΡƒ (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ). НапримСр, ΠΈΠ· pem Π² PKCS #12.
  • Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сСртификат Π½Π° Π²Π΅Π± сСрвСр.

ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ быстро, Π½Π΅ слоТно ΠΈ понятно. Π­Ρ‚ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π²ΠΏΠΎΠ»Π½Π΅ годится, Ссли Ρƒ нас Π΅ΡΡ‚ΡŒ максимум дСсяток ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ². А Ссли ΠΈΡ… большС, ΠΈ Ρƒ Π½ΠΈΡ… ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΏΠΎ Ρ‚Ρ€ΠΈ окруТСния? ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ dev β€” staging β€” production. Π’ этом случаС стоит Π·Π°Π΄ΡƒΠΌΠ°Ρ‚ΡŒΡΡ ΠΎΠ± Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ этого процСсса. ΠŸΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΡƒΠ³Π»ΡƒΠ±ΠΈΡ‚ΡŒΡΡ Π² ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ Π½Π°ΠΉΡ‚ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² дальнСйшСм ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ Π½Π° созданиС ΠΈ обслуТиваниС сСртификатов. Π’ ΡΡ‚Π°Ρ‚ΡŒΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΈΠ· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ нСбольшоС руководство ΠΊ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΡŽ.

Π—Π°Ρ€Π°Π½Π΅Π΅ ΠΎΠ³ΠΎΠ²ΠΎΡ€ΡŽΡΡŒ: основная спСциализация нашСй ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ β€” .net, Π° соотвСтствСнно IIS ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ Π²ΠΈΠ½Π΄ΠΎΠ²Ρ‹Π΅ Π²Ρ‹Ρ‚Π΅ΠΊΠ°ΡŽΡ‰ΠΈΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ACME ΠΊΠ»ΠΈΠ΅Π½Ρ‚ ΠΈ всС дСйствия для Π½Π΅Π³ΠΎ Ρ‚ΠΎΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ описаны с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния использования windows.

Для ΠΊΠΎΠ³ΠΎ это Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎ ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ исходныС Π΄Π°Π½Π½Ρ‹Π΅

Компания К Π² Π»ΠΈΡ†Π΅ Π°Π²Ρ‚ΠΎΡ€Π°. URL (для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°): company.tld

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ X β€” ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², занимаясь ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ я ΠΏΡ€ΠΈΡˆΠ΅Π» ΠΊ Π²Ρ‹Π²ΠΎΠ΄Ρƒ Ρ‡Ρ‚ΠΎ всС Ρ‚Π°ΠΊΠΈ Π½ΡƒΠΆΠ½ΠΎ Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒΡΡ Π² сторону максимальной экономии Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с сСртификатами. Π£ этого ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ΡΡ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ окруТСния: dev, test, staging ΠΈ production. Dev ΠΈ test находятся Π½Π° нашСй сторонС, staging ΠΈ production Π½Π° клиСнтской.

ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρƒ Π½Π΅Π³ΠΎ Π΅ΡΡ‚ΡŒ большоС количСство ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ доступны ΠΊΠ°ΠΊ ΠΏΠΎΠ΄Π΄ΠΎΠΌΠ΅Π½Ρ‹.

Π’ΠΎ-Π΅ΡΡ‚ΡŒ, ΠΈΠΌΠ΅Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ:

Dev
Test
Staging
Production

projectX.dev.company.tld
projectX.test.company.tld
staging.projectX.tld
projectX.tld

module1.projectX.dev.company.tld
module1.projectX.test.company.tld
module1.staging.projectX.tld
module1.projectX.tld

module2.projectX.dev.company.tld
module2.projectX.test.company.tld
module2.staging.projectX.tld
module2.projectX.tld




moduleN.projectX.dev.company.tld
moduleN.projectX.test.company.tld
moduleN.staging.projectX.tld
moduleN.projectX.tld

Для production ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΊΡƒΠΏΠ»Π΅Π½Π½Ρ‹ΠΉ wildcard сСртификат, Ρ‚ΡƒΡ‚ вопросов Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚. Но ΠΎΠ½ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ ΠΏΠΎΠ΄Π΄ΠΎΠΌΠ΅Π½Π°. БоотвСтствСнно, Ссли Π΅ΡΡ‚ΡŒ сСртификат для *.projectX.tld β€” Ρ‚ΠΎ для staging.projectX.tld ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚, Π° Π²ΠΎΡ‚ для module1.staging.projectX.tld ΡƒΠΆΠ΅ Π½Π΅Ρ‚. А ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°ΠΊ-Ρ‚ΠΎ Π½Π΅ хочСтся.

И это Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ. А ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, СстСствСнно, Π½Π΅ ΠΎΠ΄ΠΈΠ½.

ΠžΠ±Ρ‰ΠΈΠ΅ для всСх ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ Π·Π°Π½ΡΡ‚ΡŒΡΡ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ этого вопроса выглядят ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

  • ΠžΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π΅Π΄Π°Π²Π½ΠΎ Google ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ срок дСйствия SSL сСртификатов. Π‘ΠΎ всСми Π²Ρ‹Ρ‚Π΅ΠΊΠ°ΡŽΡ‰ΠΈΠΌΠΈ.
  • ΠžΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ процСсс выпуска ΠΈ обслуТивания SSL для Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Π½ΡƒΠΆΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π² Ρ†Π΅Π»ΠΎΠΌ.
  • Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ записСй ΠΎ сСртификатах, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ частично Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ подтвСрТдСния Π΄ΠΎΠΌΠ΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DNS ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ автоматичСского обновлСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ вопрос довСрия ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°. ВсС ΠΆΠ΅, большС довСрия Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ CNAME Π½Π° сСрвСр ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€Π°/исполнитСля, Ρ‡Π΅ΠΌ Π½Π° сторонний рСсурс.
  • Ну, ΠΈ Π½Π°ΠΊΠΎΠ½Π΅Ρ†, Π² этом случаС Ρ„Ρ€Π°Π·Π° β€œΠ»ΡƒΡ‡ΡˆΠ΅ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‡Π΅ΠΌ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒβ€ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ.

Π’Ρ‹Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€Π° SSL ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ шаги

Из доступных Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² бСсплатных SSL сСртификатов Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Π»ΠΈΡΡŒ cloudflare ΠΈ letsencrypt. DNS для этого (ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ²) ΠΊΠ°ΠΊ располагаСтся Π½Π° cloudflare, Π½ΠΎ я Π½Π΅ сторонник использования ΠΈΡ… сСртификатов. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π±Ρ‹Π»ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ letsencrypt.
Для создания wildcard SSL сСртификата Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ Π²Π»Π°Π΄Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½ΠΎΠΌ. Π­Ρ‚Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ созданиС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ DNS записи (TXT ΠΈΠ»ΠΈ CNAME), с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π΅Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ ΠΏΡ€ΠΈ выпускС сСртификата. Π’ Linux Π΅ΡΡ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° β€” certbot, которая позволяСт частично (ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… DNS ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ΠΎΠ²) Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот процСсс. Для Windows ΠΆΠ΅ ΠΈΠ· Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ACME ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² я остановился Π½Π° WinACME.

А запись для Π΄ΠΎΠΌΠ΅Π½Π° создана, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ созданию сСртификата:

На ΠΏΡƒΡ‚ΠΈ ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ выпуска SSL

Нас интСрСсуСт послСдний Π²Ρ‹Π²ΠΎΠ΄, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ β€” доступныС Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ подтвСрТдСния владСния Π΄ΠΎΠΌΠ΅Π½ΠΎΠΌ для выпуска wildcard сСртификата:

  1. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ DNS записСй Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ (автоматичСскоС ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π½Π΅ поддСрТиваСтся)
  2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ DNS записСй с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ acme-dns сСрвСра (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ‚ΡƒΡ‚.
  3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ DNS записСй с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ собствСнного скрипта (Π°Π½Π°Π»ΠΎΠ³ ΠΏΠ»Π°Π³ΠΈΠ½Π° cloudflare для certbot).

На ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд, Ρ‚Ρ€Π΅Ρ‚ΠΈΠΉ ΠΏΡƒΠ½ΠΊΡ‚ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚, Π½ΠΎ Ссли DNS ΠΏΡ€ΠΎΠ²Π°ΠΉΠ΄Π΅Ρ€ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ этот Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»? А Π½Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ ΠΎΠ±Ρ‰ΠΈΠΉ случай. А ΠΎΠ±Ρ‰ΠΈΠΉ случай β€” это CNAME записи, ΡƒΠΆ ΠΈΡ… Ρ‚ΠΎ всС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, останавливаСмся Π½Π° ΠΏΡƒΠ½ΠΊΡ‚Π΅ 2, ΠΈ ΠΈΠ΄Π΅ΠΌ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ свой ACME-DNS сСрвСр.

Настройка ACME-DNS сСрвСра ΠΈ процСсс выпуска сСртификата

Для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°, я создал Π΄ΠΎΠΌΠ΅Π½ 2nd.pp.ua, ΠΈ Π² дальнСйшСм Π±ΡƒΠ΄Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ.

ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ для ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвСра являСтся созданиС NS ΠΈ А записи для Π΅Π³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π°. И ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ нСприятный ΠΌΠΎΠΌΠ΅Π½Ρ‚ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ я столкнулся β€” cloudflare (ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅ Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ бСсплатного использования) Π½Π΅ позволяСт ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ NS ΠΈ A запись для ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ хоста. НС Ρ‚ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ это Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π½ΠΎ Π² bind это ΠΌΠΎΠΆΠ½ΠΎ. Π‘Π°ΠΏΠΏΠΎΡ€Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ ΠΈΡ… панСль Ρ‚Π°ΠΊ Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ позволяСт. НС Π±Π΅Π΄Π°, создадим Π΄Π²Π΅ записи:

acmens.2nd.pp.ua. IN A 35.237.128.147
acme.2nd.pp.ua. IN NS acmens.2nd.pp.ua.

На Π΄Π°Π½Π½ΠΎΠΌ этапС Ρƒ нас Π΄ΠΎΠ»ΠΆΠ΅Π½ Ρ€Π΅Π·ΠΎΠ»Π²ΠΈΡ‚ΡŒΡΡ хост acmens.2nd.pp.ua.

$ ping acmens.2nd.pp.ua
PING acmens.2nd.pp.ua (35.237.128.147) 56(84) bytes of data

А Π²ΠΎΡ‚ acme.2nd.pp.ua Ρ€Π΅Π·ΠΎΠ»Π²ΠΈΡ‚ΡŒΡΡ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ DNS сСрвСр ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΅Π³ΠΎ обслуТиваСт Π΅Ρ‰Π΅ Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½.

Записи созданы, ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΠΌ ΠΊ настройкС ΠΈ запуску ACME-DNS сСрвСра. Π–ΠΈΡ‚ΡŒ ΠΎΠ½ Ρƒ мСня Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° ubuntu server Π² docker ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅, Π½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅Π·Π΄Π΅ Π³Π΄Π΅ Π΅ΡΡ‚ΡŒ golang. Windows Ρ‚ΠΎΠΆΠ΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚, Π½ΠΎ я всС ΠΆΠ΅ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽ Linux сСрвСр.

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΈ Ρ„Π°ΠΉΠ»Ρ‹:

$ mkdir config
$ mkdir data
$ touch config/config.cfg

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ vim вашим Π»ΡŽΠ±ΠΈΠΌΡ‹ΠΌ тСкстовым Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ вставим Π² config.cfg ΠΎΠ±Ρ€Π°Π·Π΅Ρ† ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

Для ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ достаточно ΠΏΠΎΠ΄ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ сСкции general ΠΈ api:

[general]
listen = "0.0.0.0:53"
protocol = "both"
domain = "acme.2nd.pp.ua"
nsname = "acmens.2nd.pp.ua" 
nsadmin = "admin.2nd.pp.ua" 
records = 
    "acme.2nd.pp.ua. A 35.237.128.147",
    "acme.2nd.pp.ua. NS acmens.2nd.pp.ua.",                                                                                                                                                                                                  ]
...
[api]
...
tls = "letsencrypt"
…

Π’Π°ΠΊΠΆΠ΅, ΠΏΠΎ ТСланию, создадим docker-compose Ρ„Π°ΠΉΠ» Π² основной Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ сСрвиса:

version: '3.7'
services:
  acmedns:
    image: joohoi/acme-dns:latest
    ports:
      - "443:443"
      - "53:53"
      - "53:53/udp"
      - "80:80"
    volumes:
      - ./config:/etc/acme-dns:ro
      - ./data:/var/lib/acme-dns

Π“ΠΎΡ‚ΠΎΠ²ΠΎ. МоТно Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ.

$ docker-compose up -d

На Π΄Π°Π½Π½ΠΎΠΌ этапС Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π΅Π·ΠΎΠ»Π²ΠΈΡ‚ΡŒΡΡ хост acme.2nd.pp.ua, ΠΈ ΠΏΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ 404 Π½Π° https://acme.2nd.pp.ua

$ ping acme.2nd.pp.ua
PING acme.2nd.pp.ua (35.237.128.147) 56(84) bytes of data.

$ curl https://acme.2nd.pp.ua
404 page not found

Если этого Π½Π΅ появилось β€” docker logs -f <container_name> Π² ΠΏΠΎΠΌΠΎΡ‰ΡŒ, Π±Π»Π°Π³ΠΎ, Π»ΠΎΠ³ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹Π΅.

МоТСм ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ ΠΊ созданию сСртификата. ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ powershell ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ администратора ΠΈ запускаСм winacme. Нас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ Π²Ρ‹Π±ΠΎΡ€Ρ‹:

  • M: Create new certificate (full options)
  • 2: Manual input
  • 2: [dns-01] Create verification records with acme-dns (https://github.com/joohoi/acme-dns)
  • На вопрос ΠΎ ссылкС Π½Π° ACME-DNS сСрвСр Π²Π²ΠΎΠ΄ΠΈΠΌ Π² ΠΎΡ‚Π²Π΅Ρ‚ URL созданного сСрвСра (https). URL of the acme-dns server: https://acme.2nd.pp.ua

Π’ ΠΎΡ‚Π²Π΅Ρ€ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π²Ρ‹Π΄Π°Π΅Ρ‚ запись ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ DNS сСрвСр (ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Сдиноразовая):

[INFO] Creating new acme-dns registration for domain 1nd.pp.ua

Domain:              1nd.pp.ua
Record:               _acme-challenge.1nd.pp.ua
Type:                   CNAME
Content:              c82a88a5-499f-464f-96e4-be7f606a3b47.acme.2nd.pp.ua.
Note:                   Some DNS control panels add the final dot automatically.
                           Only one is required.

На ΠΏΡƒΡ‚ΠΈ ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ выпуска SSL

Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ запись, ΠΈ убСТдаСмся Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° создалась ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ:

На ΠΏΡƒΡ‚ΠΈ ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ выпуска SSL

$ dig CNAME _acme-challenge.1nd.pp.ua +short
c82a88a5-499f-464f-96e4-be7f606a3b47.acme.2nd.pp.ua.

ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ создали Π½ΡƒΠΆΠ½ΡƒΡŽ запись Π² winacme, ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ процСсс создания сСртификата:

На ΠΏΡƒΡ‚ΠΈ ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ выпуска SSL

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ certbot Π² качСствС ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° описано Ρ‚ΡƒΡ‚.

На этом процСсс создания сСртификата Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° Π²Π΅Π±-сСрвСр ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ. Если ΠΏΡ€ΠΈ создании сСртификата ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π·Π°Π΄Π°Π½ΠΈΠ΅ Π² ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ΅, Ρ‚ΠΎ Π² дальнСйшСм процСсс обновлСния сСртификата Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ автоматичСски.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com