Бесплатный сертификат для exchange 2016

В том случае, если вы хотите использовать бесплатные 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, выполните команду:

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

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

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

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

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

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

Валидация 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

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


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

Читайте также:  Драйвер для мфу самсунг 3200

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

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


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

Submit-ACMEChallenge autod-test -ChallengeType dns-01

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

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

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

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

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

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

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


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


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

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

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


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

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

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

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

Читайте также:  Внешняя клавиатура для ipad

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

Сначала установите промежуточный сертификат для Microsoft® Exchange Server 2016. Его также можно загрузить из репозитория.

Установите основной сертификат SSL. Для этого необходимо отправить запрос, импортировать файл сертификата, а затем выбрать сервисы, для которых сертификат будет использоваться.

Скачиваем win-acme (на момент написания версия v1.9.12.1, в ней содержится баг, решение ниже)

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

Открываем к серверу Exchange доступ по 80 и 443 портам. И не забываем создать А записи на DNS, которые будут ссылаться на наш Exchange.

Распаковываем содержимое скачанного архива, например, в папку LetsEncrypt.

Теперь нужно сделать изменения, так как скрипт не корректно работает, подробнее тут.

Изменяем файл C:letsencryptscriptsImportExchange.ps1 строчку 94

Изменяем файл C:letsencryptscriptsPSScript.bat на следующее значение:

Открываем командную строку с правами администратора, переходим в папку “LetsEncrypt” и выполняем скрипт указанный ниже (только замените выделенные жирным фрагменты на свои)

Для теста запустите:

В результате теста, если у вас что-то неправильно, то win-acme не заблокирует Вас после 5 неудачных попыток.