Программная установка SSL-сертификата в хранилище браузера

#go #firefox #certificate

#Вперед #firefox #сертификат

Вопрос:

У меня есть приложение, написанное на Go, для которого в веб-браузере (в идеале Firefox) должен быть установлен самозаверяющий сертификат.

Конечно, я могу предоставить конечным пользователям инструкции по установке сертификата, но это далеко от идеала.

В идеале я хочу программно добавить сертификат — используя firefox API, командную строку, взлом реестра или какой-либо другой подход. Конечно, мне бы понравилось кроссплатформенное решение, но даже Windows только для начала.

Комментарии:

1. может быть, это? Вы можете использовать его с Let’s Encrypt godoc.org/golang.org/x/crypto/acme/autocert — не уверен, что это соответствует вашему конкретному варианту использования, это больше для SSL-приложений

2. @Slabgorb — нет, я не думаю, что это помогает — у меня есть нужные сертификаты, вопрос в том, как установить их в браузер.

3. Я бы начал с понимания wiki.mozilla.org/CA/AddRootToFirefox

4. Это будет зависеть от браузера. Вероятно, проще добавить сертификат в хранилище доверенных сертификатов операционной системы.

5. @richp10, да, ваш анализ примерно на 100% верен, но учтите, что FF можно убедить заглянуть в хранилище сертификатов для конкретной ОС только в Windows. Платформы на базе Linux просто не имеют такового (у большинства из них есть системный сертификат, специфичный для OpenSSL, который также используется GNUTLS FWIW, но библиотека «NSS», используемая FF для обработки материалов, связанных с SSL / TLS, не может получить к нему доступ), и я, честно говоря, понятия не имею, какова ситуация на платформах OS X (я подозреваю, что там люди склонны, кхм, думать иначе и использовать то, что предустановлено).

Ответ №1:

Я опаздываю с этим, но вы можете программно добавить самозаверяющие или ненадежные корневые сертификаты в FireFox, которые распространяются по всему дистрибутиву (не привязаны к браузеру какого-либо пользователя). Вот что у меня получилось для работы в Ubuntu 18.04 с FireFox 85.0:

  1. Добавьте сертификат (с расширением .crt в формате PEM) в /usr/local/share/ca-certificates или /usr/share/ca-certificates. И то, и другое подходит, но вам нужно обновить место установки в JSON ниже.
  2. sudo update-ca-certificates
  3. Создайте этот json-файл: /usr/lib/firefox/distribution/policies.json с приведенным ниже кодом
 {
    "policies": {
        "Certificates": {
            "ImportEnterpriseRoots": true,
            "Install": [
                "/usr/local/share/ca-certificates/<$NAMEOFYOURCERT.crt>"
      ]
    }
  }
}
  

Вы действительно могли бы пропустить шаги 1/2 и указать место установки в политиках.файл json в любое место, где находится сертификат, но это гарантирует, что ваша ОС также доверяет сертификату, а не только FireFox.

Довольно просто преобразовать эти инструкции в загрузочный скрипт для установки ОС или одноразовый скрипт, который можно передать пользователям для запуска, если вы им доверяете.