Как добавить самоподписанный корневой сертификат CA в Ubuntu 21.04

Вопрос или проблема

У меня есть экземпляр EC2, для которого я пытаюсь заставить работать локальный wget.

У меня есть собственный набор ключей CA, crt, pem, который я использую для подписания сертификатов запросов моей компании, и он работает хорошо. На веб-сервере (AWS EC2) у меня есть стандартный слушатель Apache2, который обрабатывает весь TLS. Затем я загружаю CA в браузер, и всё работает нормально.

Я даже могу сделать это:

sudo openssl verify -CAfile myCA.pem internal.crt
internal.crt: OK

Так что я знаю, что всё в порядке. Теперь мне нужно написать код и вызвать wget вот так:

wget https://internal.com

Ответ:

--2021-10-10 18:13:34--  https://internal.com/
Разрешение internal.com (internal.com)... x.x.x.x
Подключение к internal.com (internal.com)|x.x.x.x|:443... подключено.
ОШИБКА: не удается проверить сертификат internal.com, выданный ‘CN=myCA,OU=IT,O=myOrg CA,ST=FL,C=US’:
  Невозможно локально подтвердить полномочия удостоверяющего центра.
  ОШИБКА: нет совпадения альтернативного имени сертификата с
запрашиваемым именем хоста ‘internal.com’.

Я следовал некоторым инструкциям по добавлению моего CA в Ubuntu, и я сделал это: взято с (https://askubuntu.com/questions/73287/how-do-i-install-a-root-certificate)

sudo mkdir /usr/local/share/ca-certificates/extra
sudo cp myCA.crt /usr/local/share/ca-certificates/extra/myCA.crt
sudo dpkg-reconfigure ca-certificates

Это выход:

Обновление сертификатов в /etc/ssl/certs...
rehash: предупреждение: пропуск myCA.pem, он не содержит точно одного сертификата или CRL
1 добавлено, 0 удалено; готово.
Обработка триггеров для ca-certificates (20210119ubuntu0.21.04.1) ...
Обновление сертификатов в /etc/ssl/certs...
0 добавлено, 0 удалено; готово.
Запуск хуков в /etc/ca-certificates/update.d...

готово.
готово.

После выполнения вышеуказанного в папке /etc/ssl/certs есть myCA.pem, но это символическая ссылка на myCA.crt

myCA.pem -> /usr/local/share/ca-certificates/extra/myCA.crt

И .pem указывает на .crt, это не может быть правильно, не так ли? Есть какие-нибудь предложения?

Расширение файла .pem не делает его файлом формата PEM, то же самое касается расширения .crt (и любого расширения в общем на Unix системах).

Я столкнулся с этой проблемой на Debian, когда пытался импортировать сертификаты формата DER. Я конвертировал все сертификаты в формат PEM, выполнив:
openssl x509 -inform der -in infile.cer -out outfile.cer

Затем выполнение команды sudo update-ca-certificates прошло успешно.

Это сообщение указывает на проблему:

rehash: предупреждение: пропуск myCA.pem, он не содержит точно одного сертификата

myCA.pem содержит более одного сертификата. Разделите файл на отдельные файлы, вы можете назвать их myCA-1.pem, myCA-2.pem и т.д. Поместите их в /usr/local/share/ca-certificates/extra/ и повторно выполните sudo dpkg-reconfigure ca-certificates

Тогда вы увидите /etc/ssl/certs, содержащий хэши, символически ссылающиеся на ваши файлы сертификатов, и wget должен работать как ожидалось.

lrwxrwxrwx 1 root root     13 Jul 13 10:40  6242745b.0 -> myCA-2.pem

Ответ или решение

Чтобы добавить самоподписанный корневой сертификат CA в Ubuntu 21.04, выполните следующие шаги. Этот процесс позволит вашему EC2 инстансу корректно обрабатывать запросы через wget, обеспечивая безопасность соединений с использованием TLS.

Шаг 1: Подготовка сертификата

Убедитесь, что у вас есть ваш файл сертификата CA в формате PEM. Файл должен выглядеть как единичный сертификат. Если ваш файл содержит несколько сертификатов, вы должны разбить его на несколько отдельных файлов. Для этого используйте текстовый редактор, чтобы отделить каждый сертификат и сохранить их в отдельные файлы, например, myCA-1.pem, myCA-2.pem и так далее.

Шаг 2: Копирование сертификата в правильную директорию

  1. Откройте терминал на вашем EC2 инстансе.
  2. Создайте директорию для дополнительных сертификатов, если она еще не создана:
    sudo mkdir -p /usr/local/share/ca-certificates/extra
  3. Скопируйте ваши сертификаты в эту директорию:
    sudo cp myCA-*.pem /usr/local/share/ca-certificates/extra/

Шаг 3: Обновление сертификатов

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

sudo dpkg-reconfigure ca-certificates

При выполнении данной команды вы должны увидеть сообщение о том, что сертификаты обновляются. Убедитесь, что в выводе не отображаются ошибки, такие как "skipping [certificate]", которые указывали бы на наличие проблем с Certifikate Formats.

Шаг 4: Проверка

После того как процесс завершен, вы можете проверить, правильно ли установлены сертификаты:

ls -l /etc/ssl/certs | grep myCA

Вы должны увидеть символические ссылки на ваши файлы сертификатов.

Шаг 5: Использование wget

Попробуйте снова выполнить команду wget:

wget https://internal.com

Если все шаги выполнены правильно, вы должны успешно получить ответ от сервера без ошибок.

Примечание

Если ошибка все еще появляется, убедитесь, что в вашем сертификате присутствует правильный "Subject Alternative Name" (SAN), соответствующий internal.com. В противном случае вы можете столкнуться с проблемами, связанными с идентификацией сертификата в контексте вашего окружения.

Вывод

Следуя вышеуказанным шагам, вы сможете установить самоподписанный корневой сертификат CA на Ubuntu 21.04, что позволит корректно использовать протокол wget для безопасных соединений. Убедитесь, что сертификаты правильно форматированы и находятся в соответствующей директории, чтобы избежать проблем в дальнейшем.

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

Капча загружается...