Certyfikaty X.509

Certyfikaty X.509 to cyfrowe dokumenty reprezentujące użytkownika, komputer, usługę lub urządzenie. Certyfikaty X.509 wydaje organ certyfikacyjny (CA), podporządkowany CA lub organ rejestracyjny. Certyfikaty zawierają klucz publiczny podmiotu certyfikatu. Nie zawierają prywatnego klucza podmiotu, który musi być bezpiecznie przechowywany. RFC 5280 dokumentuje certyfikaty klucza publicznego, w tym ich pola i rozszerzenia. Certyfikaty klucza publicznego są podpisane cyfrowo i zazwyczaj zawierają następujące informacje:

  • Informacje o temacie certyfikatu
  • Klucz publiczny odpowiadający prywatnemu kluczowi podmiotu
  • Informacje o wydającym CA
  • Obsługiwane algorytmy szyfrowania i/lub cyfrowego podpisu
  • Informacje do ustalenia statusu unieważnienia i ważności certyfikatu

Pola certyfikatu

Istnieją trzy przyrostowe wersje standardu certyfikatu X.509, a każda kolejna wersja dodawała do standardu pola certyfikatu:

  • Wersja 1 (v1), opublikowana w 1988 roku, opiera się na początkowym standardzie X.509 dla certyfikatów.
  • Wersja 2 (v2), opublikowana w 1993 roku, dodaje dwa pola do pól zawartych w wersji 1.
  • Wersja 3 (v3), opublikowana w 2008 roku, stanowi obecną wersję standardu X.509. Ta wersja dodaje wsparcie dla rozszerzeń certyfikatów.

Ta sekcja ma służyć jako ogólne źródło dla pól certyfikatów i rozszerzeń certyfikatów dostępnych w certyfikatach X.509. Aby uzyskać więcej informacji o polach certyfikatów i rozszerzeniach certyfikatów, w tym typach danych, ograniczeniach i innych szczegółach, zobacz specyfikację RFC 5280 .

Pola wersji 1

Poniższa tabela opisuje pola certyfikatów wersji 1 dla certyfikatów X.509. Wszystkie pola zawarte w tej tabeli są dostępne w kolejnych wersjach certyfikatów X.509.

Name Description
Wersja Liczba całkowita identyfikująca numer wersji certyfikatu.
Serial Number (Numer seryjny) Liczba całkowita reprezentująca unikalny numer każdego certyfikatu wydanego przez urząd certyfikacyjny (CA).
Podpis Identyfikator algorytmu kryptograficznego używanego przez CA do podpisywania certyfikatu. Wartość zawiera zarówno identyfikator algorytmu, jak i ewentualne opcjonalne parametry używane przez ten algorytm, jeśli to możliwe.
Emitent Rozróżniająca nazwa (DN) wydającej certyfikat CA.
Poprawność Włącznie okres, przez który certyfikat jest ważny.
Temat Wyróżniająca się nazwa (DN) podmiotu certyfikatu.
Temat informacji o kluczu publicznym Klucz publiczny należący do podmiotu certyfikatu.

Pola wersji 2

Poniższa tabela opisuje pola dodane dla wersji 2, zawierając informacje o wydawcy certyfikatu. Te pola są jednak rzadko wykorzystywane. Wszystkie pola zawarte w tej tabeli są dostępne w kolejnych wersjach certyfikatów X.509.

Name Description
Unikalny identyfikator wydawcy Unikalny identyfikator reprezentujący wydającego CA, zgodnie z definicją wydającego CA.
Unikalny identyfikator podmiotu Unikalny identyfikator reprezentujący podmiot certyfikatu, zgodnie z definicją wydającego CA.

Pola Wersji 3

Poniższa tabela opisuje pole dodane dla wersji 3, reprezentujące zbiór rozszerzeń certyfikatów X.509.

Name Description
Rozszerzenia Zbiór standardowych i specyficznych dla Internetu rozszerzeń certyfikatów. Więcej informacji o rozszerzeniach certyfikatów dostępnych dla certyfikatów X.509 v3 można znaleźć w artykule Rozszerzenia certyfikatów.

Rozszerzenia certyfikatów

Rozszerzenia certyfikatów, wprowadzone wraz z wersją 3, zapewniają metody przypisywania większej liczby atrybutów użytkownikom lub kluczom publicznym oraz zarządzania relacjami między organami certyfikacji. Więcej informacji o rozszerzeniach certyfikatów można znaleźć w sekcji Rozszerzenia Certyfikatów w specyfikacji RFC 5280 .

Standardowe rozszerzenia

Standard X.509 definiuje rozszerzenia zawarte w tej sekcji do wykorzystania w infrastrukturze klucza publicznego Internetu (PKI).

Name Description
Identyfikator klucza urzędu Identyfikator reprezentujący podmiot certyfikatu oraz numer seryjny certyfikatu CA, który wydał ten certyfikat, lub skrót klucza publicznego wydawcy CA.
Identyfikator klucza podmiotu Skrót klucza publicznego aktualnego certyfikatu.
Użycie klucza Wartość bitmapowa, która definiuje usługi, dla których certyfikat może być użyty.
Okres użycia klucza prywatnego Okres ważności dla części klucza prywatnego pary kluczy.
Polityki certyfikatów Zbiór informacji o polisie, używany do walidacji podmiotu certyfikatu.
Mapowania polityk Zbiór map polityk, z których każde przypisuje politykę w jednej organizacji do polityki w innej.
Alternatywna nazwa podmiotu Zbiór alternatywnych nazw dla tematu.
Alternatywna nazwa emitenta Zbiór alternatywnych nazw dla wydającej CA.
Atrybuty Katalogu Przedmiotów Zbiór atrybutów z katalogu X.500 lub LDAP.
Podstawowe ograniczenia Zbiór ograniczeń pozwalających certyfikatowi określić, czy jest wydawany do CA, czy do użytkownika, komputera, urządzenia lub usługi. To rozszerzenie zawiera również ograniczenie długości ścieżki, które ogranicza liczbę podporządkowanych CA, które mogą istnieć.
Ograniczenia nazwy Zbiór ograniczeń określających, które przestrzenie nazw są dozwolone w certyfikcie wydanym przez CA.
Ograniczenia polityki Zbiór ograniczeń, które mogą być użyte do zakazywania mapowania polityk między CA.
Rozszerzone użycie klucza Zbiór wartości kluczowych celów, które wskazują, jak można używać klucza publicznego certyfikatu, wykraczającego poza cele określone w rozszerzeniu Key Usage .
Punkty dystrybucji CRL Zbiór adresów URL, w których publikowana jest podstawowa lista odwołania certyfikatów (CRL).
Blokuj dowolną politykę Utrudniają stosowanie OID All Emisuance Policies (2.5.29.32.0) w podrzędnych certyfikatach CA
Najświeższe CRL To rozszerzenie, znane również jako Delta CRL Distribution Point, zawiera jeden lub więcej adresów URL, na których publikowany jest delta CRL wydawcy CA.

Prywatne rozszerzenia Internetu

Rozszerzenia zawarte w tej sekcji są podobne do standardowych rozszerzeń i mogą być używane do kierowania wniosków do informacji online o wydawcy CA lub podmiotie certyfikatu.

Name Description
Dostęp do informacji autorytetów Zbiór wpisów opisujących format i lokalizację dodatkowych informacji udostępnionych przez wydawcę CA.
Dostęp do informacji przedmiotowych Zbiór wpisów opisujących format i lokalizację dodatkowych informacji przekazanych przez podmiot certyfikatu.

Formaty certyfikatów

Certyfikaty można zapisywać w różnych formatach. Azure IoT Hub uwierzytelnianie zazwyczaj wykorzystuje formaty Privacy-Enhanced Mail (PEM) oraz Personal Information Exchange (PFX). Poniższa tabela opisuje powszechnie używane pliki i formaty reprezentujące certyfikaty.

Format Description
Certyfikat binarny Surowy certyfikat binarny z wykorzystaniem kodowania ASN.1 według Distinguished Encoding Rules (DER).
Format ASCII PEM Plik certyfikatu PEM (.pem) zawiera certyfikat zakodowany w Base64, zaczynający się na i -----BEGIN CERTIFICATE----- kończący na -----END CERTIFICATE-----. Jednym z najczęściej używanych formatów certyfikatów X.509, format PEM jest wymagany przez IoT Hub podczas przesyłania określonych certyfikatów, takich jak certyfikaty urządzeń.
Klucz PEM ASCII Zawiera klucz DER zakodowany w Base64, opcjonalnie z dodatkowymi metadanymi dotyczącymi algorytmu używanego do ochrony haseł.
Certyfikat PKCS #7 Format zaprojektowany do przesyłania danych podpisanych lub zaszyfrowanych. Może obejmować cały łańcuch certyfikatów. RFC 2315 definiuje ten format.
Klucz PKCS #8 Format sklepu z kluczami prywatnymi. RFC 5208 definiuje ten format.
Klucz i certyfikat PKCS #12 Złożony format, który może przechowywać i chronić klucz oraz cały łańcuch certyfikatów. Jest powszechnie używany z rozszerzeniem .p12 lub .pfx. PKCS #12 jest synonimem formatu PFX. RFC 7292 definiuje ten format.

Certyfikaty z podpisem własnym

Możesz uwierzytelnić urządzenie do swojego huba IoT do celów testowych, używając dwóch certyfikatów podpisanych samodzielnie. Ten typ uwierzytelniania bywa nazywany uwierzytelnianiem odciskiem kciuka , ponieważ certyfikaty są identyfikowane za pomocą obliczonych wartości skrótów zwanych odciskami palców lub odciskami palców. Te obliczone wartości skrótów są wykorzystywane przez IoT Hub do uwierzytelniania Twoich urządzeń.

Ważna

Zalecamy używanie certyfikatów podpisanych przez wydający Urząd Certyfikacyjny (CA), nawet do celów testowych. Nigdy nie używaj certyfikatów podpisanych samodzielnie w produkcji.

Tworzenie certyfikatu z podpisem własnym

Możesz użyć protokołu OpenSSL , aby utworzyć certyfikaty z podpisem własnym. Poniższe kroki pokazują, jak uruchomić polecenia OpenSSL w połopie bash, aby utworzyć samodzielnie podpisany certyfikat i pobrać odcisk certyfikatu, który może być użyty do uwierzytelniania urządzenia w IoT Hub.

Note

Jeśli chcesz używać certyfikatów podpisanych samodzielnie do testowania, musisz utworzyć dwa certyfikaty dla każdego urządzenia.

  1. Wykonaj następujące polecenie, aby wygenerować klucz prywatny i utworzyć plik klucza prywatnego (.key) zakodowanego przez PEM, zastępując następujące zastępcze ich wartościami. Klucz prywatny wygenerowany przez następujące polecenie wykorzystuje algorytm RSA z szyfrowaniem 2048-bitowym.

    {KeyFile}. Nazwa pliku klucza prywatnego.

    openssl genpkey -out {KeyFile} -algorithm RSA -pkeyopt rsa_keygen_bits:2048
    
  2. Wykonaj następujące polecenie, aby wygenerować żądanie podpisu certyfikatu PKCS #10 (CSR) i utworzyć plik CSR (.csr), zastępując następujące zastępcze ich wartościami. Upewnij się, że podałeś identyfikator urządzenia IoT dla swojego samodzielnie podpisanego certyfikatu, gdy pojawi się pytanie.

    {KeyFile}. Nazwa pliku klucza prywatnego.

    {CsrFile}. Nazwa pliku CSR.

    {DeviceID}. Nazwa twojego urządzenia IoT.

    openssl req -new -key {KeyFile} -out {CsrFile}
    
    Country Name (2 letter code) [XX]:.
    State or Province Name (full name) []:.
    Locality Name (eg, city) [Default City]:.
    Organization Name (eg, company) [Default Company Ltd]:.
    Organizational Unit Name (eg, section) []:.
    Common Name (eg, your name or your server hostname) []:{DeviceID}
    Email Address []:.
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:.
    An optional company name []:.
    
  3. Wykonaj następujące polecenie, aby sprawdzić i zweryfikować swój CSR, zastępując następujące zastępcze ich wartościami.

    {CsrFile}. Nazwa pliku twojego certyfikatu.

    openssl req -text -in {CsrFile} -verify -noout
    
  4. Wykonaj następujące polecenie, aby wygenerować certyfikat podpisany samodzielnie i utworzyć plik certyfikatu zakodowanego przez PEM (.crt), zastępując następujące zastępcze ich wartościami. Polecenie konwertuje i podpisuje twój CSR kluczem prywatnym, generując certyfikat podpisany samodzielnie, który wygasa za 365 dni.

    {KeyFile}. Nazwa pliku klucza prywatnego.

    {CsrFile}. Nazwa pliku CSR.

    {CrtFile}. Nazwa pliku twojego certyfikatu.

    openssl x509 -req -days 365 -in {CsrFile} -signkey {KeyFile} -out {CrtFile}
    
  5. Wykonaj następujące polecenie, aby pobrać odcisk palca certyfikatu, zastępując następujące zastępcze ich wartościami. Odcisk palca certyfikatu to obliczona wartość skrótu unikalna dla tego certyfikatu. Potrzebujesz odcisku palca, aby skonfigurować urządzenie IoT w IoT Hub do testowania.

    {CrtFile}. Nazwa pliku twojego certyfikatu.

    openssl x509 -in {CrtFile} -noout -fingerprint
    

Weryfikuj certyfikat ręcznie po przesłaniu

Gdy przesyłasz certyfikat root certificate authority (CA) lub podrzędny certyfikat CA do swojego huba IoT, możesz wybrać automatyczne zweryfikowanie certyfikatu. Jeśli nie wybrałeś automatycznego weryfikacji certyfikatu podczas przesyłania, twój certyfikat jest wyświetlany ze statusem ustawionym na Niezweryfikowany. Musisz wykonać następujące kroki, aby ręcznie zweryfikować swój certyfikat.

  1. Wybierz certyfikat, aby zobaczyć okno Szczegóły certyfikatu .

  2. Wybierz Wygeneruj kod weryfikacyjny w oknie oknym.

    Zrzut ekranu pokazujący okno szczegółów certyfikatu.

  3. Skopiuj kod weryfikacyjny do schowka. W kolejnych etapach musisz użyć tego kodu weryfikacyjnego jako przedmiotu certyfikatu. Na przykład, jeśli kod weryfikacyjny to 75B86466DA34D2B04C0C4C9557A119687ADAE7D4732BDDB3, dodaj go jako przedmiot certyfikatu, jak pokazano w kolejnym kroku.

  4. Istnieją trzy sposoby generowania certyfikatu weryfikacji:

    • Jeśli używasz skryptu PowerShell dostarczonego przez Microsoft, uruchom utworzenie New-CACertsVerificationCert "<verification code>" certyfikatu o nazwie VerifyCert4.cer, zastępując <verification code> go wcześniej wygenerowanym kodem weryfikacyjnym. Aby uzyskać więcej informacji, zobacz Zarządzanie certyfikatami testowego urzędu certyfikacji dla przykładów i samouczków w repozytorium GitHub dla zestawu SDK urządzenia usługi Azure IoT Hub dla języka C.

    • Jeśli używasz skryptu Bash dostarczonego przez Microsoft, uruchom ./certGen.sh create_verification_certificate "<verification code>" utworzenie certyfikatu o nazwie verification-code.cert.pem, zastępując <verification code> go wcześniej wygenerowanym kodem weryfikacyjnym. Więcej informacji można znaleźć w artykule Zarządzanie testowymi certyfikatami CA, gdzie znajdziesz przykłady i tutoriale w repozytorium GitHub dla Azure IoT Hub Device SDK for C.

    • Jeśli używasz OpenSSL do generowania swoich certyfikatów, najpierw musisz wygenerować klucz prywatny, a następnie wygenerować plik z żądaniem podpisu certyfikatu (CSR). W poniższym przykładzie zastąp <verification code> go wcześniej wygenerowanym kodem weryfikacyjnym:

    openssl genpkey -out pop.key -algorithm RSA -pkeyopt rsa_keygen_bits:2048
    
    openssl req -new -key pop.key -out pop.csr
    
    -----
    Country Name (2 letter code) [XX]:.
    State or Province Name (full name) []:.
    Locality Name (eg, city) [Default City]:.
    Organization Name (eg, company) [Default Company Ltd]:.
    Organizational Unit Name (eg, section) []:.
    Common Name (eg, your name or your server hostname) []:<verification code>
    Email Address []:
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    

    Następnie utwórz certyfikat używając odpowiedniego pliku konfiguracyjnego dla CA głównego lub podrzędnego CA, oraz pliku CSR. Poniższy przykład pokazuje, jak użyć OpenSSL do utworzenia certyfikatu z pliku konfiguracyjnego CA root oraz pliku CSR.

    openssl ca -config rootca.conf -in pop.csr -out pop.crt -extensions client_ext
    

    Więcej informacji znajdziesz w Tutorial - Tworzenie i przesyłanie certyfikatów do testowania.

  5. Wybierz nowy certyfikat w widoku Szczegóły certyfikatu .

  6. Po przesłaniu certyfikatu wybierz Sprawdź. Status certyfikatu powinien zmienić się na Zweryfikowany.

Więcej informacji

Aby uzyskać więcej informacji o certyfikatach X.509 i ich zastosowaniu w IoT Hub, zobacz następujące artykuły: