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.
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
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 []:.
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
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}
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.
Välj certifikatet för att visa dialogrutan Certifikatinformation .
Välj Generera verifieringskod i dialogrutan.
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
75B86466DA34D2B04C0C4C9557A119687ADAE7D4732BDDB3
lägger du till den som certifikatets ämne enligt nästa steg.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 namnetVerifyCert4.cer
och 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.
Välj det nya certifikatet i vyn Certifikatinformation .
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: