Продлеваем сертификат 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"
тем самым получаю консоль командной строки запущенную с правами Администратора:
12 | C:\Windows\system32>C:\Windows\system32>cd /d c:\acme |
Шаг №4:
Запускаю утилиту wacs:
1234567891011121314151617181920212223242526272829303132 | c:\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":
123456789101112131415 | c:\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
12345678910111213141516171819202122232425262728293031323334353637 | Please 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"
тем самым получаю консоль командной строки запущенную с правами Администратора:
12 | C:\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.