Использование бесплатных сертификатов Let’s Encrypt для Exchange Server

В том случае, если вы хотите использовать бесплатные SSL/TLS сертификаты Let’s Encrypt для своего сервера Exchange Server, эта статья для вас.

Бесплатные сертификаты Let’s Encrypt

Компания Let’s Encrypt стала выдавать бесплатные SSL/TLS сертификаты с конца 2015 года, и если ранее в сертификате можно было указывать только одно имя (что практически неприменимо в случае публикации Exchange), то на сегодняшний день появилась поддержка мультидоменных сертификатов (SAN/UCC), а на 2018 анонсирована поддержка Wildcard SSL-сертификатов для прямых подменов.

Как вы помните, особенность сертификатов от Let’s Encrypt является их бесплатность, однако выдаются такие сертификаты всего на 90 дней (этим обеспечивается ограниченный срок действия скомпрометированного сертификата). Однако, со стороны пользователя это означает, что использование SSL сертификатов Let’s Encrypt имеет смысл только тогда, когда вы можете обеспечить автоматизацию их перевыпуска.

В этой статье я покажу ручной процесс получения установки сертификата, а в следующей статье поговорим об автоматизации.

На первый взгляд процесс создания и обновления сертификата несколько сложен. Однако, если понять суть процедуры, ее повторение не составит проблем. В отличие от типичного CA, Let’s Encrypt не предоставляет веб-интерфейс для управления запросами на получение сертификатов. Вместо этого вам нужно установить клиентское ПО, которое связывается с серверами Let’s Encrypt. В этой статье я буду использовать для работы с Let’s Encrypt модуль Windows PowerShell под названием ACMESharp.

Установка модуля ACMESharp Module

Модуль ACMESharp доступен в галерее скриптов PowerShell Gallery. Чтобы загрузить и установить модуль из галереи PowerShell, можно воспользоваться командлетом Install-Module, входящий в PowerShellGet. Модули PowerShellGet включены в Windows Management Framework 5 (установлен по умолчанию Windows 10 и Windows Server 2016).

Если у вас более старая ОС, необходимо скачать и установить WMF 5 или отдельный установщик PowerShellGet (https://docs.microsoft.com/en-us/powershell/gallery/readme).

Итак, если у вас уже установлен PowerShellGet, выполните команду:

Install-Module AcmeSharp

В процессе выполнения команды вам будет предложено установить NuGet. Согласитесь с его установкой, т.к. NuGet обеспечивает функции получения пакетов из PowerShell Gallery.

Также вам будет предложено добавить репозитарий галереи PSGallery в доверенные.

установка модуля AcmeSharp

Подключение к Let’s Encrypt

После установки модуля ACMESharp нужно создать локальное хранилище для клиента ACMESharp. Данное хранилище используется клиентом для безопасного хранения запросов и ключей. Для создания хранилища, выполните команду:

Initialize-ACMEVault

Теперь, чтобы создать аккаунт в Let’s Encrypt, выполните команду:

New-ACMERegistration -Contacts mailto:admin@contoso.com -AcceptTos

подключение к Let’s Encrypt

Валидация DNS

Let’s Encrypt требует подтвердить владение каждым DNS именем, которое вы планируете включить в сертификат. Каждое DNS имя связывается с идентфикатором. Для сертификата SAN, нужно создать 2 или более идентификаторов и указать их при создании сертификата.

Подтвердить владение доменом можно несколькими способами:

  • DNS – в DNS зоне нужно создать специальные записи TXT, сгенерированные Let’s Encrypt.
  • HTTP – на веб сервер нужно поместить специальный файл от Let’s Encrypt.
  • TLS-SNI – на веб сервер нужно поместить SSL/TLS сертификат

Как правило, проще всего воспользоваться DNS валидацией и создать в зоне DNS специальную запись.

Создадим новый идентификатор:

New-ACMEIdentifier -dns autodiscover.domain.com -alias autod-test

Псевдоним нужно использовать каждый раз, когда вы создаете идентификатор. Если вы не создадите псевдоним, вы не сможете сослаться на данный идентификатор в дальнейшем.

New-ACMEIdentifier
Затем вам нужно указать, каким образом будет выполнятся валидация. В зависимости от выбранного типа валидации, вам будет сгенерирован код подтверждения. При выполнении проверки через DNS, будет сгенерировано значения TXT записи, которую нужно будет создать.

Complete-ACMEChallenge autod-test -ChallengeType dns-01 -Handler manual

Параметр dns-01 (регистрозависим!) определяет, что вы должны создать TXT запись в DNS.

Complete-ACMEChallenge
После того, как вы создадите в своей DNS зоне указанную запись, необходимо отправить запрос, чтобы сервера Let’s Encrypt проверили и подтвердил ее.

Submit-ACMEChallenge autod-test -ChallengeType dns-01

Submit-ACMEChalleng

Проверка выполняется не мгновенно. Чтобы проверить текущий статус выполнения проверки на серверах Let’s Encrypt, выполните команду:

(Update-ACMEIdentifier autod-test -ChallengeType dns-01).challenges

В случае успешного подтверждения владения доменом, значение поле Status изменится на valid.

подтверждения владения доменом в lets' encrypt

Создаем сертификат Let’s Encrypt

После того, как вы подтвердите все идентификаторы, которые будут включены в ваш сертификат, вы можете сгенерировать запрос на его выпуск. При создании сертификата указываются все идентификаторы, которые нужно в него включить и его псевдоним.

Чтобы сгенерировать запрос на выпуск сертификата, выполните:

New-ACMECertificate mail-test -generate -AlternativeIdentifierRefs autod-test,test -Alias exch

New-ACMECertificate
Чтобы передать запрос на выпуск сертификата на сервера Let’s Encrypt, выполните:

Submit-ACMECertificate exch

Submit-ACMECertificate
После отправки запроса, убедитесь, что поле IssuerSerialNumber пустое. С помощью него вы можете определить, что результаты выполнения вашего запроса не получен. Прежде, чем экспортировать сертификат, нужно обновить данные в локальном хранилище:

Update-ACMECertificate exch

Чтобы экспортировать готовый сертификат в pfx файл, содержащий сам сертификат и закрытый ключ, выполните

Get-ACMECertificate exch -ExportPkcs12 exch.pfx -CertificatePassword “password”

Get-ACMECertificate
В том случае, если при выполнении команды Get-ACMECertificate для экспорта сертификата в pfx файл появляется ошибка: Issuer certificate hasn’t been resolved, убедитесь, что вы предварительно выполнили команду Update-ACMECertificate.

ошибка issuer certificate hasn’t been resolved

Кроме того, убедитесь что в цепочке промежуточных сертификатов на вашем компьютере есть сертификат Let’s Encrypt Authority X3.

сертификат Let’s Encrypt Authority X3

В случае необходимости его можно получить тут https://letsencrypt.org/certificates/

После того, как у вас появился pfx файл, вы можете импортировать его и назначить нужным серверам/службам Exchange Server с помощью обычной методики.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *