Сертификат для Linux в центре сертификации Active Directory Certificate Services


Если в сети есть домен с контроллером и центр сертификации Microsoft, для внутреннего использования можно создавать собственные сертификаты, для которых браузер не будет выдавать ошибку. Если с запросом и установкой сертификата на Windows возникает меньше вопросов, то получение сертификата для Linux выполнить немного сложнее.
В этой статье мы создадим правильный сертификат с указанием альтернативного DNS-имени, без которого программы могут возвращать ошибку сертификата.
1. Формируем файл запроса (на компьютере с Linux)
Для начала создаем каталог, в котором планируем хранить сертификаты и перейдем в него, например:
mkdir -p /etc/ssl/adcs
cd /etc/ssl/adcs
Создаем закрытый ключ:
openssl genrsa -out private.key 2048
* в данном примере создан 2048-и битный ключ с именем private.key
Создаем файл с описанием запроса:
vi openssl.conf
[req]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_extensions
distinguished_name = dn
[dn]
C=RU
ST=SPb
L=SPb
O=Global Security
OU=IT Department
emailAddress=hostmaster@dmosk.ru
CN = *.dmosk.local
[req_extensions]
subjectAltName = @alter_name
[alter_name]
DNS.1 = *.dmosk.local
* где стоит обратить внимание на следующее:
- sha256 (или SHA-2) — алгоритм шифрования;
- *.dmosk.local — имя узла, к которому мы будем обращаться. Это очень важный пункт — нужно, чтобы имя совпадало с именем, по которому будут выполняться обращения. В данном примере создается wildcart (домен и все его поддомены)
- subjectAltName — альтернативные имена стали иметь значение с 2017 года, когда некоторые браузеры перестали принимать сертификаты без указания альтернативных DNS-имен.
Далее создаем ключ запроса сертификата:
openssl req -new -key private.key -out request.csr -config openssl.conf
* где private.key — закрытый ключ, который был сформирован на предыдущем шаге; request.csr — файл, который будет сформирован. В нем будет запрос на открытый ключ;
После выполнения команды, в каталоге появится файл request.csr. Выведем его содержимое, чтобы посмотреть запрос:
cat request.csr
Должны увидеть что-то на подобие:
-----BEGIN CERTIFICATE REQUEST-----
MIIC1jCCAb4CAQAwgZAxCzAJBgNVBAYTAlJVMQwwCgYDVQQIDANTUGIxDDAKBgNV
BAcMA1NQYjEYMBYGA1UECgwPR2xvYmFsIFNlY3VyaXR5MRYwFAYDVQQLDA1JVCBE
ZXBhcnRtZW50MR4wHAYDVQQDDBVzaW1wbGVwbGFuLnNhdHMubG9jYWwxEzARBgNV
BAMMCnNpbXBsZXBsYW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ
ze/WOQgnlbfzlEsQUsmfUTnkYq0rCpzgjY360lFvqek5Y8NIFX/25PRbUy4N3D8r
c/7mXt2dXmcnn7zeRQOB2g0AY8Wmeg3R6C+JH7TwxtkMj7FO8R59URxFN84lu9Sj
26Aw+Ax7474XnAoUBMSmUXbV2mAP5Xm83sjvjE1OcHXN8SPbc+EchZuLVLsIGXHz
Emz7V4D/ecahfSc2hCRG2Pc7SeFIADYdjyoLtykz5WyiIoXkpEfSNQHlt2/A1kJ5
h9/GPXMVJVL02FgsI5HIGZyGnYWA+cP7sHoEDZNpLHHuEtfwx3bLxJPFnZDa0rPO
LhV/ux1e6b9ikrge0xp9AgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAQEAPVD2aVH8
ZDz+6s8ecKr08eT3mA9cRCa7dZYFj4/vO/ZYrDH9QS45gd0sYG+RN+JMGaFaY+X7
faE4m0BysPIbhEYLRY5GJYxmOGm05gM2HfPrcnnWXZbPQu/n5pR4ptvPYL7bilGb
z6hXb8ZtXUXwz1F2OgTPOPu4+w8lI23pzHRHlCXcVSoZxe/A2XwusB5MrtyMEYtj
rB2kcOqQRkt9uIv5IobwnYaVGDk/7wl/zkb9K+RKZt4izKfFaSSyPn7wvpKSIaAf
S3SQjJ0tBckLbtwKrxdFB0B8bpyIKUtHmpX/zOmityC8PLXe6/vQ/DmM3B6QC4Ba
KdnRkOSPv8BGog==
-----END CERTIFICATE REQUEST-----
2. Выпускаем сертификат
Копируем содержимое файла запроса (request.csr) и открываем веб-страницу центра сертификации — как правило, это имя сервера или IP-адрес + certsrv, например, http://192.168.0.15/certsrv/.
В открывшемся окне переходим по ссылкам Запроса сертификата - расширенный запрос сертификата.
В поле «Сохраненный запрос» вставляем скопированный запрос, в а поле «Шаблон сертификата» выбираем Веб-сервер:
Нажимаем Выдать и скачиваем сертификат по ссылке Загрузить сертификат:
3. Установка сертификата на Linux
Переносим полученный сертификат на компьютер с Linux, например, при помощи WinSCP.
После необходимо сконвертировать DER-сертификат (от AD CS) в PEM-сертификат (для Linux). Для этого вводим следующую команду:
openssl x509 -inform der -in certnew.cer -out public.pem
* где certnew.cer — файл, который мы получили от центра сертификации AD CS (как правило, у него такое имя); public.pem — имя PEM-сертификата.
Сертификат готов к использованию. Мы сформировали:
- private.key — закрытый ключ.
- public.pem — открытый ключ.