Кратко про сертификат и ключи
Сертификат — публичен. содержит открытый ключ владельца сертификата, сведения о владельце\удостоверяющем центре\информацию по алгоритмам и т.д. и подпись УЦ, который издал этот сертификат. Он не может содержать закрытого ключа.
Открытый ключ — доступен для всех пользователей, необходим для проверки подписи\для зашифровки информации. Открытый ключ можно без опасений передавать, не рискуя при этом сохранностью данных
Закрытый ключ — необходим для подписания\для расшифровки данных. Хранение закрытого ключа осуществляется только у владельца электронной цифровой подписи
Данные шифруются с помощью открытого ключа, а расшифровать их можно только тем закрытым ключом, который связан именно с этим открытым ключом.
Открытый и закрытый ключ — парные, взаимосвязанные и уникальные. Ключи связаны за счёт математического соотношения. Подобная технология обеспечивает безопасность шифрования данных. Даже в случае перехвата информации её практически невозможно расшифровать.
Для каждого открытого ключа — существует только 1 закрытый и наоборот. Для каждого открытого ключа может существовать 1 и более сертификатов.
CSR запрос это запрос на получение сертификата, который представляет собой текстовый файл, содержащий в закодированном виде информацию о домене, на который планируется выпустить SSL сертификат и информация об организации и открытый ключ.
Вместе с CSR будет сгенерирован закрытый ключ (private key), которым сервер или сервис будет расшифровывать трафик между ним и клиентом.
Формируем запрос и выпускаем по нему наш сертификат Exchange
В exchange на заканчивающемся сертификате жмём «продлить». Формируется запрос.
Перевыпускаем сертификат в центре сертификации, указывая наш файл запроса от exchange.
Получаем сертификат от центра сертификации (в формате .CER) домена основного и поддоменов mail.site.ru, autodiscover.site.ru
С сайта скачиваем полученные после выпуска:
- Корневой сертификат
- Промежуточный сертификат 1
- Сам Сертификат
Импортируем его в хранилище сертификатов и из этого хранилища экспортируем его в формате .PFX, ВМЕСТЕ с приватным ключом.
Если вы делали запрос на выпуск сертификате НЕ на Exchange сервере и вам пришлют crt (а не pfx файл) — то вы не сможете сделать импорт на Exchange, так как у вас нет закрытого ключа.
Установка сертификата на exchange
На ожидающий нас запрос в панели ecp панели exchange жмём «выполнить» и указываем наш Сертификат. Готово.
Его можно назначать службам либо через панель либо командой в exchange management shell
Enable-ExchangeCertificate -Thumbprint 34AC7FF06943636C9D4C920644AEDC000D -Services POP,I MAP,IIS,SMTP
Ошибка Microsoft Exchange could not find a certificate that contains the domain name
Причём после назначения аутлук при запуске стал выдавать ошибку
Microsoft Exchange could not find a certificate that contains the domain name Therefore, it is unable to support the STARTTLS SMTP verb for the connector Client Frontend MAIL2 with a FQDN parameter of
Причина в том, что Exchange устанавливает самозаверяющий сертификат с именем хоста и полным доменным именем сервера, т.е. в нашем случае.
Чтобы воссоздать самозаверяющий сертификат и назначить его службе SMTP, выполните команду в exchange management shell:
New-ExchangeCertificate -Force
Проблема решена.
Экспорт сертификата для веб-сервера
Теперь этот же сертификат поставим на наш сайт.
Экспортируем его из exchange из панели ecp, при этом создаём пароль не менее 4 символов при экспорте. Получаем файл .pfx.
Из PFX в KEY и CRT с помощью openssl
Ставим себе openssl программу, настраиваем её вводя команды для работы только в первой текущей сессии через командную строку:
set OPENSSL_CONF=C:\OpenSSL-Win64\bin\openssl.cfg set Path=%Path%;C:\OpenSSL-Win64\bin
Затем этой программой экспортируем приватный ключ из файла .PFX, но он будет зашифрован. И наконец, расшифровать его опять программой openssl. Вытаскиваем открытую часть pfx-сертификата:
openssl pkcs12 -in z.pfx -clcerts -nokeys -out certificate.crt
Извлечь закрытую часть сертификата (вместе с приватным ключом), поместив её в отдельный запароленный файл:
openssl.exe pkcs12 -in z.pfx -nocerts -out encrypted.key
После выполнения команды вам придется ввести не только пароль, который использовался для экспорта .pfx-сертификата, но и новый пароль, необходимый для защиты .key-файла.
Закрытый ключ сертификата с парольной защитой не всегда удобно использовать на реальном окружении. Например, Apache будет спрашивать пароль при каждом рестарте сервиса, что будет требовать человеческого участия. Обойти проблему можно, сняв пароль с закрытого ключа:
openssl rsa -in encrypted.key -text -out rsa.key
Установка сертификата с ключом на веб сервер
У нас есть сертификат, ключ, а также цепочка из корневого и промежуточного (которые получили вначале), теперь их можно установить на веб сервер.
Всё поставилось без проблем. Это самый простой и быстрый вариант.
Полученный из центра сертификации сертификат с ключами можно поставить только на веб сервер. На exchange он будет ставится с проблемами и дольше гораздо. Вроде бы можно поставить новый сертификат, который встал на exchange успешно с прошлым ключом на веб-сервер — нет, нельзя, он не поставится. Поэтому алгоритм только как описан выше.