Не работает сайт по сертификату, выданный от внутреннего ЦС на Windows

Рейтинг: 0Ответов: 2Опубликовано: 18.03.2023

Уже бьюсь несколько дней. Ситуация простая. Есть домен mnivea.ru. Есть тестовый сайт на apache2 на Linux машине Ubuntu - site1.mnivea.ru. Необходимо что бы он работал по SSL сертификату по одному имени site1.mnivea.ru, а не по 80 порту. Что сделал: Сгенерировал запрос и отправил его содержимое на корпоративный ЦС, который на windows Server.

sudo req -new -newkey rsa:2048 -nodes -keyout mnivea_ru.key -out mnivea_ru.csr

И сразу здесь сомнения - как нужно называть ключ и запрос сертификата? (я назвал через нижн подчеркивание, в документации пишут обязательно как доменное имя, где то вообще видел FQDN, то есть mnivea.ru.key или вообще site1.mnivea.ru.key?)

Короче далее, выданный сертификат от ЦС openssl конвертировал в *.crt

x509 -inform DER -in certnew.cer -out mnivea_ru.crt

Итог, имеем 2 файла: mnivea_ru.key и mnivea_ru.crt. Редактирую /etc/apache2/sites-available/default-ssl.conf и вставляю строки:

SSLCertificateFile /etc/apache2/ssl/mnivea_ru.crt
SSLCertificateKeyFile /etc/apache2/ssl/mnivea_ru.key

Перезагрузка systemctl restart apache2 проходит успешно. Начинаю проверять сайт с windows машины, прежде устанавливаю сертификат самого ЦС. И - ошибка сертификата, замок перечеркнут. Проверяю (есть почтовый сервер в этом же домене mail.mnivea.ru) открывается без ругани, то есть сертификат от ЦС правильный и установлен! Но, открываю сайт site1.mnivea.ru и ошибка сертификата. Куда копать?? Где я допускаю ошибку? неправильно названы может файлы? Попробовал например добавить цепочку, склеил конечный сертификат плюс корневой от ЦС (кстати где то пишут последовательность неважна, где-то важна, у меня получилось что последовательность важна)

SSLCertificateFile /etc/apache2/ssl/mnivea_ru.crt
SSLCertificateKeyFile /etc/apache2/ssl/mnivea_ru.key    
SSLCertificateFile /etc/apache2/ssl/mnivea_ru.ca-bundle 

Не помогло. Потом добавил просто еще один сертификат только от ЦС

SSLCertificateFile /etc/apache2/ssl/mnivea_ru.crt
SSLCertificateKeyFile /etc/apache2/ssl/mnivea_ru.key
SSLCertificateFile /etc/apache2/ssl/CA.crt

Не помогло. Еще момент, у меня есть коммерческий сертификат от GlobalSign на два имени для mnivea.ru и при его установке сайт работает! (причем, как просто ключ + конечный серт, так и ключ + конечный серт + серт от ЦС). Но не работает сертификат от корпоративного ЦС! Может нужно машину Linux правильно назвать и где то DNS имя в самой машине Linux.

Еще момент, при создании запроса сертификата обращаю внимание только на поле Common Name где указываю site.mnivea.ru Остальные - города, название организации и т.п указываю любые, любо вообще не заполняю.

Ответы

▲ 0Принят

Почему то никто не догадался ответить, что нужно использовать альтернативные имена (subjectAltName). А subject Name тут играет последнюю роль.

▲ 1

Если вы загляните в сгенерированный сертификат, то вероятнее всего там будет странное доменное имя (если вообще будет). Вам нужно добавить все необходимые поля в запрос. Самый простой способ указать доменное имя сервера - задать его в поле Common Name (CN) поля Subject

Через командную строку - добавьте опцию -subj '/CN=site1.mnivea.ru:

sudo req -new -newkey rsa:2048 -nodes -subj '/CN=site1.mnivea.ru' -keyout mnivea_ru.key -out mnivea_ru.csr 

Затем проверьте, что именно сгенерировано в запросе: openssl req -text -noout -verify -in mnivea_ru.csr

После того, как получите подписанный сертификат, проверьте, что там в поле Subject:

x509 -noout -text -in mnivea_ru.crt