Sysadmin
May 15

Установка сертификатов удостоверяющих центров в Debian/Ubuntu Linux

Некоторые приложения или сервисы в Linux, на самом деле подавляющее большинство, и в частности веб серверы, такие как NGINX или Apache, устанавливают защищенные SSL шифрованием HTTPS подключения. Установленные в системе сертификаты корневых удостоверяющих центров CA используются этими приложениями для проверки подлинности предоставляемых их клиентами сертификатов.

Установка центра сертификации

Установите пакет корневых сертификатов ca-certificates

apt install -y ca-certificates

Установка сертификатов

Скопируйте заказанный .cer или .crt файл сертификата

cp your_certtificate.crt /usr/local/share/ca-certificates

Конвертация сертификата

Если сертификат получен в формате .pem, то его следует предварительно перевести с .crt формат, используя библиотеку OpenSSL

openssl x509 -outform der -in your_certificate.pem -out your_certificate.crt

После конвертирования можно скопировать файл в нужную папку.

Обновление сертификатов

После этого остается лишь обновить сертификаты и сгенерировать ca-certificates.crt файл, содержащий все установленные в системе сертификаты:

update-ca-certificates

Это обновит файл на основании ссылок из
/etc/ca-certificates.conf
сертификатов из директории
/etc/ssl/certs
и добавит содержимое новых устанавливаемых сертификатов из директории
/usr/local/share/ca-certificates

Обновление в Debian/Ubuntu Linux

В Debian Linux есть визуальный инструмент для обновления сертификатов

dpkg-reconfigure ca-certificates

где можно выбрать устанавливаемые сертификаты или удалить ненужные.

Создание самоподписанного сертификата

Для создания самоподписанного сертификата и загрузки его в секреты Kubernetes:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ssl/tls.key -out ssl/tls.crt -subj "/CN=antroot.ru"
kubectl create secret tls antroot-ru-cert --cert=/ssl/tls.crt --key=/ssl/tls.key
kubectl create secret tls antroot-ru-cert --cert=/ssl/tls.crt --key=/ssl/tls.key -n traefik-ingress

Создать файл для добавления альтернативных имен

authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names

[alt_names]
DNS.1 = megacorp.ru

Создать самоподписанный сертификат

openssl genrsa -out selfsigned.key 2048
openssl req -new -key selfsigned.key -out selfsigned.csr
openssl x509 -req -in selfsigned.csr -CA ca.pem -CAkey ca.key -CAcreateserial -out selfsigned.crt -days 365 -sha256 -extfile v3.ext