Установка сертификата от Windows Server CA на веб-сервер Apache

imageРассмотрим пример установки цифрового сертификата 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 использует наш сертификат.

Добавить комментарий