2012-06-15 16:14:17 +0000 2012-06-15 16:14:17 +0000
186
186

Jak dodać do Ubuntu urząd certyfikacji (CA)?

Moja praca postanowiła wydać własny urząd certyfikacji (CA), aby bezpiecznie obsługiwać różne aspekty naszej pracy bez płacenia za certyfikaty.

  • Kryptograficzne podpisywanie emaili
  • Szyfrowanie zawartości emaili
  • Udostępnianie takich rzeczy jak certyfikat klienta firmy IRC .
  • Automatyczne odbieranie kluczy byłych pracowników

Przesłali mi plik .pem i nie jestem pewien jak dodać go do mojej instalacji Ubuntu. Wysłane instrukcje były: “Podwójne kliknięcie na nim na komputerze Mac powinno go zainstalować.” 

Jak postępować? Czy muszę zrobić coś z OpenSSL aby utworzyć plik .key, .csr, lub .crt?

Odpowiedzi (8)

253
253
253
2014-02-19 19:13:09 +0000

Instalacja CA

Skopiuj swój certyfikat w formacie PEM (format, który ma w sobie ----BEGIN CERTIFICATE----) do /usr/local/share/ca-certificates i nazwij go z rozszerzeniem pliku .crt.

Następnie uruchom sudo update-ca-certificates.

Caveats:Ta instalacja dotyczy tylko produktów, które korzystają z tego sklepu z certyfikatami. Niektóre produkty mogą korzystać z innych sklepów z certyfikatami; jeśli używasz tych produktów, musisz dodać ten certyfikat CA również do tych innych sklepów z certyfikatami. Instrukcje Firefox , Instrukcje Chrome , Instrukcje Java )

Testowanie CA

Możesz sprawdzić, czy to zadziałało, szukając certyfikatu, który właśnie dodałeś w /etc/ssl/certs/ca-certificates.crt (jest to tylko długa lista wszystkich zaufanych CA razem wziętych).

Możesz również użyć OpenSSL’s_klienta, próbując połączyć się z serwerem, o którym wiesz, że używa certyfikatu podpisanego przez CA, który właśnie zainstalowałeś.

$ openssl s_client -connect foo.whatever.com:443 -CApath /etc/ssl/certs

CONNECTED(00000003)
depth=1 C = US, ST = Virginia, O = "Whatever, Inc.", CN = whatever.com, emailAddress = admin@whatever.com
verify return:1
depth=0 C = US, ST = Virginia, L = Arlington, O = "Whatever, Inc.", CN = foo.whatever.com
verify return:1
---
Certificate chain
 0 s:/C=US/ST=Virginia/L=Arlington/O=Whatever, Inc./CN=foo.whatever.com
   i:/C=US/ST=Virginia/O=Whatever, Inc./CN=whatever.com/emailAddress=admin@whatever.com

... snip lots of output ...

    Key-Arg : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1392837700
    Timeout : 300 (sec)
    Verify return code: 0 (ok)

Pierwszą rzeczą, której musisz poszukać jest łańcuch certyfikatów w górnej części wyjścia. Powinien on pokazywać CA jako wystawcę (obok i:). To mówi, że serwer przedstawia certyfikat podpisany przez CA, który instalujesz.

Po drugie, poszukaj verify return code na końcu, który ma być ustawiony na 0 (ok).

69
69
69
2012-06-15 18:07:40 +0000

man update-ca-certificates :

update-ca-certificates is a program that updates the directory /etc/ssl/certs to hold SSL
certificates and generates ca-certificates.crt, a concatenated single-file list of
certificates.

It reads the file /etc/ca-certificates.conf. Each line gives a pathname of a CA
certificate under /usr/share/ca-certificates that should be trusted. Lines that begin
with "#" are comment lines and thus ignored. Lines that begin with "!" are deselected,
causing the deactivation of the CA certificate in question. Certificates must have a .crt
extension in order to be included by update-ca-certificates.

Furthermore all certificates with a .crt extension found below /usr/local/share/ca-
certificates are also included as implicitly trusted.

Z powyższego wnioskuję, że preferowanym sposobem na uzyskanie lokalnych plików certyfikatów do zaufanego sklepu jest umieszczenie ich w /usr/local/share/ca-certificates, a następnie uruchomienie update-ca-certificates. Nie trzeba bezpośrednio dotykać /etc/ssl/certs.

15
15
15
2013-10-10 18:46:49 +0000

Pozostałe odpowiedzi dotyczące update-ca-certificates są poprawne dla aplikacji, które zostały odczytane w sklepie z certyfikatami systemowymi. Dla Chrome i Firefoksa, a także prawdopodobnie kilku innych, certyfikat musi być umieszczony w nssdb, backendzie dla biblioteki Mozilla NSS.

Od https://code.google.com/p/chromium/wiki/LinuxCertManagement :

Np. aby zaufać certyfikatowi głównego CA do wydawania certyfikatów dla serwerów SSL, użyj

certutil -d sql:$HOME/. pki/nssdb -A -t “C,” -n <pseudonim certyfikacyjny> -i <pseudonim certyfikacyjny>

Gdzie <certificate nickname> jest dowolny, a <certificate filename> jest Twoim plikiem .pem lub .crt.

Inne pomocne odniesienia:

15
15
15
2014-04-30 13:39:09 +0000

Miałem ten sam problem i musiałem skopiować plik .pem do /usr/local/share/ca-certificates, zmieniając jego nazwę na .crt. Plik .cer można łatwo przekonwertować na .pem, na przykład za pomocą openssl, jeśli nie posiadasz pliku .pem.

Po skopiowaniu pliku musisz wykonać sudo update-ca-certificates.

11
11
11
2015-09-02 06:19:09 +0000

Dla nowszych buildów bazujących na Debianie, możesz potrzebować uruchomić:

sudo dpkg-reconfigure ca-certificates

UWAGA: sudo dpkg-reconfigure ca-certificates wywołuje wewnętrzne wywołanie update-ca-certificates

Oczywiście nadal będziesz musiał skopiować certyfikat (.crt file) do /usr/share/ca-certificates zanim to zrobisz :)

6
6
6
2018-04-10 01:00:50 +0000

Budując na odpowiedź dwmw2, możesz powiedzieć aplikacjom, które używają NSS do zarządzania certyfikatami, że używają systemowego sklepu powierniczego.

libnss3 domyślnie dostarcza tylko do odczytu zestaw głównych certyfikatów CA (libnssckbi.so), więc większość czasu trzeba ręcznie dodać je do lokalnego sklepu powierniczego użytkowników znajdującego się w $HOME/.pki/nssdb. p11-kit oferuje zamiennik libnssckbi.so, który działa jako adapter do ogólnosystemowych certyfikatów głównych zainstalowanych w /etc/ssl/certs.

Edit:

Wydaje się, że istnieje więcej wersji libnssckbi.so niż tylko w libnss3. Poniżej znajduje się skrypt, który wyszukuje je wszystkie, tworzy ich kopie zapasowe i zastępuje je linkami do p11-kit:

sudo apt-get update && sudo apt-get install -y p11-kit libnss3
find / -type f -name "libnssckbi.so" 2>/dev/null | while read line; do
    sudo mv $line ${line}.bak
    sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so $line
done

Oryginalne instrukcje:

Aby to zrobić, zainstaluj p11-kit i libnss3 (jeśli nie są jeszcze zainstalowane):

sudo apt-get update && sudo apt-get install -y p11-kit libnss3

Następnie wykonaj kopię zapasową istniejącego libnssckbi.so dostarczoną przez libnss3:

sudo mv /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so.bak

Na koniec utwórz symboliczny link:

sudo ln -s /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so

Aby potwierdzić, że zadziałał, możesz uruchomić ll /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so i powinien on pokazywać link:

lrwxrwxrwx 1 root root 49 Apr 9 20:28 /usr/lib/x86_64-linux-gnu/nss/libnssckbi.so -> /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

Teraz, jeśli dodasz certyfikat do sklepu CA używając update-ca-certificates, certyfikaty te będą teraz dostępne dla aplikacji używających NSS (libnss3) takich jak Chrome.

3
3
3
2016-12-12 12:36:34 +0000

Jak zauważono, różne aplikacje wykorzystujące NSS mają swój własny magazyn certyfikatów. W Ubuntu trzeba ręcznie używać certutil, aby dodać swoje CA dla każdej aplikacji, dla każdego użytkownika.

W innych dystrybucjach, takich jak Fedora, tego typu rzeczy po prostu działają i należy zgłosić błąd przeciwko każdej aplikacji, która nie ufa automatycznie CA instalowanym w update-ca-trust.

W Ubuntu też można to naprawić, instalując pakiet p11-kit-modules, a następnie zastępując NSS wbudowany moduł zaufania root modułem p11-kit-trust.so, tworząc symboliczne łącze, na przykład z /usr/lib/firefox/libnssckbi.so do /usr/lib/x86_64-linux-gnu/pkcs11/p11-kit-trust.so

Następnie będziesz miał skonfigurowane korzenie zaufania systemu, a nie jakieś twarde kodowane. Zauważ, że Ubuntu dostarcza wiele _różnych kopii tego libnssckbi.so biblioteki z twardymi korzeniami zaufania, i musisz zastąpić je wszystkie!

por. https://bugs.launchpad.net/ubuntu/+source/nss/+bug/1647285

1
1
1
2018-01-02 12:58:09 +0000

Poważnie głupia odpowiedź na to pytanie, ale spędziłem 2 godziny jeżdżąc tam i z powrotem z pewniakami w linuxie… Byłam pewna, że wszystko jest w porządku:

hutber@hutber-mint /var/www/asos-mvt-framework $ certutil -L -d sql:${HOME}/.pki/nssdb

Certificate Nickname Trust Attributes
                                                             SSL,S/MIME,JAR/XPI

anyproxy CT,, 
rootCA CT,, 
myasos CT,,

Ale mimo to, w chromie nic nie działało. Próbowałem wszystkiego, w końcu…

Restarting Chrome

Byłem kluczem do mojego sukcesu po tym: Steven Monday ’s advice