Продлеваем сертификат Let’s Encrypt для Exchange 2010

В данной компании где я сейчас работаю для внешнего имени подключения смартфона, планшета, ноутбука используется под домен mail.ekzorchik.ru, а, чтобы все было безопасно, то задействуем не самоподписанный сертификат, а от Let’s Encrypted с проверкой валидности через DNS записи. Вот только продление сертификата нужно делать вручную каждые 90 дней. И вот почему этот последний день выпадает, то на мое день рождение, то на первый день отпуска или на какое-либо значимое для меня событие. Я решил, что нужно во что бы то ни стало задокументировать данный процесс дабы проделывать не в последний момент, когда «Шеф все пропало!», а немного заранее через сработавшую напоминалку от системы мониторинга Zabbix 5.0 on Ubuntu 18.04 Server.

Итак, у кого смартфон на базе IPhone первыми узнают, что у нас закончился сертификат, выданный Let’S Encrypted Authority x3 сроком на 90 дней при проверке почты: «Почтовый сервер, ненадежный. Истек 21.07.2020 18:17:28»

Шаг №1: Подключаюсь на почтовый сервер у меня он Exchange 2010 14.03.0248.002 с соответствующими правами, открываю оснастку IIS и смотрю срок окончания ранее выданного сертификата:

Start – Control Panel – View by: Category -> Small icons – Administrative Tools – Internet Information Services (IIS) Manager – SRV-MAIL02-CAS (POLYGON\ekzorchik) – Server Certificates и вот тут строка

  • Name: [Manual] mail.ekzorchik.ru 2020.4.22 19:17:29
  • Issued To: mail.ekzorchik.ru
  • Issued By: Let’s Encrypt Authority X3
  • Expiration Date: 21.07.2020 18:17:28
  • Certificate Hash:

А сейчас время 19.00 я как раз приехал с работы домой.

Шаг №2: Удалил на регистраторе DNS имен txt запись вида:

https://nic.ru – user&pass – (Услуги) DNS-хостинг – (Домены на услуге) ekzorchik.ru

  • Хост: _acme-challenge.mail
  • Тип: TXT
  • Значение: Длинная строка проверки
  • TTL: не задано
  • Дата: 2020-04-22 19:17:29

Шаг №3: Перехожу в каталог с программой win-acme.v2.0.8.356.zip

W:\owncloud\tips_letsencrypt\ win-acme.v2.0.8.356.zip на всякий случай она сохранена в моем Owncloud 10 хранилище наработок.

Start – All Programs – Accessories – и через правый клик на "Command Prompt" выбираю "Run as administrator" тем самым получаю консоль командной строки запущенную с правами Администратора:

12C:\Windows\system32>C:\Windows\system32>cd /d c:\acme

Шаг №4: Запускаю утилиту wacs:

1234567891011121314151617181920212223242526272829303132c:\acme>wacs.exe –renew –baseuri “https://acme-v02.api.letsencrypt.org/”[INFO] A simple Windows ACMEv2 client (WACS)[INFO] Software version 2.0.8.356 (RELEASE)[INFO] IIS version 7.5[INFO] Please report issues at https://github.com/PKISharp/win-acme[WARN] Proxying via 192.168.0.253:8080[INFO] Renewing certificate for [Manual] mail.ekzorchik.ru[INFO] Authorize identifier: mail.ekzorchik.ru[INFO] Authorizing mail.ekzorchik.ru using dns-01 validation (Manual)Domain:              mail.ekzorchik.ruRecord:              _acme-challenge.mail.ekzorchik.ruType:                TXTContent:             “7OOs3j5-z7pMNuNvkgBD-UAfW0dUBlDr38urXadBdRM”Note:                Some DNS managers add quotes automatically. A single set                  is needed.[EROR] Error preparing for challenge answerSystem.Exception: User input ‘Please press enter after you’ve created and verified the record’ should not be needed in –renew mode.at PKISharp.WACS.Services.InputService.Validate(String what)at PKISharp.WACS.Services.InputService.Wait(String message)at PKISharp.WACS.Plugins.ValidationPlugins.Dns.Manual.CreateRecord(String recordName, String token)at PKISharp.WACS.Plugins.ValidationPlugins.DnsValidation`2.PrepareChallenge()at PKISharp.WACS.Plugins.ValidationPlugins.Validation`2.PrepareChallenge(IChallengeValidationDetails challenge)at PKISharp.WACS.Wacs.Authorize(ILifetimeScope execute, RunLevel runLevel, OrderDetails order, ValidationPluginOptions options, TargetPart targetPart, Authorization authorization)Domain:              mail.ekzorchik.ruRecord:              _acme-challenge.mail.ekzorchik.ruType:                TXTContent:             “7OOs3j5-z7pMNuNvkgBD-UAfW0dUBlDr38urXadBdRM”[EROR] Error authorizing PKISharp.WACS.DomainObjects.TargetPart[EROR] Exception: User input ‘Please press enter after you’ve deleted the record’ should not be needed in –renew mode.[EROR] Renewal for [Manual] mail.ekzorchik.ru failed, will retry on next run

Шаг №5: Создаю необходимую TXT запись на регистраторе имен с учетом указанного выше посредством утилиты wacs.exe

Шаг №6: Снова запускаю утилиту wacs.exe без ключа "--renew":

123456789101112131415c:\acme>wacs.exe  –baseuri “https://acme-v02.api.letsencrypt.org/”[INFO] A simple Windows ACMEv2 client (WACS)[INFO] Software version 2.0.8.356 (RELEASE)[INFO] IIS version 7.5[INFO] Please report issues at https://github.com/PKISharp/win-acme[WARN] Proxying via 192.168.0.253:8080[INFO] Authorize identifier: mail.ekzorchik.ru[INFO] Authorizing mail.ekzorchik.ru using dns-01 validation (Manual)Domain:              mail.ekzorchik.ruRecord:              _acme-challenge.mail.ekzorchik.ruType:                TXTContent:             “7OOs3j5-z7pMNuNvkgBD-UAfW0dUBlDr38urXadBdRM”Note:                Some DNS managers add quotes automatically. A single setis needed.Please press enter after you’ve created and verified the record

На заметку: Обязательно ожидаю минут 10 и после нажимаю клавишу Enter

12345678910111213141516171819202122232425262728293031323334353637Please press enter after you’ve created and verified the record[INFO] Preliminary validation succeeded: 7OOs3j5-z7pMNuNvkgBD-UAfW0dUBlDr38urXadBdRM found in 7OOs3j5-z7pMNuNvkgBD-UAfW0dUBlDr38urXadBdRM[INFO] Answer should now be available at _acme-challenge.mail.ekzorchik.ru[INFO] Preliminary validation succeeded: 7OOs3j5-z7pMNuNvkgBD-UAfW0dUBlDr38urXadBdRM found in 7OOs3j5-z7pMNuNvkgBD-UAfW0dUBlDr38urXadBdRM[WARN] First chance error calling into ACME server, retrying with new nonce…[INFO] Authorization result: validDomain:              mail.ekzorchik.ruRecord:              _acme-challenge.mail.ekzorchik.ruType:                TXTContent:             “7OOs3j5-z7pMNuNvkgBD-UAfW0dUBlDr38urXadBdRM”Please press enter after you’ve deleted the record[WARN] First chance error calling into ACME server, retrying with new nonce…[INFO] Requesting certificate [Manual] mail.ekzorchik.ru[INFO] Store with CertificateStore…[INFO] Installing certificate in the certificate store[INFO] Adding certificate [Manual] mail.ekzorchik.ru 2020.7.21 20:43:30 to store My[INFO] Installing with Script…[INFO] Script ./Scripts/ImportExchange.ps1 starting with parameters ‘BCC33A28D269C36A35BCAF37FE09B26910F07A21’ ‘IIS,SMTP,IMAP’ 1 ‘C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Certificates\HZqTSN1eSUKYuJGDydWSGg-cache.pfx’ ‘t86jPm/70ZXO+/4l8Fl8cu5EsN/r08IIJwDPixS+a7Q=’ ‘[Manual] mail.ekzorchik.ru 2020.7.21 20:43:30′[INFO] Uninstalling certificate from the certificate store[INFO] Removing certificate [Manual] mail.ekzorchik.ru 2020.4.22 19:17:29 from store My[INFO] Next renewal scheduled at 2020.9.14 20:43:30[INFO] Renewal for [Manual] mail.ekzorchik.ru succeededN: Create new certificate (simple for IIS)M: Create new certificate (full options)L: List scheduled renewalsR: Renew scheduledS: Renew specificA: Renew *all*O: More options…Q: QuitPlease choose from the menu: APlease choose from the menu: qc:\acme>

Шаг №7: Проверяю, какой сейчас сертификат в IIS значится:

Start – Control Panel – View by: Category -> Small icons – Administrative Tools – Internet Information Services (IIS) Manager – SRV-MAIL02-CAS (POLYGON\ekzorchik) – Server Certificates и вот тут уже строка

  • Name: [Manual] mail.ekzorchik.ru 2020.7.22 20:43:30
  • Issued To: mail.ekzorchik.ru
  • Issued By: Let’s Encrypt Authority X3
  • Expiration Date: 19.10.2020 19:43:29
  • Certificate Hash:

Шаг №8: Теперь нужно подменить сертификат для почтового сервера:

Start – All Programs – Accessories – и через правый клик на "Command Prompt" выбираю "Run as administrator" тем самым получаю консоль командной строки запущенную с правами Администратора:

12C:\Windows\system32>C:\Windows\system32>net start MSExchangeServiceHost

Start – All Programs – Microsoft Exchange Server 2010 – Exchange Management Shell

Выводим какие сейчас есть сертификаты:

12345678910111213141516[PS] C:\Windows\system32>Get-ExchangeCertificate | Format-List FriendlyName,Subject,CertificateDomains,Thumbprint,ServicesFriendlyName       : [Manual] mail.ekzorchik.ru 2020.7.21 20:43:30Subject            : CN=mail.ekzorchik.ruCertificateDomains : {mail.ekzorchik.ru}Thumbprint         : BCC33A28D269C36A35BCAF37FE09B26910F07A21Services           : IMAP, POP, IIS, SMTPFriendlyName       :Subject            : CN=srv-mail01-cas.POLYGON.localCertificateDomains : {srv-mail01-cas.POLYGON.local}Thumbprint         : EB367126784AE012A81F9A21DD21DB440113C50FServices           : NoneFriendlyName       : mail.ekzorchik.ruSubject            : CN=mail.ekzorchik.ruCertificateDomains : {mail.ekzorchik.ru}Thumbprint         : 8F4053C17DFFF68DF770557049C9204DEDD0FC0FServices           : IMAP, POP, SMTP

И активируем новый:

123456789101112[PS] C:\Windows\system32>Get-ExchangeCertificate | where-object {$_.Subject -like “*srv-mail01-cas*”}Thumbprint                                Services   Subject———-                                ——–   ——-EB367126784AE012A81F9A21DD21DB440113C50F  ……     CN=srv-mail01-cas.POLYGON.local[PS] C:\Windows\system32>Get-ExchangeCertificate | where-object {$_.Subject -like “*srv-mail01-cas*”} | Enable-ExchangeCertificate -Services IIS,IMAP,SMTPConfirmOverwrite the existing default SMTP certificate?Current certificate: ‘BCC33A28D269C36A35BCAF37FE09B26910F07A21’ (expires 19.10.2020 19:43:29)Replace it with certificate: ‘EB367126784AE012A81F9A21DD21DB440113C50F’ (expires 25.04.2021 21:10:15)[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [?] Help (default is “Y”): нажимаю клавишу «Y» [PS] C:\Windows\system32>

И вот почта снова начинает работать, точнее работа из вне со смартфоном, ноутбуков, планшетов при доступе где указано DNS имя mail.ekzorchik.ru опять сроком на 90 дней. На этом заметка завершена, с уважением авто блога Олло Александр aka ekzorchik.