Добавление самозаверяющего сертификата в «список доверенных»

88

Я сгенерировал самоподписанный сертификат для своего сервера сборки, и я хотел бы в целом доверять сертификату на своей машине, так как я сам создал ключ, и мне надоело видеть предупреждения.

Я на Ubuntu 12.04. Как я могу взять сертификат и доверять ему во всем мире, чтобы браузеры (Google Chrome), утилиты CLI (wget, curl) и языки программирования (Python, Java и т. Д.) Доверяли соединению с https://mysite.com, не спрашивая вопросов?

Нафтули Кей
источник
Все TLS должны передаваться через OpenSSL, так что это место для поиска документации. В этом случае: gagravarr.org/writing/openssl-certs/… выглядит полезным.
13:00

Ответы:

88

Простой ответ на этот вопрос заключается в том, что практически каждое приложение будет обрабатывать его по-своему.

Также OpenSSL и GNUTLS (наиболее широко используемые библиотеки обработки сертификатов, используемые для обработки подписанных сертификатов) ведут себя по-разному при обработке сертификатов, что также усложняет проблему. Также операционные системы используют различные механизмы для использования «корневого центра сертификации», используемого большинством веб-сайтов.

Это в стороне, приводя Debian в качестве примера. Установите ca-certificatesпакет:

apt-get install ca-certificates

Затем вы копируете открытую половину вашего ненадежного сертификата CA (тот, который вы используете для подписи своего CSR) в каталог сертификатов CA (как root):

cp cacert.pem /usr/share/ca-certificates

И получите его, чтобы перестроить каталог с включенным сертификатом, запустите от имени пользователя root:

dpkg-reconfigure ca-certificates

и выберите askопцию, выделите ваш сертификат, отметьте его для включения и выберите ОК.

Большинство браузеров используют свою собственную базу данных CA, поэтому certutilдля изменения их содержимого необходимо использовать такие инструменты, как (в Debian, предоставляемом libnss3-toolsпакетом). Например, в Chrome вы запускаете что-то вроде:

certutil -d sql:$HOME/.pki/nssdb -A -t "C,," -n "My Homemade CA" -i /path/to/CA/cert.file

Firefox позволит вам просмотреть сертификат на диске, распознать его как файл сертификата и затем импортировать его в список корневых ЦС.

Большинство других команд, таких как curlпереключатели командной строки, вы можете использовать для указания на ваш CA,

 curl --cacert  /path/to/CA/cert.file https://...

или вообще отказаться от проверки SSL

 curl --insecure https://...

Остальные будут нуждаться в индивидуальном расследовании, если ca-certificatesподобный трюк не сортирует его для данного конкретного приложения.

Драв Слоан
источник
Кроме того, как отмечалось здесь , добавление сертификатов CA для Java также является отдельным вопросом.
Нафтули Кей
2
После копирования сертификата в / usr / share / ca-Certificates я не вижу его в dpkg-reconfigure ca-certificatesсписке. Что я делаю неправильно?
Жорж Дюперон
19
@ GeorgesDupéron Это случилось со мной. Я решил это, переименовав сертификат whatever.pemв whatever.crt.
Hello World,
2
К вашему сведению, у меня есть файл сертификата .cer, и это не сработало. Я должен был переименовать это, чтобы .crtэто было признано.
Три Нгуен
54

Неинтерактивный подход

Для использования в неинтерактивном контексте (например, рецепт шеф-повара) вы можете использовать следующую последовательность действий.

sudo cp my.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
  • Протестировано и работает на Debian 5/6 и Ubuntu 14.04.
  • Для получения дополнительной информации см. man update-ca-certificates

Этот метод предпочтительнее метода @ Drav, поскольку /usr/share/обычно он зарезервирован для файлов, добавленных OS / apt-get.

oDDsKooL
источник
4
Лучше скопировать файлы, /usr/local/share/ca-certificates/как указано в
справочных
3
К вашему сведению, А должен быть .crt, я обнаружил, .certчто он был добавлен, но это не помогло
KCD
6

В Fedora 23, добавьте .pem или .der файл /etc/pki/ca-trust/source/anchors/и запустить sudo update-ca-trust extract.

Подробности man update-ca-trustсмотрите, например, использовать ли / etc или / usr.

user7610
источник
4

В сентосах:

cp *.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract
стрекоза
источник
Когда я openssl connectдолжен указывать эту папку / anchors? Я все еще получаю сообщение об ошибке "self signed certs
Янак Мина
2

Неинтерактивный подход (октябрь 18)
для последних систем на основе Debian

Существует различие между добавлением сертификата в хранилище хоста и его активацией, чтобы приложения действительно использовали его. Существующий сертификат в магазине не обязательно используется (хотя я должен признать, что многие пакеты все равно ошибаются)
Это может сбить с толку, когда вы настраиваете пакет, который рассматривает /etc/ca-certificate.confи просто отказывается использовать ваш сертификат, хотя он имеет был добавлен без ошибок. Вы должны update-ca-certificatesявно указать (не просто скопировать, но) активировать сертификат, добавив его в /etc/ca-certificate.confили /etc/ca-certificate/update.d.

CERT=mycert.crt
cp /mypath/to/$CERT /usr/share/ca-certificates/$CERT
    # notice the + sign which tells to activate the cert!!!
echo "+$CERT" >/etc/ca-certificates/update.d/activate_my_cert
dpkg-reconfigure ca-certificates;

Теперь это сбивает с толку, поскольку существует способ неявного доверия сертификату с использованием другого пути:

CERT=mycert.crt
cp /mypath/to/$CERT /usr/local/share/ca-certificates/$CERT
update-ca-certificates;
3ronco
источник