Różnica między urzędem certyfikacji z podpisem własnym a certyfikatem z podpisem własnym

81

Nie rozumiem różnicy między kluczem CA a certyfikatem. Czy klucz CA nie jest po prostu certyfikatem? Spróbuję wyjaśnić na przykładzie.

Mam klienta i serwer. Próbuję tylko zweryfikować moje połączenie z moim serwerem i nie próbuję nawiązywać zaufania do innych, więc nie obchodzi mnie podpisywanie z prawdziwym urzędem certyfikacji.

Opcja 1: Wygeneruj urząd certyfikacji z podpisem własnym ( ssCA ) i użyj go do podpisania certyfikatu ( C ). Następnie zainstalować SSCA do kluczy głównego na moim klientem i konfiguracji serwera do mojego certyfikatu użycie C .

Opcja 2: Wygeneruj certyfikat z podpisem własnym ( SSC ). Zainstaluj SSC w głównym magazynie kluczy na moim kliencie. Skonfiguruj mój serwer do korzystania z certyfikatu SSC .

Druga opcja wydaje się znacznie prostszym procesem. Czy to powinno nadal działać?

Tempo
źródło

Odpowiedzi:

62

Obie opcje są prawidłowe, opcja 2 jest prostsza.

Opcja 1 (utworzenie własnego urzędu certyfikacji) jest preferowana, gdy potrzebujesz wielu certyfikatów. W firmie można założyć własny ośrodek CA i zainstalować jego certyfikat w głównym magazynie kluczy wszystkich klientów. Klienci ci zaakceptują następnie wszystkie certyfikaty podpisane przez Twój urząd certyfikacji.

Opcja 2 (samodzielne podpisywanie certyfikatu bez urzędu certyfikacji) jest łatwiejsza. Jeśli potrzebujesz tylko jednego certyfikatu, to wystarczy. Zainstaluj go w magazynach kluczy swoich klientów i gotowe. Ale gdy potrzebujesz drugiego certyfikatu, musisz zainstalować go ponownie na wszystkich klientach.

Oto link do dalszych informacji: Tworzenie urzędów certyfikacji i certyfikatów SSL z podpisem własnym

Helge Klein
źródło
Jeśli urząd certyfikacji podpisze certyfikat, czy nadal mogę indywidualnie ufać wygenerowanemu certyfikatowi ( w tym przypadku C ), wiedząc, że musiałbym ufać każdemu wygenerowanemu certyfikatowi, a nie temu, który pochodzi z urzędu certyfikacji?
ivandov
65

Po pierwsze, jeśli chodzi o rozróżnienie między kluczem a certyfikatem (w odniesieniu do „klucza CA”), w odniesieniu do certyfikatów klucza publicznego (zwykle X.509) używane są 3 elementy: klucz publiczny, klucz prywatny i certyfikat. Klucz publiczny i klucz prywatny tworzą parę. Możesz podpisać i odszyfrować kluczem prywatnym, możesz zweryfikować (podpis) i zaszyfrować kluczem publicznym. Klucz publiczny jest przeznaczony do dystrybucji, podczas gdy klucz prywatny ma być prywatny.

Certyfikat klucza publicznego to połączenie klucza publicznego i różnych informacji (głównie dotyczących tożsamości właściciela pary kluczy, tego, kto kontroluje klucz prywatny), przy czym ta kombinacja jest podpisana przy użyciu klucza prywatnego wystawcy certyfikat. Certyfikat X.509 ma nazwę wyróżniającą podmiotu i nazwę wyróżniającą wystawcy. Nazwa wystawcy to nazwa podmiotu certyfikatu podmiotu wydającego certyfikat. Certyfikaty z podpisem własnym to szczególny przypadek, w którym wystawca i podmiot są tacy sami. Podpisując treść certyfikatu (tj. Wystawiając certyfikat), wystawca potwierdza jego treść, w szczególności powiązanie między kluczem, tożsamością (podmiotem) oraz różnymi atrybutami (które mogą wskazywać na cel lub zakres zastosowania) certyfikat).

Ponadto specyfikacja PKIX definiuje rozszerzenie (część danego certyfikatu), które wskazuje, czy certyfikat może być używany jako certyfikat CA, czyli czy może być używany jako wystawca dla innego certyfikatu.

Na tej podstawie budujesz łańcuch certyfikatów między certyfikatem jednostki końcowej (który chcesz zweryfikować, dla użytkownika lub serwera) a certyfikatem CA, któremu ufasz. Między certyfikatem jednostki końcowej Twojej usługi a certyfikatem CA, któremu ufasz, mogą istnieć certyfikaty pośredniego urzędu certyfikacji (wydane przez inne certyfikaty CA). Nie potrzebujesz bezwzględnie głównego urzędu certyfikacji na górze (certyfikat CA z podpisem własnym), ale często tak jest (jeśli chcesz, możesz bezpośrednio zaufać pośredniczącemu urzędowi certyfikacji).

W twoim przypadku użycia, jeśli generujesz certyfikat z podpisem własnym dla określonej usługi, to, czy ma on flagę CA (rozszerzenie podstawowych ograniczeń), nie ma tak naprawdę znaczenia. Potrzebowałbyś certyfikatu CA, aby móc wystawiać inne certyfikaty (jeśli chcesz zbudować własną PKI). Jeśli certyfikat, który wygenerujesz dla tej usługi, jest certyfikatem CA, nie powinno to zaszkodzić. Bardziej liczy się sposób, w jaki możesz skonfigurować klienta, aby ufał temu certyfikatowi dla tego konkretnego serwera (na przykład przeglądarki powinny umożliwiać dość łatwe zrobienie wyraźnego wyjątku). Jeśli mechanizm konfiguracji jest zgodny z modelem PKI (bez użycia określonych wyjątków), ponieważ nie będzie potrzeby budowania łańcucha (z jednym certyfikatem), powinieneś mieć możliwość zaimportowania certyfikatu bezpośrednio jako część kotwic zaufania Twój klient, czy to ”

Bruno
źródło
1
Dzięki za informację. Dam Helge poprawną odpowiedź, ponieważ nadeszła wcześniej i była krótsza. Jednak dobrze było to wiedzieć.
Tempo
8

Możesz openssl x509 -noout -text -in $YOUR_CERTzobaczyć różnice między zawartością plików:

W swoim urzędzie certyfikacji z podpisem własnym możesz zobaczyć :

    X509v3 extensions:                                                          
        X509v3 Basic Constraints:
            CA:TRUE, pathlen:0

Certyfikat z podpisem własnym zawiera:

    X509v3 extensions:                                                          
        X509v3 Basic Constraints:
            CA:FALSE
toksea
źródło
0

Zawsze musisz mieć główny urząd certyfikacji, urząd certyfikacji ma klucz, którego można użyć do podpisania certyfikatu niższego poziomu oraz certyfikat główny, który można osadzić w akceptowanych certyfikatach głównych na kliencie i jest używany do weryfikacji niższych certyfikatów w celu ich sprawdzenia są ważne. Podpisany samodzielnie oznacza, że ​​jesteś własnym urzędem certyfikacji. Za każdym razem, gdy tworzysz certyfikat z podpisem własnym, tworzysz certyfikat CA, a następnie podpisujesz certyfikat witryny w tym CA.

ewanm89
źródło