Certifikáty X.509

Certifikáty X.509 jsou digitální dokumenty, které představují uživatele, počítač, službu nebo zařízení. Certifikační autorita (CA), podřízená certifikační autorita nebo registrační autorita vydává certifikáty X.509. Certifikáty obsahují veřejný klíč subjektu certifikátu. Neobsahují privátní klíč subjektu, který musí být bezpečně uložen. DOKUMENT RFC 5280 dokumentuje certifikáty veřejného klíče, včetně jejich polí a rozšíření. Certifikáty veřejného klíče jsou digitálně podepsané a obvykle obsahují následující informace:

  • Informace o předmětu certifikátu
  • Veřejný klíč, který odpovídá privátnímu klíči subjektu
  • Informace o vydávající certifikační autoritě
  • Podporované algoritmy šifrování a/nebo digitálního podepisování
  • Informace k určení stavu odvolání a platnosti certifikátu

Pole certifikátu

Existují tři přírůstkové verze standardu certifikátu X.509 a každá další verze přidala pole certifikátu do standardu:

  • Verze 1 (v1) publikovaná v roce 1988 se řídí počátečním standardem X.509 pro certifikáty.
  • Verze 2 (v2) publikovaná v roce 1993 přidá do polí zahrnutých ve verzi 1 dvě pole.
  • Verze 3 (v3) publikovaná v roce 2008 představuje aktuální verzi standardu X.509. Tato verze přidává podporu pro rozšíření certifikátů.

Tato část je míněná jako obecný odkaz na pole certifikátů a rozšíření certifikátů, která jsou k dispozici v certifikátech X.509. Další informace o polích certifikátů a rozšířeních certifikátů, včetně datových typů, omezení a dalších podrobností, najdete ve specifikaci RFC 5280 .

Pole verze 1

Následující tabulka popisuje pole certifikátu verze 1 pro certifikáty X.509. Všechna pole zahrnutá v této tabulce jsou k dispozici v následujících verzích certifikátů X.509.

Název Description
Verze Celé číslo, které identifikuje číslo verze certifikátu.
Sériové číslo Celé číslo, které představuje jedinečné číslo pro každý certifikát vydaný certifikační autoritou (CA).
Podpis Identifikátor kryptografického algoritmu, který certifikační autorita používá k podepsání certifikátu. Hodnota zahrnuje jak identifikátor algoritmu, tak i všechny volitelné parametry používané tímto algoritmem, pokud jsou k dispozici.
Emitenta Rozlišující název (DN) vydávající certifikační autority certifikátu.
Platnost Inkluzivní časové období, pro které je certifikát platný.
Předmět Rozlišující název (DN) subjektu certifikátu.
Informace o veřejném klíči předmětu Veřejný klíč vlastněný subjektem certifikátu.

Pole verze 2

Následující tabulka popisuje pole přidaná pro verzi 2, která obsahují informace o vystaviteli certifikátu. Tato pole se ale používají zřídka. Všechna pole zahrnutá v této tabulce jsou k dispozici v následujících verzích certifikátů X.509.

Název Description
Jedinečné ID vystavitele Jedinečný identifikátor, který představuje vydávající certifikační autoritu definovanou vydávající certifikační autoritou.
Jedinečné ID předmětu Jedinečný identifikátor, který představuje předmět certifikátu definovaný vydávající certifikační autoritou.

Pole verze 3

Následující tabulka popisuje pole přidané pro verzi 3 představující kolekci rozšíření certifikátů X.509.

Název Description
Rozšíření Kolekce standardních a internetových rozšíření certifikátů. Další informace o rozšířeních certifikátů dostupných pro certifikáty X.509 v3 najdete v tématu Rozšíření certifikátů.

Rozšíření certifikátů

Rozšíření certifikátů zavedená ve verzi 3 poskytují metody pro přidružení více atributů k uživatelům nebo veřejným klíčům a pro správu vztahů mezi certifikačními autoritami. Další informace o rozšířeních certifikátů najdete v části Rozšíření certifikátů specifikace RFC 5280 .

Standardní rozšíření

Standard X.509 definuje rozšíření zahrnutá v této části pro použití v infrastruktuře veřejných klíčů (PKI) internetu.

Název Description
Identifikátor klíče certifikační autority Identifikátor, který představuje buď subjekt certifikátu a sériové číslo certifikátu certifikační autority, která tento certifikát vydala, nebo hodnotu hash veřejného klíče vydávající certifikační autority.
Identifikátor klíče subjektu Hodnota hash veřejného klíče aktuálního certifikátu
Použití klíče Rastrová hodnota, která definuje služby, pro které lze certifikát použít.
Období používání privátního klíče Doba platnosti pro část privátního klíče páru klíčů.
Zásady certifikátu Kolekce informací o zásadách, která se používá k ověření předmětu certifikátu.
Mapování zásad Kolekce mapování zásad, z nichž každé mapuje zásady v jedné organizaci na zásady v jiné organizaci.
Alternativní název subjektu Kolekce alternativních názvů pro předmět.
Alternativní název vystavitele Kolekce alternativních názvů vydávající certifikační autority.
Atributy adresáře subjektu Kolekce atributů z adresáře X.500 nebo LDAP.
Základní omezení Kolekce omezení, která umožňují certifikátu určit, jestli je vystavený certifikační autoritě nebo uživateli, počítači, zařízení nebo službě. Toto rozšíření obsahuje také omezení délky cesty, které omezuje počet podřízených certifikačních autorit, které můžou existovat.
Omezení názvů Kolekce omezení, která určují, které obory názvů jsou povoleny v certifikátu vydaném certifikační autoritou.
Omezení zásad Kolekce omezení, která je možné použít k zákazu mapování zásad mezi certifikačními autoritami.
Rozšířené použití klíče Kolekce hodnot účelu klíče, které označují, jak lze používat veřejný klíč certifikátu nad rámec účelů uvedených v rozšíření Použití klíče .
Distribuční body seznamu CRL Kolekce adres URL, ve kterých je publikován seznam odvolaných certifikátů (CRL)
Inhibovat jakékolizásady Brání použití OID všech zásad vystavování (2.5.29.32.0) v podřízených certifikátech certifikační autority.
Nejčerstvější seznam CRL Toto rozšíření, označované také jako distribuční bod rozdílového seznamu CRL, obsahuje jednu nebo více adres URL, kde je publikovaný rozdílový seznam CRL vydávající certifikační autority.

Rozšíření privátního internetu

Rozšíření uvedená v této části se podobají standardním rozšířením a mohou být použita k přesměrování aplikací na online informace o vydávající certifikační autoritě nebo subjektu certifikátu.

Název Description
Přístup k informacím o autoritě Kolekce položek, které popisují formát a umístění dalších informací poskytovaných vydávající certifikační autoritou.
Přístup k informacím o předmětu Kolekce položek, které popisují formát a umístění dalších informací poskytovaných subjektem certifikátu.

Formáty certifikátů

Certifikáty je možné ukládat v různých formátech. Azure IoT Hub ověřování obvykle používá formáty Privacy-Enhanced Mail (PEM) a PFX (Personal Information Exchange). Následující tabulka popisuje běžně používané soubory a formáty používané k reprezentaci certifikátů.

Formát Description
Binární certifikát Nezpracovaný binární certifikát formuláře s kódováním KÓDOVÁNÍ DER (DER) ASN.1.
Formát PEM ASCII Soubor certifikátu PEM (.pem) obsahuje certifikát s kódováním Base64, který začíná -----BEGIN CERTIFICATE----- na a končí na -----END CERTIFICATE-----. Jeden z nejběžnějších formátů pro certifikáty X.509, formát PEM vyžaduje IoT Hub při nahrávání určitých certifikátů, jako jsou certifikáty zařízení.
Klíč PEM ASCII Obsahuje klíč DER s kódováním Base64, volitelně s dalšími metadaty o algoritmu používaném k ochraně heslem.
Certifikát PKCS č. 7 Formát navržený pro přenos podepsaných nebo šifrovaných dat. Může obsahovat celý řetěz certifikátů. RfC 2315 definuje tento formát.
Klíč PKCS č. 8 Formát úložiště privátních klíčů. RFC 5208 definuje tento formát.
Klíč a certifikát PKCS č. 12 Složitý formát, který může ukládat a chránit klíč a celý řetěz certifikátů. Běžně se používá s rozšířením .p12 nebo .pfx. PKCS č. 12 je synonymum pro formát PFX. RFC 7292 definuje tento formát.

Certifikáty podepsané svým držitelem

Zařízení můžete ověřit ve službě IoT Hub pro účely testování pomocí dvou certifikátů podepsaných svým držitelem. Tento typ ověřování se někdy označuje jako ověřování kryptografického otisku , protože certifikáty jsou identifikovány počítanými hodnotami hash, které se nazývají otisky prstů nebo kryptografické otisky. Tyto vypočítané hodnoty hash používají IoT Hub k ověřování zařízení.

Důležité

Doporučujeme používat certifikáty podepsané vydávající certifikační autoritou (CA) i pro účely testování. Nikdy nepoužívejte certifikáty podepsané svým držitelem v produkčním prostředí.

Vytvoření certifikátu podepsaného svým držitelem (self-signed certificate)

K vytvoření certifikátů podepsaných svým držitelem můžete použít OpenSSL . Následující kroky ukazují, jak spustit příkazy OpenSSL v prostředí Bash, abyste vytvořili certifikát podepsaný svým držitelem a načetli otisk certifikátu, který lze použít k ověření zařízení v IoT Hub.

Poznámka

Pokud chcete k testování používat certifikáty podepsané svým držitelem, musíte pro každé zařízení vytvořit dva certifikáty.

  1. Spuštěním následujícího příkazu vygenerujte privátní klíč a vytvořte soubor soukromého klíče (.key) s kódováním PEM a nahraďte následující zástupné symboly odpovídajícími hodnotami. Privátní klíč vygenerovaný následujícím příkazem používá algoritmus RSA s 2048bitovým šifrováním.

    {KeyFile}. Název souboru privátního klíče.

    openssl genpkey -out {KeyFile} -algorithm RSA -pkeyopt rsa_keygen_bits:2048
    
  2. Spuštěním následujícího příkazu vygenerujte žádost o podepsání certifikátu PKCS #10 a vytvořte soubor CSR (.csr), přičemž následující zástupné symboly nahraďte odpovídajícími hodnotami. Ujistěte se, že jste po zobrazení výzvy zadali ID zařízení IoT pro certifikát podepsaný svým držitelem.

    {KeyFile}. Název souboru privátního klíče.

    {CsrFile}. Název souboru CSR.

    {DeviceID}. Název vašeho zařízení 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. Spuštěním následujícího příkazu zkontrolujte a ověřte csr a nahraďte následující zástupné symboly odpovídajícími hodnotami.

    {CsrFile}. Název souboru certifikátu.

    openssl req -text -in {CsrFile} -verify -noout
    
  4. Spuštěním následujícího příkazu vygenerujte certifikát podepsaný svým držitelem a vytvořte soubor certifikátu s kódováním PEM (.crt), přičemž následující zástupné symboly nahraďte odpovídajícími hodnotami. Příkaz převede a podepíše váš csr pomocí privátního klíče a vygeneruje certifikát podepsaný svým držitelem, jehož platnost vyprší za 365 dnů.

    {KeyFile}. Název souboru privátního klíče.

    {CsrFile}. Název souboru CSR.

    {CrtFile}. Název souboru certifikátu.

    openssl x509 -req -days 365 -in {CsrFile} -signkey {KeyFile} -out {CrtFile}
    
  5. Spuštěním následujícího příkazu načtěte otisk certifikátu a nahraďte následující zástupné symboly odpovídajícími hodnotami. Otisk prstu certifikátu je počítaná hodnota hash, která je pro daný certifikát jedinečná. Otisk prstu potřebujete ke konfiguraci zařízení IoT v IoT Hub pro testování.

    {CrtFile}. Název souboru certifikátu.

    openssl x509 -in {CrtFile} -noout -fingerprint
    

Ruční ověření certifikátu po nahrání

Když nahrajete certifikát kořenové certifikační autority (CA) nebo certifikát podřízené certifikační autority do služby IoT Hub, můžete zvolit automatické ověření certifikátu. Pokud jste se během nahrávání nezvolili automatické ověření certifikátu, zobrazí se váš certifikát se stavem Neověřeno. Pokud chcete certifikát ověřit ručně, musíte provést následující kroky.

  1. Výběrem certifikátu zobrazíte dialogové okno Podrobnosti certifikátu .

  2. V dialogovém okně vyberte Vygenerovat ověřovací kód .

    Snímek obrazovky s dialogovým oknem s podrobnostmi o certifikátu

  3. Zkopírujte ověřovací kód do schránky. Tento ověřovací kód musíte použít jako předmět certifikátu v dalších krocích. Pokud je ověřovací kód například , přidejte ho jako předmět certifikátu, jak je 75B86466DA34D2B04C0C4C9557A119687ADAE7D4732BDDB3znázorněno v dalším kroku.

  4. Ověřovací certifikát můžete vygenerovat třemi způsoby:

    • Pokud používáte skript PowerShellu od Microsoftu, spusťte New-CACertsVerificationCert "<verification code>" příkaz a vytvořte certifikát s názvem VerifyCert4.cera nahraďte <verification code> dříve vygenerovaným ověřovacím kódem. Další informace najdete v tématu Správa certifikátů testovací certifikační autority pro ukázky a kurzy v úložišti GitHub pro Azure IoT Hub Device SDK pro C.

    • Pokud používáte skript Bash od Microsoftu, spusťte ./certGen.sh create_verification_certificate "<verification code>" příkaz a vytvořte certifikát s názvem verification-code.cert.pem a nahraďte <verification code> dříve vygenerovaným ověřovacím kódem. Další informace najdete v tématu Správa certifikátů testovací certifikační autority pro ukázky a kurzy v úložišti GitHub pro Azure IoT Hub Device SDK pro C.

    • Pokud ke generování certifikátů používáte OpenSSL, musíte nejprve vygenerovat privátní klíč a pak vygenerovat soubor žádosti o podepsání certifikátu (CSR). V následujícím příkladu nahraďte <verification code> dříve vygenerovaným ověřovacím kódem:

    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 []:
    

    Potom vytvořte certifikát s použitím příslušného konfiguračního souboru pro kořenovou nebo podřízenou certifikační autoritu a soubor CSR. Následující příklad ukazuje, jak pomocí OpenSSL vytvořit certifikát z konfiguračního souboru kořenové certifikační autority a souboru CSR.

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

    Další informace najdete v tématu Kurz – Vytvoření a nahrání certifikátů pro testování.

  5. V zobrazení Podrobnosti certifikátu vyberte nový certifikát.

  6. Po nahrání certifikátu vyberte Ověřit. Stav certifikátu by se měl změnit na Ověřeno.

Další informace

Další informace o certifikátech X.509 a jejich použití v IoT Hub najdete v následujících článcích: