Dodawanie certyfikatu z podpisem własnym do „zaufanej listy”

87

Wygenerowałem samopodpisany certyfikat dla mojego serwera kompilacji i chciałbym globalnie zaufać certyfikatowi na moim komputerze, ponieważ sam utworzyłem klucz i mam dość ostrzeżeń.

Jestem na Ubuntu 12.04. Jak mogę wziąć certyfikat i globalnie mu ufać, aby przeglądarki (Google Chrome), narzędzia CLI (wget, curl) i języki programowania (Python, Java itp.) Ufały połączeniu z https://mysite.com bez pytania pytania?

Naftuli Kay
źródło
Wszystkie TLS powinny być wektoryzowane przez OpenSSL, więc to jest miejsce, w którym można szukać dokumentacji. W tym przypadku: gagravarr.org/writing/openssl-certs/… wydaje się przydatny.
msw

Odpowiedzi:

87

Prosta odpowiedź na to jest taka, że ​​prawie każda aplikacja będzie traktować to inaczej.

Również OpenSSL i GNUTLS (najczęściej używane biblioteki przetwarzania certyfikatów używane do obsługi podpisanych certyfikatów) zachowują się inaczej w traktowaniu certyfikatów, co również komplikuje problem. Również systemy operacyjne wykorzystują różne mechanizmy do korzystania z „głównego urzędu certyfikacji” używanego przez większość stron internetowych.

Poza tym, podając jako przykład Debiana. Zainstaluj ca-certificatespakiet:

apt-get install ca-certificates

Następnie skopiuj publiczną połowę swojego niezaufanego certyfikatu CA (tego, którego używasz do podpisania CSR) do katalogu certyfikatów CA (jako root):

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

I przebuduj katalog z dołączonym certyfikatem, uruchom jako root:

dpkg-reconfigure ca-certificates

i wybierz askopcję, przewiń do certyfikatu, zaznacz go do włączenia i wybierz ok.

Większość przeglądarek korzysta z własnej bazy danych urzędów certyfikacji, dlatego też narzędzia takie certutilmuszą być używane do modyfikowania ich zawartości (w Debianie dostarczanym przez libnss3-toolspakiet). Na przykład w Chrome uruchamiasz coś w stylu:

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

Firefox pozwoli ci przejść do certyfikatu na dysku, rozpoznać go jako plik certyfikatu, a następnie zaimportować go do listy Root CA.

Większość innych poleceń, takich jak curlprzejęcie przełączników wiersza polecenia, których można użyć do wskazywania urzędu certyfikacji,

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

lub całkowicie zrezygnuj z sprawdzania poprawności protokołu SSL

 curl --insecure https://...

Reszta będzie wymagała indywidualnego dochodzenia, jeśli ca-certificatespodobny trik nie posortuje go dla tej konkretnej aplikacji.

Drav Sloan
źródło
Jak wspomniano tutaj , dodawanie certyfikatów CA dla Javy jest również osobną sprawą.
Naftuli Kay
2
Po skopiowaniu certyfikatu do / usr / share / ca-certyfikatów nie widzę go na dpkg-reconfigure ca-certificatesliście. Co ja robię źle?
Georges Dupéron
18
@ GeorgesDupéron To mi się przydarzyło. Rozwiązałem to, zmieniając nazwę certyfikatu z whatever.pemna whatever.crt.
Hello World,
2
Do twojej wiadomości, miałem plik certyfikatu o nazwie .ceri to nie działało. Musiałem zmienić nazwę, aby .crtto było rozpoznane.
Tri Nguyen
53

Podejście nieinteraktywne

Aby użyć w nieinteraktywnym kontekście (np. Przepis szefa kuchni), możesz użyć następującej sekwencji.

sudo cp my.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
  • Testowane i działa na Debianie 5/6 i Ubuntu 14.04.
  • Aby uzyskać więcej informacji, zobacz man update-ca-certificates

Ta metoda jest lepsza niż metoda @ Drav, ponieważ /usr/share/zwykle jest zarezerwowana dla plików dodanych przez system operacyjny / apt-get.

oDDsKooL
źródło
4
Lepiej jest skopiować pliki, /usr/local/share/ca-certificates/jak wspomniano na stronach
podręcznika
3
FYI A musi być a .crt, stwierdziłem .cert, że zostało dodane, ale nie pomogło
KCD
6

W Fedorze 23 dodaj plik .pem lub .der /etc/pki/ca-trust/source/anchors/i uruchom sudo update-ca-trust extract.

Zobacz man update-ca-trustszczegóły, np. Czy użyć / etc lub / usr.

użytkownik7610
źródło
4

W centach:

cp *.pem /etc/pki/ca-trust/source/anchors/
update-ca-trust extract
ważka
źródło
Kiedy to zrobić, czy openssl connectpowinienem określać ten folder / anchors? Nadal self signed certs
pojawia
2

Podejście nieinteraktywne (18 października)
dla najnowszych systemów opartych na Debianie

Istnieje różnica między dodawaniem certyfikatu do sklepu hosta a aktywowaniem go, aby aplikacje naprawdę z niego korzystały. Istniejące certyfikaty w sklepie niekoniecznie są używane (chociaż muszę przyznać, że i tak wiele błędów jest błędnych).
Może to być mylące, gdy konfigurujesz pakiet, który rozważa /etc/ca-certificate.confi po prostu odmawia użycia twojego certyfikatu, chociaż ma zostało dodane bez błędu. Musisz update-ca-certificateswyraźnie powiedzieć (nie tylko kopiować, ale) aktywować certyfikat, dodając go do /etc/ca-certificate.conflub /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;

Teraz robi się to mylące, ponieważ istnieje sposób na niejawne zaufanie do certyfikatu przy użyciu innej ścieżki:

CERT=mycert.crt
cp /mypath/to/$CERT /usr/local/share/ca-certificates/$CERT
update-ca-certificates;
3ronco
źródło