Zaufaj samopodpisanemu certyfikatowi PEM

23
  1. Skonfigurowałem serwer proxy z SSL przy użyciu certyfikatu PEM. Teraz jest kilka moich maszyn, którym chciałbym zaufać temu certyfikatowi automatycznie (bez narzekań przeglądarki internetowej). Jak mogę zainstalować certyfikat PEM na każdym komputerze?

  2. Co jest bardziej zalecane: generowanie certyfikatu z podpisem własnym lub konkatenacja certyfikatu snakeoil?

Teresa e Junior
źródło

Odpowiedzi:

10

Przeglądarki mają listę zaufanych certyfikatów „urzędu certyfikacji” (CA). Jeśli certyfikat serwera jest podpisany przez jeden z tych certyfikatów CA i poprawnie sformułowany, nie pojawi się ostrzeżenie SSL.

Wiele przeglądarek jest wyposażonych w wiele popularnych certyfikatów CA, takich jak Verisign, Thawte itp. Większość przeglądarek umożliwia importowanie nowego urzędu certyfikacji na tę listę zaufanych urzędów certyfikacji.

Podobnie jak tworzenie własnego certyfikatu serwera z podpisem własnym, możesz utworzyć własny certyfikat urzędu certyfikacji z podpisem własnym. Następnie możesz użyć tego do podpisania certyfikatu serwera. Jeśli Twój urząd certyfikacji nie jest dostarczany przez znaną firmę, której nie byłoby, gdybyś go utworzył, będzie musiał zostać zaimportowany jawnie po stronie serwera.

Robiłem xcato wcześniej. Ma szablony dla urzędów certyfikacji i serwerów HTTP. Procedura jest następująca:

  • Utwórz klucz prywatny dla swojego urzędu certyfikacji
  • Utwórz samopodpisany urząd certyfikacji za pomocą tego klucza, korzystając z szablonu „CA”
  • Utwórz klucz prywatny dla swojego serwera proxy
  • Utwórz „żądanie podpisania certyfikatu” (CSR) za pomocą drugiego klucza, odwołując się do właśnie utworzonego przez siebie urzędu certyfikacji.
  • „Podpisz” raport CSR, a otrzymasz certyfikat serwera proxy, który odwołuje się do Twojego urzędu certyfikacji.

Następnie musisz wyeksportować (jako plik, jeśli używasz xca) certyfikat CA (ale oczywiście nie dołączaj klucza prywatnego). Zostanie .pemwygenerowane, ale możesz zmienić rozszerzenie na .crt. Gdy użytkownik kliknie tę opcję, zostanie zaoferowana jej instalacja w Firefoksie i Internet Explorerze i ewentualnie innych głównych przeglądarkach. Jeśli chodzi o automatyczną instalację tego .crt, możesz:

  • użyj zasad grupy w IE
  • kieruj użytkowników do strony wprowadzającej z prośbą o pobranie / zainstalowanie pliku .crt, jeśli chcą uniknąć ostrzeżeń.

Następnie można użyć funkcji eksportu na certyfikacie serwera HTTP (eksportować zarówno klucz prywatny, jak i certyfikat po stronie serwera), aby umieścić na serwerze proxy.

LawrenceC
źródło
17
  1. Skopiuj swój certyfikat /etc/ssl/certsna system docelowy. Następnie utwórz dowiązanie symboliczne, używając skrótu wygenerowanego przez polecenie openssl x509 -noout -hash -in ca-certificate-filezastępujące ca-certificate-filenazwę certyfikatu. Twój certyfikat powinien następnie zostać zaakceptowany przez wszystkie programy bez własnego magazynu certyfikatów.

    W przypadku programów z własnym magazynem certyfikatów (przeglądarki, Java i inne) należy zaimportować certyfikat.

  2. Najlepiej jest wygenerować własny podpisany lub podpisany certyfikat.

    Możesz zainstalować tinyca2i wygenerować własny urząd certyfikacji. Możesz zaimportować certyfikat urzędu certyfikacji, jak opisano szczegółowo w powyższych krokach. Generuj i wdrażaj podpisane certyfikaty dla swoich aplikacji.

    Przekaż swój certyfikat CA tym użytkownikom, którzy muszą zaufać Twojemu certyfikatowi. Może być konieczne podanie informacji na temat importowania do nich certyfikatu. OSTRZEŻENIE: Jeśli to zrobią, staniesz się dla nich kolejnym zaufanym urzędem certyfikacji, więc odpowiednio zabezpiecz swój urząd certyfikacji.

    Wiele narzędzi można również skonfigurować tak, aby ufały certyfikatom z podpisem własnym lub certyfikatom z niezaufanymi urzędami certyfikacji. Zazwyczaj jest to działanie jednorazowe. Może to być bezpieczniejsze niż przyjmowanie certyfikatu CA od niepewnego urzędu, zaufany jest tylko zaakceptowany certyfikat.

BillThor
źródło
Czy można to sprecyzować? Na przykład: host A wysyła pocztę do hosta B i skarży się, że nie jest w stanie zweryfikować tożsamości B. Na hoście B stworzyliśmy certyfikat z podpisem własnym: /etc/ssl/certs/ssl-cert-snakeoil.pem(to właśnie ssl-certtworzy pakiet Debian dla Ciebie). Kopiujemy go do hosta A i nazywamy go /etc/ssl/certs/host-B.pem(ponieważ ten host może już mieć a ssl-cert-snakeoil.pem). Potem biegniemy ln -s /etc/ssl/certs/host-B.pem $(openssl x509 -noout -hash -in /etc/ssl/certs/host-B.pem).
Alex Schröder
1
@ AlexSchröder Edytowałem powyżej. Nie powinni importować twojego certyfikatu snakeoil, ale jeśli skonfigurowałeś własny urząd certyfikacji, uzasadnione jest, aby zaimportowali urząd certyfikacji. Nie zidentyfikowałem jeszcze problemów z zaufaniem między serwerami SMTP. Większości klientów można powierzyć zaufanie poszczególnym certyfikatom.
BillThor
Dzięki. Znalazłem to pytanie, kiedy szukałem wyjaśnienia dla wpisu dziennika, który otrzymuję. Wyjaśnienie, które znalazłem, było takie, że skoro A wyśle ​​pocztę do B, A zgłosi, że nie można zweryfikować tożsamości B.
Alex Schröder
Właśnie tego szukałem! -- Dziękuję Ci! Teraz mogę używać davfs do montowania mojego zabezpieczonego webDAV bez większego uciążliwości.
Wyatt8740
13

Na Debianie i Ubuntu trzeba skopiować certificate.pemdo /usr/local/share/ca-certificates/certificate.crt, a następnie uruchomić dpkg-reconfigure ca-certificates. /etc/ssl/certszarządza tym poleceniem.

Thom Wiggers
źródło