Dela via


Introduktion till certifikat

I den här artikeln beskrivs användningen av certifikat i WinUI-appar. Digitala certifikat används i kryptering med offentliga nycklar för att binda en offentlig nyckel till en person, dator eller organisation. De bundna identiteterna används oftast för att autentisera en entitet till en annan. Certifikat används till exempel ofta för att autentisera en webbserver till en användare och en användare till en webbserver. Du kan skapa certifikatbegäranden och installera eller importera utfärdade certifikat. Du kan också registrera ett certifikat i en certifikathierarki.

Delade certifikatarkiv

WinUI-appar använder den nya isolationistiska programmodellen som introducerades i Windows 8. I den här modellen körs appar i en lågnivåkonstruktion av operativsystemet, som kallas en appcontainer, som förbjuder appen från att komma åt resurser eller filer utanför sig själv om det inte uttryckligen tillåts att göra det. I följande avsnitt beskrivs de konsekvenser detta har för PKI (Public Key Infrastructure).

Certifikatlagring per app-container

Certifikat som är avsedda att användas i en specifik app-container lagras per användare och per app-container. En app som körs i en appcontainer har skrivåtkomst till endast sin egen certifikatlagring. Om programmet lägger till certifikat i något av dess lager kan dessa certifikat inte läsas av andra appar. Om en app avinstalleras tas även eventuella certifikat som är specifika för den bort. En app har också läsbehörighet till andra lokala datorcertifikatarkiv än my- och REQUEST-arkivet.

Cache

Varje appcontainer har en isolerad cache där den kan lagra utfärdarcertifikat som behövs för validering, listor över återkallade certifikat (CRL) och OCSP-svar (Online Certificate Status Protocol).

Delade certifikat och nycklar

När ett smartkort infogas i en läsare sprids certifikaten och nycklarna på kortet till användarens MY Store där de kan delas av alla program med fullständigt förtroende som användaren kör. Som standard har dock appcontainrar inte åtkomst till min butik per användare.

För att lösa det här problemet och möjliggöra för grupper av principaler att få åtkomst till grupper av resurser stöder appcontainer-isoleringsmodellen konceptet med funktionaliteter. En funktion gör att en appcontainerprocess kan komma åt en specifik resurs. Funktionen sharedUserCertificates ger en appcontainer läsbehörighet till certifikaten och nycklarna som finns i användarens MY Store och Smart Card Trusted Roots Store. Funktionen beviljar inte läsbehörighet till user REQUEST store.

Du anger funktionen sharedUserCertificates i manifestet enligt följande exempel.

<Capabilities>
    <Capability Name="sharedUserCertificates" />
</Capabilities>

Certifikatfält

Certifikatstandarden för den offentliga X.509-nyckeln har reviderats över tid. Varje efterföljande version av datastrukturen har bevarat fälten som fanns i de tidigare versionerna och lagt till fler, som du ser i följande bild.

x.509-certifikatversionerna 1, 2 och 3

Vissa av dessa fält och tillägg kan anges direkt när du använder klassen CertificateRequestProperties för att skapa en certifikatbegäran. De flesta kan inte. Dessa fält kan fyllas i av den utfärdande myndigheten eller lämnas tomma. Mer information om fälten finns i följande avsnitt:

Fält i version 1

Fält Beskrivning
Utgåva Anger versionsnumret för det kodade certifikatet. För närvarande är de möjliga värdena för det här fältet 0, 1 eller 2.
Serienummer Innehåller ett positivt, unikt heltal som tilldelats certifikatutfärdare (CA) till certifikatet.
Signatur algoritm Innehåller en objektidentifierare (OID) som anger den algoritm som används av certifikatutfärdaren för att signera certifikatet. Till exempel anger 1.2.840.113549.1.1.5 en SHA-1-hashalgoritm kombinerad med RSA-krypteringsalgoritmen från RSA Laboratories.
Utfärdare Innehåller det unika X.500-namnet (DN) för certifikatutfärdare som skapade och signerade certifikatet.
Giltighet Anger det tidsintervall under vilket certifikatet är giltigt. Datum till slutet av 2049 använder formatet Coordinated Universal Time (Greenwich Mean Time) (yymmddhhmmssz). Datum som börjar med 1 januari 2050 använder det generaliserade tidsformatet (ååååmmddhhmmssz).
Subjekt Innehåller ett unikt X.500-namn för entiteten som är associerad med den offentliga nyckeln i certifikatet.
Offentlig nyckel Innehåller den offentliga nyckeln och tillhörande algoritminformation.

Fält i version 2

Ett X.509 version 2-certifikat innehåller de grundläggande fälten som definierats i version 1 och lägger till följande fält.

Fält Beskrivning
Utfärdarens unika identifierare Innehåller ett unikt värde som kan användas för att göra X.500-namnet på certifikatmottagaren entydigt när det återanvänds av olika entiteter över tid.
Unik identifierare för ämne Innehåller ett unikt värde som kan användas för att göra X.500-namnet på certifikatets ämne entydigt när det återanvänds av olika entiteter över tid.

Version 3-tillägg

Ett X.509 version 3-certifikat innehåller fälten som definierats i version 1 och version 2 och lägger till certifikattillägg.

Fält Beskrivning
Myndighetsnyckelidentifierare Identifierar den offentliga certifikatutfärdarnyckeln (CA) som motsvarar den privata certifikatutfärdarnyckel som används för att signera certifikatet.
Grundläggande begränsningar Anger om entiteten kan användas som certifikatutfärdare och i så fall antalet underordnade certifikatutfärdare som kan finnas under den i certifikatkedjan.
Certifikatprinciper Anger de principer under vilka certifikatet har utfärdats och de syften för vilka det kan användas.
CRL-distributionsplatser Innehåller URI:n för listan över återkallade bascertifikat (CRL).
Förbättrad nyckelanvändning Anger hur den offentliga nyckeln i certifikatet kan användas.
Alternativ namn för utfärdare Anger ett eller flera alternativa namnformulär för utfärdaren av certifikatbegäran.
Nyckelanvändning Anger begränsningar för de åtgärder som kan utföras av den offentliga nyckeln i certifikatet.
Namnbegränsningar Anger det namnområde inom vilket alla ämnesnamn i en certifikathierarki måste finnas. Tillägget används endast i ett CA-certifikat.
Principbegränsningar Begränsar sökvägsvalidering genom att förbjuda principmappning eller genom att kräva att varje certifikat i hierarkin innehåller en acceptabel principidentifierare. Tillägget används endast i ett CA-certifikat.
Principmappningar Anger principerna i en underordnad certifikatutfärdare som motsvarar principer i den utfärdande certifikatutfärdare.
Användningsperiod för privat nyckel Anger en annan giltighetsperiod för den privata nyckeln än för certifikatet som den privata nyckeln är associerad med.
Alternativt ämnesnamn Anger ett eller flera alternativa namnformulär för certifikatbegärans ämne. Exempel på alternativa formulär är e-postadresser, DNS-namn, IP-adresser och URI:er.
Attribut för ämnesregister Förmedlar identifieringsattribut, till exempel certifikatets nationalitet. Tilläggsvärdet är en sekvens med OID-värdepar.
Nyckelidentifierare för subjekt Skiljer mellan flera offentliga nycklar som innehas av certifikatmottagaren. Tilläggsvärdet är vanligtvis en SHA-1-hash för nyckeln.