Рассмотрим пример установки цифрового сертификата X509 на веб-сервер Apache, выданного локальным корневым Центром сертификации, работающим на Windows Server 2008. Пошагово решение задачи состоит из нескольких последовательных шагов:
- Генерация запроса на сертификат средствами OpenSSL к ЦС Windows;
- Получение от ЦС файла сертификата (.cer) в формате DER X509
- Конвертация полученного сертификата в .pem и прикручивание оного к веб-серверу Apache
Для того чтобы создать запрос к ЦС Windows нам понадобиться OpenSSL, а именно конкретно 3 файла из его состава - openssl.exe, ssleay32.dll, libeay32.dll. Сложим их в один каталог, например в каталог \Documents в профиле пользователя. Далее создаем закрытый ключ:
C:\Documents>openssl genrsa -out APACHE-SERVER.key 1024 Loading 'screen' into random state - done Generating RSA private key, 1024 bit long modulus ................++++++ .......................++++++ unable to write 'random state' e is 65537 (0x10001)
После этого в нашем каталоге появиться файл с ключом. Далее с использованием этого файла мы подготовим запрос к ЦС. Но для этого подготовим конфигурационный файл для OpenSSL, чтобы он не задавал нам лишних вопросов. Итак создаем текстовый файл my_openssl.cnf со следующим содержимым:
[ req ] distinguished_name = req_distinguished_name [ req_distinguished_name ] commonName = FQDN of server commonName_default = APACHE-SERVER.mydom.com countryName = Country Name (2 letter code) countryName_default = RU 0.organizationName = Organization Name (eg, company) 0.organizationName_default = MyCompany localityName = Locality Name (eg, city) localityName_default = Syktyvkar organizationalUnitName = Organizational Unit Name (eg, section) organizationalUnitName_default = KOMI
Как вы понимаете, в этом файле мы указываем параметры, которые нужны для идентификации запроса сертификата в ЦС, т.е. указываем имя сервера которому требуется сертификат, имя организации и т.п..
Далее создаем запрос на сертификат с учётом подготовленных ранее параметров:
C:\Documents>openssl req -config my_openssl.cnf -new -key APACHE-SERVER.key -out APACHE-SERVER.req
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- FQDN of server [APACHE-SERVER.mydom.com]: Country Name (2 letter code) [RU]: Organization Name (eg, company) [MyCompany]: Locality Name (eg, city) [Syktyvkar]: Organizational Unit Name (eg, section) [KOMI]:
Полученный файл запроса APACHE-SERVER.req загружаем в центр сертификации Windows Server, в ЦС выдаем сертификат на загруженный запрос. Выгружаем из ЦС новый сертификат в файл APACHE-SERVER.cer. Теперь наша задача - конвертировать наш бинарный DER сертификат в формат, понятный для Apache, и делаем мы это так:
C:\Documents>openssl x509 -in APACHE-SERVER.cer -inform d -out APACHE-SERVER.pem
Всё, что нам нужно - готово, а именно файлы key и pem. Делаем соответствующие изменения в файле конфигурации сервера Apache - httpd.conf - вписываем туда ссылки на наш сертификат:
SSLEngine On SSLCertificateFile "C:/Private/APACHE-SERVER.pem" SSLCertificateKeyFile "C:/Private/APACHE-SERVER.key"
После чего перезапускаем сервис Apache2, и если всё сделали правильно, то при обращении на веб-узел увидим, что Apache использует наш сертификат.
Спасибо за статью! Все четко и ясно, получилось настроить с первого раза без проблем.
Обратная ссылка: Развёртывание и настройка Icinga 2 на Debian 8.6. Часть 10. Аутентификация и авторизация пользователей Active Directory в Icinga Web 2 (Kerberos и SSO) | Блог IT-KB /
Обратная ссылка: Digi AnywhereUSB 24 Plus : AnywhereUSB Manager и ошибка подключения "ERROR :SSL Server verification (passed in) error: (20) unable to get local issuer certificate" — Блог IT-KB /