TGViewer
NetworkAdmin.ru NetworkAdmin.ru @networkadminru · 4.7K subscribers
Post #741 2.54K
✍️ Быстрый способ выпустить свой HTTPS-сертификат через собственный CA

Сегодня почти любой сервис требует HTTPS. Даже если ресурс локальный или временный, браузеры без сертификата засыпают предупреждениями. Если нет внешнего доступа для Lets Encrypt, приходится копировать сертификаты вручную или постоянно продлевать их.

Гораздо удобнее выпустить свой корневой CA, добавить его в доверенные и генерировать сертификаты под любые домены/IP с любым сроком (хоть на 9999 дней). Покажу, как сделать это для Nginx.

В примере выпускаем сертификат для домена zabbix.internal и IP 192.168.77.55.

1️⃣ Создаем свой 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


На вопросы можно отвечать что угодно, это локальный CA.

2️⃣ Генерируем ключ и CSR для сервера


openssl genrsa -out zabbix.internal.key 2048
openssl req -new -key zabbix.internal.key -out zabbix.internal.csr


3️⃣ Создаем файл расширений


mcedit zabbix.internal.ext


Добавляем:


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

[alt_names]
IP.1 = 192.168.77.55
DNS.1 = zabbix.internal


4️⃣ Выпускаем сертификат


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


5️⃣ Копируем сертификаты в nginx


mkdir /etc/nginx/certs
cp zabbix.internal.crt /etc/nginx/certs/
cp zabbix.internal.key /etc/nginx/certs/


Создаем DH-параметры:


openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048


6️⃣ Настраиваем виртуальный хост nginx


listen 443 http2 ssl;
server_name zabbix.internal 192.168.77.55;
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 -t
nginx -s reload


7️⃣ Делаем CA доверенным

Передайте файл myCA.crt на свой ПК и добавьте в хранилище доверенных сертификатов.

Если нужно доверить CA прямо на Debian:


cp myCA.crt /usr/local/share/ca-certificates/
update-ca-certificates


Теперь можно заходить на сайт по доменному имени или IP, браузер будет полностью доверять сертификату.

#webserver

🧑‍💻 NetworkAdmin
  • 🔥 13
  • 👍 3
  • ❤ 1
  • 🤡 1
More from @networkadminru
  1. Oct 1, 2026CENTI CONF: DevOps Day — митап по разработке и инженерным решениям ⚡️ 6 ноября Centicore G…
  2. Sep 30, 2026🖥 Get-ADUser: полезные примеры для работы с пользователями Active Directory Get-ADUser -…
  3. Sep 30, 2026👁‍🗨 Хочешь разбираться в информационной безопасности, а не просто копировать чужие коман…
  4. Sep 29, 2026🥱 Как быстро разобраться с дисками и маунтами Когда на сервере несколько дисков, LVM, отд…
  5. Sep 28, 2026🔎 TCP keepalive: как находить мертвые соединения до того, как они создадут проблему Иногд…
  6. Sep 25, 2026🤩 Как расшифровать код ошибки Windows через certutil При установке обновлений Windows ран…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →