В данной компании где я сейчас работаю для внешнего имени подключения смартфона, планшета, ноутбука используется под домен 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"
тем самым получаю консоль командной строки запущенную с правами Администратора:
C:\Windows\system32>
C:\Windows\system32>cd /d c:\acme
Шаг №4:
Запускаю утилиту wacs:
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.ru
Record: _acme-challenge.mail.ekzorchik.ru
Type: TXT
Content: "7OOs3j5-z7pMNuNvkgBD-UAfW0dUBlDr38urXadBdRM"
Note: Some DNS managers add quotes automatically. A single set is needed.
[EROR] Error preparing for challenge answer
System.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(ICha
llengeValidationDetails challenge)
at PKISharp.WACS.Wacs.Authorize(ILifetimeScope execute, RunLevel runLevel, Or
derDetails order, ValidationPluginOptions options, TargetPart targetPart, Author
ization authorization)
Domain: mail.ekzorchik.ru
Record: _acme-challenge.mail.ekzorchik.ru
Type: TXT
Content: "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":
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.ru
Record: _acme-challenge.mail.ekzorchik.ru
Type: TXT
Content: "7OOs3j5-z7pMNuNvkgBD-UAfW0dUBlDr38urXadBdRM"
Note: Some DNS managers add quotes automatically. A single set
is needed.
Please press enter after you've created and verified the record
На заметку: Обязательно ожидаю минут 10
и после нажимаю клавишу Enter
Please press enter after you've created and verified the record
[INFO] Preliminary validation succeeded: 7OOs3j5-z7pMNuNvkgBD-UAfW0dUBlDr38urXa
dBdRM found in 7OOs3j5-z7pMNuNvkgBD-UAfW0dUBlDr38urXadBdRM
[INFO] Answer should now be available at _acme-challenge.mail.ekzorchik.ru
[INFO] Preliminary validation succeeded: 7OOs3j5-z7pMNuNvkgBD-UAfW0dUBlDr38urXa
dBdRM found in 7OOs3j5-z7pMNuNvkgBD-UAfW0dUBlDr38urXadBdRM
[WARN] First chance error calling into ACME server, retrying with new nonce...
[INFO] Authorization result: valid
Domain: mail.ekzorchik.ru
Record: _acme-challenge.mail.ekzorchik.ru
Type: TXT
Content: "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 'BCC33A28D2
69C36A35BCAF37FE09B26910F07A21' 'IIS,SMTP,IMAP' 1 'C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Certificates\HZqTSN1eSUKYuJGDydWSGg-cache.pfx' 't86jPm/7
0ZXO+/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 succeeded
N: Create new certificate (simple for IIS)
M: Create new certificate (full options)
L: List scheduled renewals
R: Renew scheduled
S: Renew specific
A: Renew *all*
O: More options...
Q: Quit
Please choose from the menu: A
Please choose from the menu: q
c:\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"
тем самым получаю консоль командной строки запущенную с правами Администратора:
C:\Windows\system32>
C:\Windows\system32>net start MSExchangeServiceHost
Start – All Programs – Microsoft Exchange Server 2010 – Exchange Management Shell
Выводим какие сейчас есть сертификаты:
[PS] C:\Windows\system32>Get-ExchangeCertificate | Format-List FriendlyName,Subject,CertificateDomains,Thumbprint,Services
FriendlyName : [Manual] mail.ekzorchik.ru 2020.7.21 20:43:30
Subject : CN=mail.ekzorchik.ru
CertificateDomains : {mail.ekzorchik.ru}
Thumbprint : BCC33A28D269C36A35BCAF37FE09B26910F07A21
Services : IMAP, POP, IIS, SMTP
FriendlyName :
Subject : CN=srv-mail01-cas.POLYGON.local
CertificateDomains : {srv-mail01-cas.POLYGON.local}
Thumbprint : EB367126784AE012A81F9A21DD21DB440113C50F
Services : None
FriendlyName : mail.ekzorchik.ru
Subject : CN=mail.ekzorchik.ru
CertificateDomains : {mail.ekzorchik.ru}
Thumbprint : 8F4053C17DFFF68DF770557049C9204DEDD0FC0F
Services : IMAP, POP, SMTP
И активируем новый:
[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,SMTP
Confirm
Overwrite 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.