Решил подготовить пошаговую инструкцию, чтобы быстро выпустить свой сертификат через свой CA, добавив его к себе в доверенные, чтобы браузеры не ругались. Во многих ситуациях это будет удобнее, чем постоянно обновлять доверенные сертификаты через интернет. Свой можно выпустить вечным. Покажу на примере настройки сертификата в Nginx.
Будем выпускать сертификат для доменного имени zabbix.internal и IP адреса 172.30.245.222. Будет работать и так, и эдак.
Выпускаем ключ и сертификат для своего CA:
# mkdir ~/tls && cd ~/tls# openssl ecparam -out myCA.key -name prime256v1 -genkey# openssl req -x509 -new -nodes -key myCA.key -sha256 -days 9999 -out myCA.crtВам зададут серию вопросов. Отвечать можно всё, что угодно. В данном случае это не важно. Выпускаем ключ и сертификат для сервера:
# openssl genrsa -out zabbix.internal.key 2048# openssl req -new -key zabbix.internal.key -out zabbix.internal.csrТут тоже зададут похожие вопросы. Отвечать можно всё, что угодно. Готовим конфигурационный файл:
# mcedit zabbix.internal.extauthorityKeyIdentifier=keyid,issuerbasicConstraints=CA:FALSEkeyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEnciphermentsubjectAltName = @alt_names[alt_names]IP.1 = 172.30.245.222DNS.1 = zabbix.internalГенерируем сертификат на его основе:
# openssl x509 -req -in zabbix.internal.csr -CA myCA.crt -CAkey myCA.key \-CAcreateserial -out zabbix.internal.crt -days 9999 -sha256 -extfile zabbix.internal.extКопируем сертификат и ключ в директорию веб сервера:
# mkdir /etc/nginx/certs# cp zabbix.internal.crt /etc/nginx/certs/.# cp zabbix.internal.key /etc/nginx/certs/.Создаём файл dhparam, который понадобится для конфигурации Nginx:
# openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048Добавляем в конфиг Nginx в целевом виртуальном хосте:
listen 443 http2 ssl;server_name zabbix.internal 172.30.245.222;ssl_certificate /etc/nginx/certs/zabbix.internal.crt;ssl_certificate_key /etc/nginx/certs/zabbix.internal.key;ssl_dhparam /etc/ssl/certs/dhparam.pem;Перезапускаем Nginx:
# nginx -t# nginx -s reloadПередаём на свой компьютер файл myCA.crt и добавляем его в хранилище корневых доверенных центров сертификации. Настройка будет зависеть от операционной системы. Если нужно тут же, локально на сервере с Debian 12 настроить доверие этому CA, то делаем так:
# cp myCA.crt /usr/local/share/ca-certificates/.# update-ca-certificatesТеперь можно браузером заходить по доменному имени или IP адресу, будет работать самоподписанный сертификат на 9999 дней без каких-либо предупреждений.
Получилась готовая инструкция для копипаста, которую можно сохранить и пользоваться.
#webserver