Как сделать сертификат для exchange 2010

Обновлено: 07.07.2024

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

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

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

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

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

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

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

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

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

Валидация DNS

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

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

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

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

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

New-ACMEIdentifier


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

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

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

Submit-ACMEChallenge autod-test -ChallengeType dns-01

Submit-ACMEChalleng

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

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

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

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

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

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

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

New-ACMECertificate


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

Submit-ACMECertificate


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

Чтобы экспортировать готовый сертификат в 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

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

    В дереве консоли выберите узел Настройка серверов.

На странице Введение введите для сертификата понятное имя.

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

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

    Федеративный общий доступ. При использовании этого сертификата для федеративного общего доступа установите флажок Использовать этот сертификат для федеративного общего доступа.

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

На странице Завершение сертификата убедитесь в правильности всех введенных данных. Если все правильно, нажмите кнопку Создать.

На странице Завершение выполните перечисленные действия, чтобы завершить запрос. Эта страница также содержит синтаксис командлета, необходимый для создания нового сертификата.

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

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

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

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

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

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

powershell.exe -ExecutionPolicy Bypass -File ./Scripts/ImportExchange.ps1 %2 IIS,SMTP,IMAP,POP 1 %1 %3

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

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

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

Обновление/установка сертификата для SSL служб MS Exchange 2007/2010

Итак, у нас ситуация одна из двух — либо мы установили новый сервер MS Exchange 2007/2010 либо на нашем сервере закончился срок действия сертификата и нам нужен новый.

Запрос нового сертификата

Запрос нового сертификата нужно осуществлять только с помощью PowerShell и командлета New-ExchangeCertificate.

На что следует обратить внимание?

GenerateRequest — он сигнализирует о создании файла запроса на сертификат в сторонний центр сертификации. Без указания данного флага Exchange сервер сгенерирует самоподписанный сертификат.

SubjectName — поле CN должно в точности повторять FQDN к которому происходит обращение клиентов.

DomainName — должен содержать все альтернативные доменные имена, если таковы имеются. В моем случае пригодилось внутреннее имя сервера.

IncludeAutoDiscover — при наличии данного флага в запрос добавляются записи вида autodiscovery.domain.local для всех обслуживаемых доменов. Очень удобный параметр, не нужно в ручную перечислять данные записи.

PrivateKeyExportable — данный флаг позволит нам в дальнейшем экспортировать сертификат с закрытым ключем для передачи его на другие сервисы или для импорта в доверенные сертификаты в домене AD.

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

Как это сделать?

cert-issue

Выбираем расширенный запрос сертификата:

cert-req

Вставляем текст запроса:

cert-welcome

После окончания операции мы получим .cer файл с новым сертификатом.

Что с ним делать дальше?

Естественно .cer файл не содержит закрытого ключа и на этом этапе обычно возникают трудности. Кажется, что сделал что-то не так, но все идет по плану. Exchange 2007 сам генерирует закрытый ключ и оставляет его в контейнере с запрошенным сертификатом и только после завершения процедуры импорта две половинки целого вновь соединятся и мы сможем получить долгожданный .pfx файл.

Импорт сертификата необходимо опять выполнять через PowerShell.

В результате импорта Exchange 2007 покажет вам отпечаток сертификата:

Теперь включаем данный сертификат в работу на требуемые службы в нашем случае это IIS и SMTP.

Теперь можно экспортировать сертификат для передачи его на ISA Server.

Памятка по созданию сертификатов SSL для Exchange 2010/2013 (локальный CA)

exchange2

В данной памятке предполагается:

  • Использование доменного центра сертификации на базе Windows Server, на котором опубликован шаблон сертификата типа WebServer (он публикуется по умолчанию).
  • Все действия производятся с помощью Exchange Management Shell (EMS). Способ с использованием ECP не рассматривается.
  • Предполагается наличие всех необходимых прав.

1. $Data = New-ExchangeCertificate -server SERVERFQDN -SubjectName “c=RU, o=ORGNAME, cn=SERVERFQDN” -generaterequest -friendlyname “Exchange Cert for WEB Services” -domainname [все FQDN через запятую без пробелов] -PrivateKeyExportable $true

Запрос должен быть создан на сервере Exchange, на котором впоследствии будет импортирован соответствующий сертификат (использовать параметр -server)

2. Set-Content -path “c:\cert\EXcertreq.txt” -Value $Data

3. certreq -attrib “CertificateTemplate:WebServer” -attrib “Exportable:TRUE” -submit c:\cert\EXcertreq.txt c:\cert\EXcert.cer

будет отображено окно с запросом, к какому из перечисленных в нем СА
отправлять запрос — выбрать тот на котором опубликован шаблон сертификата
веб-сервера

4. Import-ExchangeCertificate -Server SERVER_FQDN -FileData ([Byte[]]$(Get-Content -Path c:\cert\EXcert.cer -Encoding byte -ReadCount 0))

Импортируем в Exchange сертификат

5. Get-ExchangeCertificate -Server SERVER_FQDN | fl

6. Enable-ExchangeCertificate -Server SERVER_FQDN -thumbprint THUMBPRINT -services
“SMTP,IIS,POP,IMAP”

7. Get-ExchangeCertificate -Server SERVER_FQDN

Есть гибридный способ:

— делаем через ECP запрос на сертификат (файл.req)

— certreq -attrib “CertificateTemplate:WebServer” -attrib “Exportable:TRUE” — выбираем наш запрос req, получаем сертификат

Читайте также: