Публикация

Самоподписной ssl сертификат для внутреннего использования

SSL сертификаты позволяют шифровать данные, от пользователя к веб-сервису. В 2023 все данные в сети передаются зашифрованными, найти сайт с открытой передачей по http(без s) уже проблематично и о небезопасности такого сайта первым предупредит браузер.

Использовать или нет сертификаты (шифрование) внутри своей домашней сети вопрос дискуссионный

Я долгое время не заморачивался с ними, поскольку свои сервисы наружу в большой интернет не открываю, а внутри мне скрываться не от кого. Но однажды нашел обсуждение, где один из доводов в защиту сертификатов во внутренней сети было: “вы же даете свой пароль wifi гостям, друзьям - значит в вашей сети все-таки появляются недоверенные устройства, которые потенциально могут перехватывать открытый трафик”. А когда выяснил насколько легко создать и использовать ssl-сертификаты, вопрос их применения был решен.

1
2
3
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
  -keyout example.key -out example.crt -subj "/CN=example.com" \
  -addext "subjectAltName=DNS:example.com" 

Собственно вот, одна команда и все. В результате для сайта example.com получим:

  • example.key - файл ключа
  • example.crt - файл сертификата
  • срок действия 10 лет
  • параметры шифрования rsa:4096 -sha256, что в 2023 являются вменяемыми и достаточными (можете изменить на свое усмотрение)

Можно завести в домашней сети свои Yandex.ru или Youtube.com. Но лучшей практикой - для всей домашней сети выбрать один домен, например doma.net, а все домашние сервисы заводить на его поддомены, т.е. youtuba.doma.net, homeassistanta.doma.net и др.

1
2
3
openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
  -keyout domanet.key -out domanet.crt -subj "/CN=*.doma.net" \
  -addext "subjectAltName=DNS:*.doma.net" 

Это командой создается ключ и сертификат для всех поддоменов *.doma.net

Из минусов - все современные браузеры все равно будут ругаться на эти сертификаты и показывать “Соединение не защищено”, т.к. не могут проверить поставщика (а поставщик мы сами) сертификата. Но шифрование при этом работает.

Да, можно использовать подтвержденные бесплатные сертификаты Lets encrypt, но для них надо:

  • купить доменное имя
  • скорее всего вы захотите скрыть свои контактные данные, как владельца домена - а это услуга платная
  • заплатить за перенаправление домена на DNS серверы
  • заплатить за DNS-хостинг
  • внести DNS-записи, для перенаправления доменного имени на свой IP-адрес.
  • Заплатить за статический IP-адрес, либо настроить сервис DDNS
  • Открыть и пробросить порты 80/443 до каждого сервиса, на который выдается сертификат
  • Обновлять бесплатный сертификат каждые 3 месяца

Бесплатности тут мало, а заморочек много. Сертификаты Lets encrypt я тоже использую, но для внешних сервисов, например - для этого сайта. А для внутренней домашней сети, мне достаточно самоподписных, с коротким и красивым доменом.

Вывод: использовать сертификаты легко и полезно.

Публикация защищена лицензией CC BY 4.0 .