Как экспортировать Let’s Encrypted сертификат с Windows Server 2012 R2

У себя на рабочем месте я использую бесплатные сертификаты от Let’s Encrypted на Windows сервисах — это Remote Desktop Gateway и Exchange 2010.

Ну так вот я был вынужден в связи с текущими настройками два раза генерировать один и тот же сертификат на mail.ekzorchik.ru и если на RDG он просто импортируется, то для Exchange нужно было делать дополнительные действия по замене отпечатка. Т.е. получается, что у меня два сертификата на mail.ekzorchik.ru и за этим нужно следить чтобы вовремя продлять. Но это мелочи, Zabbix 5.0 выручает, главное помнить, что сертификатов два, а не один.

Мне же хотелось иметь возможность экспортировать сертификат как я проделываю на бухгалтерский компьютерах если перенастраиваю рабочее место и т.д. Но увы, тут сертификат от Let’s Encrypted имеет пароль на закрытую часть и версии которую я использую на Windows Server 2012 R2 Std для сервиса Remote Desktop Gateway нет возможности узнать какой пароль.

Шаг №1: Инициирую шаги по экспорту приватного сертификата:

on srv-ts01-gate (OC: Windows Server 2012 R2 Std, Role: RDG)

Login: ekzorchik, Group: Domain Admins

Win + X -> Command Prompt (Admin)

C:\Windows\system32> mmc - File - Add/Remove Snap-in…

Available snap-ins: выбираю Certificates и нажимаю Add,

  • This snap-in will always manage certificates for: Computer account и нажимаю Finish, а затем OK

Через правый клик мышью на сертификате (внешнем сертификате) нажимаю на нем и выбираю All Tasks - Export… и вот первая проблема, я не могу экспортировать приватный ключ (т.е. если бы возможность была, я бы в конечном итоге получил pfx файл) для данного сертификата:

Не могу экспортировать закрытый ключ для сертификата Let's Encrypted

Увы не могу. Исправляю текущее положение дел последующими шагами.

Шаг №2: Далее действия нужно проделать через утилиту wacs.exe (это клиент Win-ACME client) с целью отобразить информацию по установленном сертификату от Let’s Encrypted. У меня он уже установлен.

on srv-ts01-gate (OC: Windows Server 2012 R2 Std, Role: RDG)

Login: ekzorchik, Group: Domain Admins

Win + X -> Command Prompt (Admin)

123456C:\Windows\system32> cd /d c:\acmec:\acme>wacs.exe[INFO] A simple Windows ACMEv2 client (WACS)[INFO] Software version 2.0.8.356 (RELEASE)[INFO] IIS version 8.5[INFO] Please report issues at https://github.com/PKISharp/win-acme

Т.к. у меня версия клиента 2.0.8.356, вроде как есть уже более новая, скачиваю ее с официального сайта (https://www.win-acme.com/): win-acme.v2.1.11.917.x64. на всякий случай я скопировал ее к себе дабы она всегда была под рукой.

Распаковываю архив на диск C:\acme.v2.1.11.917.x64, перехожу в него и запускаю утилиту wacs.exe

Please choose from the menu: q

1234567c:\acme>cd %systemroot%\system32 C:\Windows\System32>cd /d c:\win-acme.v2.1.11.917.x64 c:\win-acme.v2.1.11.917.x64> c:\win-acme.v2.1.11.917.x64>wacs.exe

A simple Windows ACMEv2 client (WACS)

Software version 2.1.11.917 (RELEASE, PLUGGABLE, 64-bit)

ACME server https://acme-v02.api.letsencrypt.org/

IIS version 8.5

Running with administrator credentials

Scheduled task points to different location for .exe and/or working directory

Scheduled task is disabled

Scheduled task exists but does not look healthy

Please report issues at https://github.com/win-acme/win-acme

N: Create certificate (default settings)

M: Create certificate (full options)

R: Run renewals (0 currently due)

A: Manage renewals (1 total)

O: More options...

Q: Quit

Please choose from the menu: нажимаю на клавиатуре клавишу «A»

Welcome to the renewal manager. Actions selected in the menu below will be

applied to the following list of renewals. You may filter the list to target

your action at a more specific set of renewals, or sort it to make it easier

to find what you're looking for.

1: [IISBinding] mail.ekzorchik.ru - renewed 11 times, due after 2020.12.10 17:17:47

D: Show details for the renewal

R: Run the renewal

U: Analyze duplicates for the renewal

C: Cancel the renewal

V: Revoke certificate(s) for the renewal

Q: Back

Choose an action or type numbers to select renewals: нажимаю на клавиатуре клавишу «D»

Details for renewal 1/1

Id:                  ICchgKiSy0u_puQUHATW1w

File:                ICchgKiSy0u_puQUHATW1w.renewal.json

FriendlyName:        [Auto] [IISBinding] mail.ekzorchik.ru

.pfx password:       ticbrUMvXnImtDt/NhsfGNQI+YiOsTzr93BBiv8CfUk=

Renewal due:         10.12.2020 17:17:47

Renewed:             11 times

Target        -----------------------------------------------------------------

- Plugin:           IIS - (Read site bindings from IIS)

- Sites:            1

- Hosts:            mail.ekzorchik.ru

Validation    -----------------------------------------------------------------

- Plugin:           Manual - (Create verification records manually

(auto-renew not possible))

CSR           -----------------------------------------------------------------

- Plugin:           RSA - (RSA key)

Store         -----------------------------------------------------------------

- Plugin:           CertificateStore - (Windows Certificate Store)

Installation  -----------------------------------------------------------------

- Plugin:           IIS - (Create or update https bindings in IIS)

History (most -----------------------------------------------------------------

1: 24.06.2020 6:00:13 - Error - Authorization failed

2: 24.06.2020 18:03:45 - Error - Authorization failed

3: 24.06.2020 18:04:24 - Error - Authorization failed

4: 24.06.2020 18:07:08 - Error - Authorization failed

5: 24.06.2020 18:25:54 - Success - Thumbprint FB1B80D5FA72EBD97C69E4D814B069FCA

D73A2EA 6: 18.07.2020 18:36:02 - Success - Thumbprint EDFD0FDDFC3CC8582FAE7A1601870B0A9

830FAAD 7: 23.07.2020 19:10:58 - Success - Thumbprint 782A1443C82D9CE59A61A9740ECE35B94

CF8CC48 8: 23.07.2020 19:21:49 - Success - Thumbprint 782A1443C82D9CE59A61A9740ECE35B94

CF8CC48 9: 16.10.2020 13:58:58 - Success - Thumbprint BCD9F2BA02C9F64C62450FCAFBAEB1423

8A5D66B 10: 16.10.2020 14:17:47 - Success - Thumbprint BCD9F2BA02C9F64C62450FCAFBAEB142

38A5D66B

Press <Enter> to continue

Choose an action or type numbers to select renewals: q

N: Create certificate (default settings)

M: Create certificate (full options)

R: Run renewals (0 currently due)

A: Manage renewals (1 total)

O: More options…

Q: Quit

Please choose from the menu: q

А вот и в строке .pfx password сам пароль: ticbrUMvXnImtDt/NhsfGNQI+YiOsTzr93BBiv8CfUk=

Шаг №3: Импортирую приватный ключ (pfx файл) к сертификатам, которые использует система Windows:

on srv-ts01-gate (OC: Windows Server 2012 R2 Std, Role: RDG)

Login: ekzorchik, Group: Domain Admins

перехожу в каталог "C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Certificates", нажимаю на верхний файл ICchgKiSy0u_puQUHATW1w-cache.pfx

Зная пароль импортирую приватный ключ к сертификатам, которые использует система WIndows

Запускается мастер импорта

  • Store Location: выбираю Local Machine

нажимаю Next

  • File name: C:\ProgramData\win-acme\acme-v02.api.letsencrypt.org\Certificates\ICchgKiSy0u_puQ (Оставляю по умолчанию)

нажимаю Next

и вот шаг где требуется пароль на экспорт приватного ключа:

  • Password: указываю пароль который показал мне клиент (Windows ACMEv2 client) ticbrUMvXnImtDt/NhsfGNQI+YiOsTzr93BBiv8CfUk=
  • Mark this key as exportable. This will allow you to back up or transport your keys at a later time: отмечаю галочкой
  • Include all extended properties: отмечаю галочкой

и нажимаю Next

Указываю пароль и помечаю, что могу экспортировать приватный ключ

Далее указываю местонахождение сертификата для Windows, оставляю по дефолту и нажимаю Next

Указываю местонахождение сертификата для Windows, оставляю по дефолту

А затем нажимаю Finish.

Шаг №4: Теперь экспортирую сертификат в файловую систему Windows, к примеру, на логический диск каталога C:\Certs:

on srv-ts01-gate (OC: Windows Server 2012 R2 Std, Role: RDG)

Login: ekzorchik, Group: Domain Admins

Win + X -> Command Prompt (Admin)

C:\Windows\system32> mmc - File - Add/Remove Snap-in…

  • Available snap-ins: выбираю Certificates и нажимаю Add,
  • This snap-in will always manage certificates for: Computer account и нажимаю Finish, а затем OK

Console Root - Certificates (Local Computer) - Personal - Certificates — выделяю сертификат mail.ekzorchik.ru и через правый клик на нем перехожу All Tasks - Export и мне становятся доступны опции, как

  • Yes, export the private key: на выходе будет pfx файл
  • No, do not export the private key: на выходе будет cer файл

выбираю Yes, нажимаю Next, обязательно отмечаю

  • Include all certificates in the certification path if possible
  • Export all extended properties

и нажимаю Next, ставлю пароль

  • Password: отмечаю
  • Password: Aa1234567
  • Confirm password: Aa1234567

На заметку: Пароль на закрытый ключ (pfx-файл) должен быть сложным и не быть легко угадываемым и простым.

и нажимаю Next

Далее указываю куда произвести экспорт:

File name: Browse - C:\Certs\ именую, как mail.ekzorchik.ru_do_14_01_2020 (Type: Personal Information Exchange (*.pfx)) и нажимаю Save затем нажимаю Next, Finish

повторяю, процедуру экспорта, но на этот раз выбираю "No, do not export the private key" и именую, как mail.ekzorchik.ru _do_14_01_2020.cer

Итого теперь раз сгенерировав сертификат, после через 90 дней его продлеваем (это если как у меня используется создание записи через проверку DNS), а после можно экспортировать его и перенести на почтовый сервер Exchange 2010. Получается один сертификат на два сервиса, как и должно быть, а не костыль с заменой отпечатка, как есть у меня в заметке.

На этом данная практическая заметка завершена, с уважением автор блога Олло Александр aka ekzorchik.