Немного девичьих IT-шных записок

четверг, 10 мая 2018 г.

Генерация и установка SSL-сертификата для сервера MDaemon

Имеется почтовый сервер MDaemon 16 версии, необходимо получить SSL сертификат у стороннего авторизованного центра сертификации, для дальнейшего использования протоколов POP3 SSL, IMAP SSL, SMTP SSL. Весь процесс того, как это сделать опишу здесь.

Коротко о самом сертификате. 
Сертификат - это открытый ключ, необходимый для шифрования в работе указанных протоколов. Сертификату обязательно соответствует закрытый ключ, контейнер закрытого ключа должен храниться на web-сервере, на котором будут использоваться SSL-протоколы. Так же, необходимо наличие корневого и промежуточных (если такие имеются) сертификатов центра сертификации, для того, чтобы система понимала путь сертификации и знала откуда Ваш сертификат происходит и что он действителен. Т.е. полный список того, чтобы SSL-сертификат работал:

  • SSL-сертификат домена или хоста домена,
  • закрытый ключ,
  • промежуточный сертификат центра сертификации,
  • корневой сертификат центра сертификации.

Как и где взять сертификат?
Есть два варианта:

  • развернуть свой центр сертификации и выпустить самоподписанный сертификат 

или же

  • обратиться к стороннему удостоверяющему центру, такому как Thawte, Comodo, Let's Encrypt и т.д. 

Сертификаты от известных УЦ имеют преимущество в том, что их корневые сертификаты предустановлены в браузерах, и вопросов о возникновении Вашего сертификата в браузере не возникнет. Чаще всего получить SSL-сертификат у такого УЦ стоит некоторую сумму денег, и цена различается в зависимости от того, что именно сертификат подтверждает - домен, организацию, степень доверия. Но, например, у Comodo можно заказать бесплатный сертификат, действие которого продлится не более 90 суток. Он будет подтверждать только определенный хост домена в двух вариациях - domen.ru и www.domen.ru. Такие же бесплатные сертификаты можно заказать у Let's Encrypt.

О получении бесплатного сертификата от Let's Encrypt и настройке автоматического продления можно почитать тут.

Остановились на том, что сертификат будет куплен на год у компании RuCenter. Это будет сертификат Thawte SSL 123 для подтверждения домена. Причем покупка SSL-сертификата у партнеров, чем у самих УЦ часто бывает выгодней.
Для того, чтобы заказать сертификат нужно создать файл запроса. И опять есть несколько вариантов: создать запрос на сайте УЦ или на своем сервере (компьютере) с помощью различного программных продуктов (например, можно использовать пакет OpenSSL, но мы пойдем путем проще).

P.S. Доверять созданию запроса на сайте я бы не стала, столкнулась с тем , что первый раз при генерации запроса закрытый ключ не сохранился (хотя техподдержка говорит о том, что он должен был сохраниться автоматически), из-за отсутствия закрытого ключа сертификат пришлось перевыпускать.

Запрос сертификата.
В нашем случае воспользуемся стандартными средствами Windows, и статьей из базы знаний о MDaemon (пруф-линк).
MDaemon не имеет встроенных средств для создания файла запроса сертификата (Certificate Signing Request, CSR), который необходим для получения SSL-сертификата у стороннего центра сертификации (Certification authority, CA).
В ОС Windows имеется встроенная утилита командной строки certreq.exe, которая позволяет создать запрос и импортировать новые сертификаты в хранилище сертификатов Windows, а далее MDaemon уже может воспользоваться ими оттуда.
Необходимо создать CSR-запрос на сертификат с длиной ключа в 2048 бита и заказать сертификат у Центра сертификации.

1. Логинимся на нашем сервере с MDaemon под учетной записью с правами администратора.
2. Создаем файл с именем "CSRParameters.inf" в корне диска C с помощью Блокнота или другого текстового редактора.


;----------------- request.inf -----------------
[NewRequest]
 Subject="CN=mail.vlc.ru,O=Administration Vladivostok,S=Primorsky krai,L=Vladivostok,C=RU"
 KeySpec=1
 KeyLength=2048
 Exportable=TRUE
 MachineKeySet=TRUE
 SMIME=False
 PrivateKeyArchive=FALSE
 UserProtected=FALSE
 UseExistingKeySet=FALSE
 ProviderName="Microsoft RSA SChannel Cryptographic Provider"
 ProviderType=12
 RequestType=PKCS10
 KeyUsage=0xa0
 Silent=TRUE
 [EnhancedKeyUsageExtension]
 OID=1.3.6.1.5.5.7.3.1
 OID=1.3.6.1.5.5.7.3.2
;-----------------------------------------------

3. Открываем командную строку, переходим в корень диска C
cd C:\
Вводим следующую команду
certreq -new CSRParameters.inf CSROutput.pem

4. Проверяем наличие файла CSROutput.pem на диске C.

5. Открываем файл CSROutput.pem текстовым редактором и копируем его содержимое в поле для запроса на сайте УЦ. Сам запрос будет выглядеть следующим образом:

-----BEGIN NEW CERTIFICATE REQUEST-----
3DQIDMQwWCjYuMS43NjA.....[запрос, закодированный по схеме Base64]
-----END NEW CERTIFICATE REQUEST-----

6. В ответ на запрос УЦ пришлет сертификат в формате .crt и корневые сертификаты (если корневых сертификатов не было приложено, их можно взять на сайте УЦ).

Установка сертификата.
1. Открываем консоль mmc, добавляем оснастку "Сертификаты" (локального компьютера). Переходим во вкладку "Личное" и нажимаем в консольном меню "Импорт".

P.S. Сначала необходимо установить полученный SSL-сертификат на том компьютере, где генерировался запрос. Т.к. контейнер закрытого ключа был сохранен именно там. Если запрос генерировался на сервере, где сертификат будет использоваться, то Экспорт и перенос сертификата не нужен.

2. Импортируем SSL-сертификат в "Личное", промежуточные в "Промежуточные центры сертификации", а корневой в "Доверенные центры сертификации". В "Личном" появится сертификат для Вашего домена с иконкой сертификата с ключом. Это значит, что сертификат установлен так, как нам нужно.

3. Если сертификат необходимо перенести на сервер, то следует из "Личного" выполнить экспорт в формате PKCS #12 с экспортом закрытого ключа, а так же отметить:
- Экспортировать все расширенные свойства.
Необходимо также будет установить пароль, который позже потребуется при импорте сертификата на сервер.

4. Импортировать .pfx сертификат в "Личное". Промежуточные в "Промежуточные центры сертификации", а корневой в "Доверенные центры сертификации".

Если всё сделано верно, то в настройках MDaemon "Безопасность", далее "Параметры безопасности", далее "SSL & TLS", далее "MDaemon" отразиться установленный сертификат для нашего домена.

Повторная установка сертификата.
Нужен OpenSSL, открываем его C:\Program Files (x86)\OpenSSL-Win32\bin\OpenSSL.exe
Пишем:
pkcs12 -export -out domain.name.pfx -inkey domain.name.key -in domain.name.crt 

1 комментарий:

  1. Здравствуйте, спасибо за статью! У нас такая же ситуация, есть сертификат NICa. Есть Mdaemon, пытаюсь установить сертификат на конкретный домен, но на этапе выполнить экспорт в формате PKCS #12, получил ситуацию что данный формат невозможно выбрать. Подскажите как Вы обошли данную ситуацию?

    ОтветитьУдалить