Dela via


X.509-certifikat

X.509-certifikat är digitala dokument som representerar en användare, dator, tjänst eller enhet. En certifikatutfärdare (CA), underordnad certifikatutfärdare eller registreringsutfärdare utfärdar X.509-certifikat. Certifikaten innehåller certifikatets offentliga nyckel. De innehåller inte ämnets privata nyckel, som måste lagras på ett säkert sätt. RFC 5280 dokumenterar offentliga nyckelcertifikat, inklusive deras fält och tillägg. Offentliga nyckelcertifikat är digitalt signerade och innehåller vanligtvis följande information:

  • Information om certifikatämnet
  • Den offentliga nyckel som motsvarar ämnets privata nyckel
  • Information om den utfärdande certifikatutfärdarna
  • Krypterings- och/eller digital signeringsalgoritmer som stöds
  • Information för att fastställa certifikatets återkallnings- och giltighetsstatus

Certifikatfält

Det finns tre inkrementella versioner av X.509-certifikatstandarden och varje efterföljande version har lagt till certifikatfält i standarden:

  • Version 1 (v1), publicerad 1988, följer den ursprungliga X.509-standarden för certifikat.
  • Version 2 (v2), publicerad 1993, lägger till två fält i fälten som ingår i version 1.
  • Version 3 (v3), publicerad 2008, representerar den aktuella versionen av X.509-standarden. Den här versionen lägger till stöd för certifikattillägg.

Det här avsnittet är avsett som en allmän referens för de certifikatfält och certifikattillägg som är tillgängliga i X.509-certifikat. Mer information om certifikatfält och certifikattillägg, inklusive datatyper, begränsningar och annan information finns i RFC 5280-specifikationen .

Fält i version 1

I följande tabell beskrivs certifikatfälten version 1 för X.509-certifikat. Alla fält som ingår i den här tabellen är tillgängliga i efterföljande X.509-certifikatversioner.

Name Beskrivning
Version Ett heltal som identifierar certifikatets versionsnummer.
Serienummer Ett heltal som representerar det unika numret för varje certifikat som utfärdats av en certifikatutfärdare (CA).
Signatur Identifieraren för den kryptografiska algoritm som används av certifikatutfärdaren för att signera certifikatet. Värdet innehåller både identifieraren för algoritmen och valfria parametrar som används av den algoritmen, om tillämpligt.
Emittenten Det unika namnet (DN) för certifikatets utfärdande certifikatutfärdare.
Giltighet Den inkluderande tidsperiod för vilken certifikatet är giltigt.
Ämne Certifikatämnets unika namn (DN).
Information om offentlig ämnesnyckel Den offentliga nyckeln som ägs av certifikatämnet.

Fält i version 2

I följande tabell beskrivs fälten som lagts till för version 2, som innehåller information om certifikatutfärdaren. Dessa fält används dock sällan. Alla fält som ingår i den här tabellen är tillgängliga i efterföljande X.509-certifikatversioner.

Name Beskrivning
Unikt ID för utfärdare En unik identifierare som representerar den utfärdande certifikatutfärdaren enligt definitionen i den utfärdande certifikatutfärdaren.
Unikt ämnes-ID En unik identifierare som representerar certifikatämnet enligt definitionen i den utfärdande certifikatutfärdaren.

Fält i version 3

I följande tabell beskrivs det fält som lagts till för version 3, som representerar en samling X.509-certifikattillägg.

Name Beskrivning
Tillägg En samling standard- och Internetspecifika certifikattillägg. Mer information om certifikattillägg som är tillgängliga för X.509 v3-certifikat finns i Certifikattillägg.

Certifikattillägg

Certifikattillägg, som introduceras med version 3, tillhandahåller metoder för att associera fler attribut med användare eller offentliga nycklar och för att hantera relationer mellan certifikatutfärdare. Mer information om certifikattillägg finns i avsnittet Certifikattillägg i RFC 5280-specifikationen .

Standardtillägg

X.509-standarden definierar tilläggen som ingår i det här avsnittet för användning i PKI (Internet Public Key Infrastructure).

Name Beskrivning
Utfärdarnyckelidentifierare En identifierare som representerar certifikatmottagaren och serienumret för certifikatutfärdaren som utfärdade certifikatet, eller en hash för den offentliga nyckeln för den utfärdande certifikatutfärdaren.
Nyckelidentifierare för certifikatmottagare En hash för det aktuella certifikatets offentliga nyckel.
Nyckelanvändning Ett bitmappat värde som definierar de tjänster som ett certifikat kan användas för.
Användningsperiod för privat nyckel Giltighetsperioden för den privata nyckeldelen i ett nyckelpar.
Certifikatprinciper En samling principinformation som används för att verifiera certifikatämnet.
Principmappningar En samling principmappningar som mappar en princip i en organisation till en princip i en annan organisation.
Alternativt namn för certifikatmottagare En samling alternativa namn för ämnet.
Alternativt namn på utfärdare En samling alternativa namn för den utfärdande certifikatutfärdare.
Ämneskatalogattribut En samling attribut från en X.500- eller LDAP-katalog.
Grundläggande begränsningar En samling begränsningar som gör att certifikatet kan ange om det utfärdas till en certifikatutfärdare eller till en användare, dator, enhet eller tjänst. Det här tillägget innehåller också en sökvägslängdsbegränsning som begränsar antalet underordnade certifikatutfärdare som kan finnas.
Namnbegränsningar En samling begränsningar som anger vilka namnområden som tillåts i ett CA-utfärdat certifikat.
Principbegränsningar En samling begränsningar som kan användas för att förbjuda principmappningar mellan certifikatutfärdare.
Utökad nyckelanvändning En samling nyckelsyftesvärden som anger hur ett certifikats offentliga nyckel kan användas, utöver de syften som identifieras i tillägget för nyckelanvändning .
CRL-distributionsplatser En samling URL:er där listan över återkallade bascertifikat (CRL) publiceras.
Hämma anyPolicy Hämmar användningen av alla utfärdandeprinciper OID (2.5.29.32.0) i underordnade CA-certifikat
Senaste CRL Det här tillägget, även kallat Delta CRL-distributionsplatsen, innehåller en eller flera URL:er där den utfärdande certifikatutfärdarens delta-CRL publiceras.

Privata Internettillägg

Tilläggen som ingår i det här avsnittet liknar standardtillägg och kan användas för att dirigera program till onlineinformation om certifikatutfärdare eller certifikatmottagare.

Name Beskrivning
Åtkomst till utfärdarinformation En samling poster som beskriver formatet och platsen för ytterligare information som tillhandahålls av den utfärdande certifikatutfärdaren.
Åtkomst till ämnesinformation En samling poster som beskriver formatet och platsen för ytterligare information som tillhandahålls av certifikatämnet.

Certifikatformat

Certifikat kan sparas i olika format. Azure IoT Hub autentisering använder vanligtvis FORMATET Privacy-Enhanced Mail (PEM) och Personal Information Exchange (PFX). I följande tabell beskrivs vanliga filer och format som används för att representera certifikat.

Format Beskrivning
Binärt certifikat Ett binärt certifikat för rådataformulär med hjälp av Distinguished Encoding Rules (DER) ASN.1-kodning.
ASCII PEM-format En PEM-certifikatfil (.pem) innehåller ett Base64-kodat certifikat som börjar med -----BEGIN CERTIFICATE----- och slutar med -----END CERTIFICATE-----. PEM-format är ett av de vanligaste formaten för X.509-certifikat och krävs av IoT Hub vid uppladdning av vissa certifikat, till exempel enhetscertifikat.
ASCII PEM-nyckel Innehåller en Base64-kodad DER-nyckel, eventuellt med fler metadata om algoritmen som används för lösenordsskydd.
PKCS #7-certifikat Ett format som utformats för transport av signerade eller krypterade data. Den kan innehålla hela certifikatkedjan. RFC 2315 definierar det här formatet.
PKCS #8-nyckel Formatet för ett privat nyckelarkiv. RFC 5208 definierar det här formatet.
PKCS #12-nyckel och certifikat Ett komplext format som kan lagra och skydda en nyckel och hela certifikatkedjan. Det används ofta med filnamnstillägget .p12 eller .pfx. PKCS #12 är synonymt med PFX-formatet. RFC 7292 definierar det här formatet.

Självsignerade certifikat

Du kan autentisera en enhet till din IoT-hubb i testsyfte med hjälp av två självsignerade certifikat. Den här typen av autentisering kallas ibland för tumavtrycksautentisering eftersom certifikaten identifieras med beräknade hashvärden som kallas fingeravtryck eller tumavtryck. Dessa beräknade hashvärden används av IoT Hub för att autentisera dina enheter.

Viktigt

Vi rekommenderar att du använder certifikat som signerats av en utfärdande certifikatutfärdare (CA), även i testsyfte. Använd aldrig självsignerade certifikat i produktion.

Skapa ett självsignerat certifikat

Du kan använda OpenSSL för att skapa självsignerade certifikat. Följande steg visar hur du kör OpenSSL-kommandon i ett bash-gränssnitt för att skapa ett självsignerat certifikat och hämta ett certifikatavtryck som kan användas för att autentisera enheten i IoT Hub.

Anteckning

Om du vill använda självsignerade certifikat för testning måste du skapa två certifikat för varje enhet.

  1. Kör följande kommando för att generera en privat nyckel och skapa en PEM-kodad privat nyckelfil (.key), där du ersätter följande platshållare med motsvarande värden. Den privata nyckeln som genereras av följande kommando använder RSA-algoritmen med 2 048-bitars kryptering.

    {KeyFile}. Namnet på din privata nyckelfil.

    openssl genpkey -out {KeyFile} -algorithm RSA -pkeyopt rsa_keygen_bits:2048
    
  2. Kör följande kommando för att generera en PKCS #10-certifikatsigneringsbegäran (CSR) och skapa en CSR-fil (.csr), där du ersätter följande platshållare med motsvarande värden. Kontrollera att du anger enhets-ID för IoT-enheten för ditt självsignerade certifikat när du uppmanas till det.

    {KeyFile}. Namnet på din privata nyckelfil.

    {CsrFile}. Namnet på CSR-filen.

    {DeviceID}. Namnet på din IoT-enhet.

    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. Kör följande kommando för att undersöka och verifiera din CSR och ersätt följande platshållare med motsvarande värden.

    {CsrFile}. Namnet på certifikatfilen.

    openssl req -text -in {CsrFile} -verify -noout
    
  4. Kör följande kommando för att generera ett självsignerat certifikat och skapa en PEM-kodad certifikatfil (.crt) och ersätt följande platshållare med motsvarande värden. Kommandot konverterar och signerar din CSR med din privata nyckel, vilket genererar ett självsignerat certifikat som upphör att gälla om 365 dagar.

    {KeyFile}. Namnet på din privata nyckelfil.

    {CsrFile}. Namnet på CSR-filen.

    {CrtFile}. Namnet på certifikatfilen.

    openssl x509 -req -days 365 -in {CsrFile} -signkey {KeyFile} -out {CrtFile}
    
  5. Kör följande kommando för att hämta fingeravtrycket för certifikatet och ersätt följande platshållare med motsvarande värden. Fingeravtrycket för ett certifikat är ett beräknat hash-värde som är unikt för certifikatet. Du behöver fingeravtrycket för att konfigurera din IoT-enhet i IoT Hub för testning.

    {CrtFile}. Namnet på certifikatfilen.

    openssl x509 -in {CrtFile} -noout -fingerprint
    

Verifiera certifikatet manuellt efter uppladdning

När du laddar upp rotcertifikatutfärdarcertifikatet (CA) eller det underordnade CA-certifikatet till din IoT-hubb kan du välja att automatiskt verifiera certifikatet. Om du inte valde att verifiera certifikatet automatiskt under uppladdningen visas certifikatet med dess status inställd på Overifierad. Du måste utföra följande steg för att verifiera certifikatet manuellt.

  1. Välj certifikatet för att visa dialogrutan Certifikatinformation .

  2. Välj Generera verifieringskod i dialogrutan.

    Skärmbild som visar dialogrutan med certifikatinformation.

  3. Kopiera verifieringskoden till Urklipp. Du måste använda den här verifieringskoden som certifikatämne i efterföljande steg. Om verifieringskoden till exempel är 75B86466DA34D2B04C0C4C9557A119687ADAE7D4732BDDB3lägger du till den som certifikatets ämne enligt nästa steg.

  4. Det finns tre sätt att generera ett verifieringscertifikat:

    • Om du använder PowerShell-skriptet som tillhandahålls av Microsoft kör New-CACertsVerificationCert "<verification code>" du för att skapa ett certifikat med namnet VerifyCert4.ceroch ersätter <verification code> med den tidigare genererade verifieringskoden. Mer information finns i Hantera ca-testcertifikat för exempel och självstudier på GitHub-lagringsplatsen för Azure IoT Hub Device SDK för C.

    • Om du använder Bash-skriptet som tillhandahålls av Microsoft kör ./certGen.sh create_verification_certificate "<verification code>" du för att skapa ett certifikat med namnet verification-code.cert.pem och ersätt <verification code> med den tidigare genererade verifieringskoden. Mer information finns i Hantera ca-testcertifikat för exempel och självstudier på GitHub-lagringsplatsen för Azure IoT Hub Device SDK för C.

    • Om du använder OpenSSL för att generera dina certifikat måste du först generera en privat nyckel och sedan generera en CSR-fil (certificate signing request). I följande exempel ersätter <verification code> du med den tidigare genererade verifieringskoden:

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

    Skapa sedan ett certifikat med lämplig konfigurationsfil för antingen rotcertifikatutfärdaren eller den underordnade certifikatutfärdaren och CSR-filen. I följande exempel visas hur du använder OpenSSL för att skapa certifikatet från en rot-CA-konfigurationsfil och CSR-filen.

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

    Mer information finns i Självstudie – Skapa och ladda upp certifikat för testning.

  5. Välj det nya certifikatet i vyn Certifikatinformation .

  6. När certifikatet har laddats upp väljer du Verifiera. Certifikatstatusen bör ändras till Verifierad.

Mer information

Mer information om X.509-certifikat och hur de används i IoT Hub finns i följande artiklar: