LINUX.ORG.RU

Добавить сертификат во все браузеры

 


0

1

Пытался побороть варнинги в браузерах следуя этой страницеhttps://openwrt.org/docs/guide-user/luci/getting_rid_of_luci_https_certificate_warnings

Правда это работает только в хромиум, лиса зачеркивает замочек в адресной строке и говорит, что соединение незащищено…

Случайно нашел Включить https Luci (комментарий) все работает, но нужно врукопашную заниматься импортом. Нельзя ли как то добавить сразу во все?

Нелишним будет призвать сюда @AEP.


Наверное более правильным вариантом будет использование сертификата Let’s Encrypt. Погугли, может уже есть готовый клиент.

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

Там свои заморочки и их много…

По первой ссылке есть команда, создающая ~/.pki/nssdb, которая в свою очерез подхватывается всеми браузерами. Думал, что созданный мной uhttpd.crt по руководству AEP’a я смогу добавить в систему, но нет, в центрах сертификации нет добаляемого…

Banono
() автор топика
Ответ на: комментарий от Banono

А зачем с lets encrypt что либо добавлять в браузеры? Там и так есть.

Все, что нужно, это днс-имя какого то уровня в интернет-доменах было и все.

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

Часть про добавление в браузеры совсем не про Let’s Encrypt.

Banono
() автор топика

Команда для добавления своего корневого сертификата во все браузеры является дистрозависимой.

Arch Linux: sudo trust anchor /path/to/ca_certificate.pem

Fedora: sudo cp ca_certificate.pem /etc/pki/ca-trust/source/anchors/ && sudo update-ca-trust

Debian/Ubuntu: sudo cp ca_certificate.pem /usr/local/share/ca-certificates/ && sudo update-ca-certificates (не работает в Firefox)

Важно: чтобы в Chromium’е тоже работало, необходима цепочка из двух сертификатов, корневого (который и надо добавлять) и конечного. px5g (который по умолчанию в openwrt) генерирует просто самоподписанный сертификат, что уже давно неправильно.

Я поступил проще: свой бесплатный домен на dynv6.com + Let’s Encrypt через acme.sh (с валидацией через DNS). См. https://crt.sh/?id=6172486727

AEP ★★★★★
()
Последнее исправление: AEP (всего исправлений: 2)
Ответ на: комментарий от AEP

Привет! Спасибо, что ответили! Все получилось и работает довольно хорошо. Если позволите, у меня осталась пара вопросов:

  1. Как сменить rsa на ed25519?

  2. При появлении нового устройства мне нужно проходить шаги с созданием и добавлением еще одного сертификата в систему или есть возможность как-то «создать и подписать» существующим (добавленным в систему ca.crt)? Если да, то как именно?

Banono
() автор топика
Ответ на: комментарий от Banono
  1. Сгенерировать оба сертификата заново. См. https://blog.pinterjann.is/ed25519-certificates.html - только там самоподписанный сертификат, а не цепочка из двух. И не факт, что это заработает на OpenWRT (который использует mbedtls), так как это никому не нужно, так как официальных удостоверяющих центров с ed25519 нет и не может быть, поскольку это запрещено cab forum’ом. Update: на сайте написано, что это не заработает: «Unfortunately, none of the major browsers seem to support ED25519 based certificates for TLS as of now». Т.е. единственный известный работоспособный клиент - это OpenSSL. Может, вы имели в виду ECDSA, а не ed25519?

  2. Не понял вопрос. Подписывание вообще производится с использованием приватного ключа и сертификата. Если у вас появится еще одно серверное устройство (NAS какой-нибудь), то придется создать новый сертификат для NAS, подписанный уже имеющимся CA-ключом. На клиентские устройства, уже имеющие CA-сертификат, ничего ставить не нужно.

У нас, похоже, есть недопонимание, связанное с тем, как должна выглядеть цепочка сертификатов. Можно посмотреть вывод такой команды?

openssl s_client -connect 192.168.1.1:443 -showcerts </dev/null
AEP ★★★★★
()
Последнее исправление: AEP (всего исправлений: 1)
Ответ на: комментарий от AEP

Может, вы имели в виду ECDSA, а не ed25519?

Возможно. А ECDSA заработает на openwtr?

Подписывание вообще производится с использованием приватного ключа и сертификата. Если у вас появится еще одно серверное устройство (NAS какой-нибудь), то придется создать новый сертификат для NAS, подписанный уже имеющимся CA-ключом. На клиентские устройства, уже имеющие CA-сертификат, ничего ставить не нужно.

Скрипт создает все и сразу, но он не подразумевает создание и подпись отдельного сертификата (для того же NAS, например). Как это исправить?

Banono
() автор топика
Ответ на: комментарий от Banono

ECDSA не пробовал.

По поводу глупого и непонятного скрипта, который создает все сразу, а не то, что нужно - не пользоваться этим скриптом. И купить курс по написанию bash-скриптов, например этот: https://www.nobleprog.ru/cc/bashp1/ (продвигаю, поскольку раньше работал на эту компанию).

Можно пользоваться напрямую OpenSSL. Вот так (RSA):

  1. Создаем каталог для этого дела
mkdir certs ; cd certs
  1. Создаем самоподписанный корневой сертификат
openssl req -newkey rsa:4096 -x509 -nodes -keyout ca.key -subj "/C=RU/CN=My Own Root CA" -days 3650 -out ca.crt
  1. Ставим ca.crt во все браузеры.

  2. Для каждого устройства создаем запрос на сертификат, а затем этот запрос подписываем.

openssl req -newkey rsa:4096 -addext "subjectAltName=DNS:openwrt,DNS:openwrt.lan,IP:192.168.1.1" \
-nodes -keyout openwrt.key -subj "/CN=openwrt" -out openwrt.csr

openssl x509 -req -days 365 -extfile <(printf "subjectAltName=DNS:openwrt,DNS:openwrt.lan,IP:192.168.1.1") \
-in openwrt.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out openwrt.crt

Еще одна возможная альтернатива для создания сертификатов - использовать EasyRSA.

AEP ★★★★★
()
Ответ на: комментарий от AEP

Огромное спасибо! И простите, если раздражаю.

Banono
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.