У меня есть сервер gitlab, работающий в нашей компании, для которого я получил сертификат, подписанный центром сертификации нашей компании. Поскольку я могу получить доступ к сайту с машины в нашем домене без ошибок SSL, я предполагаю, что сервер настроен правильно.
При работе с ноутбуком у меня, конечно, не было сертификата ЦС компании. Например openssl s_client -connect my.git.server:443
вернет "Ошибка 19, самоподписанный сертификат в цепочке":
0 s:/C=REDACTED
i:/DC=REDACTED/DC=REDACTED/CN=IssuingCA
1 s:/DC=REDACTED/DC=REDACTED/CN=IssuingCA
i:/CN=RootCA
2 s:/CN=RootCA
i:/CN=RootCA
Итак, я получил доступ к серверу и экспортировал сертификат корневого центра сертификации. Затем я добавил его в свой системный магазин:
sudo su
cp RootCA /usr/local/share/ca-certificates/extra/RootCA.crt
update-ca-certificates
Теперь openssl принимает это нормально (код возврата 0, хорошо). Однако Google Chrome по-прежнему жалуется:
Этот сервер не смог доказать, что это my.git.server; его сертификат безопасности не доверяет вашему операционная система компьютера.
Если бы не это сообщение, я бы подумал, что Chrome имеет собственное хранилище сертификатов и не заботится об ОС. Но кажется совершенно очевидным, что сертификат является доверяет ОС, и Chrome обращается к ней.
Я использую Ubuntu 18.04. Это просто причуда Chrome в том, что он не уважает системные сертификаты, или мне что-то не хватает?
В Ubuntu Chrome использует собственное хранилище сертификатов. Вы можете импортировать свой RootCA.crt в Chrome
настройки -> конфиденциальность и безопасность -> управление ключами безопасности -> управление сертификатами -> полномочия
Обратите внимание, что обновление хранилища сертификатов системы ubuntu update-ca-certificates
не влияет на Chrome.