Freigeben über


Einführung in Zertifikate

In diesem Artikel wird die Verwendung von Zertifikaten in WinUI-Apps erläutert. Digitale Zertifikate werden in der Kryptografie für öffentliche Schlüssel verwendet, um einen öffentlichen Schlüssel an eine Person, einen Computer oder eine Organisation zu binden. Die gebundenen Identitäten werden am häufigsten verwendet, um eine Entität für eine andere zu authentifizieren. Beispielsweise werden Zertifikate häufig verwendet, um einen Webserver für einen Benutzer und einen Benutzer auf einem Webserver zu authentifizieren. Sie können Zertifikatanforderungen erstellen und ausgestellte Zertifikate installieren oder importieren. Sie können ein Zertifikat auch in einer Zertifikathierarchie registrieren.

Gemeinsame Zertifikatspeicher

WinUI-Apps verwenden das neue isolationistische Anwendungsmodell, das in Windows 8 eingeführt wurde. In diesem Modell werden Apps im Low-Level-Betriebssystemkonstrukt ausgeführt, das als App-Container bezeichnet wird, der verhindert, dass die App auf Ressourcen oder Dateien außerhalb von sich selbst zugreift, es sei denn, dies ist ausdrücklich zulässig. In den folgenden Abschnitten werden die Auswirkungen auf die Public Key-Infrastruktur (PKI) beschrieben.

Zertifikatspeicher pro App-Container

Zertifikate, die für die Verwendung in einem bestimmten App-Container vorgesehen sind, werden pro Benutzer, pro App-Containerspeicherort gespeichert. Eine App, die in einem App-Container ausgeführt wird, hat Schreibzugriff nur auf den eigenen Zertifikatspeicher. Wenn die Anwendung Zertifikate zu einem seiner Speicher hinzufügt, können diese Zertifikate nicht von anderen Apps gelesen werden. Wenn eine App deinstalliert wird, werden auch alle spezifisch dafür spezifischen Zertifikate entfernt. Eine App verfügt auch über Lesezugriff auf andere Zertifikatspeicher des lokalen Computers als den MY- und REQUEST-Speicher.

Cache

Jeder App-Container verfügt über einen isolierten Cache, in dem Ausstellerzertifikate gespeichert werden können, die für validierungs-, Zertifikatsperrlisten (CRL)- und OCSP-Antworten (Online Certificate Status Protocol) erforderlich sind.

Freigegebene Zertifikate und Schlüssel

Wenn eine Smartcard in einen Leser eingefügt wird, werden die auf der Karte enthaltenen Zertifikate und Schlüssel an den MY-Speicher des Benutzers weitergegeben, in dem sie von jeder voll vertrauenswürdigen Anwendung freigegeben werden können, die der Benutzer ausführt. Standardmäßig haben App-Container jedoch keinen Zugriff auf den MY Store pro Benutzer.

Um dieses Problem zu beheben und Gruppen von Hauptakteuren für den Zugriff auf Ressourcengruppen zu aktivieren, unterstützt das App-Containerisolationsmodell das Konzept der Berechtigungen. Mit einer Funktion kann ein App-Containerprozess auf eine bestimmte Ressource zugreifen. Die SharedUserCertificates-Funktion gewährt einem App-Container Lesezugriff auf die Zertifikate und Schlüssel, die im MY-Speicher des Benutzers enthalten sind, und dem Speicher für vertrauenswürdige Smartcard-Wurzeln. Die Funktion gewährt keinen Lesezugriff auf den Anforderungsspeicher des Benutzers.

Sie geben die sharedUserCertificates-Funktion im Manifest an, wie im folgenden Beispiel gezeigt.

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

Zertifikatfelder

Der X.509-Zertifikatstandard für öffentliche Schlüssel wurde im Laufe der Zeit überarbeitet. Jede aufeinander folgende Version der Datenstruktur hat die Felder beibehalten, die in den vorherigen Versionen vorhanden waren, und weitere hinzugefügt, wie in der folgenden Abbildung dargestellt.

x.509-Zertifikatversionen 1, 2 und 3

Einige dieser Felder und Erweiterungen können direkt angegeben werden, wenn Sie die CertificateRequestProperties-Klasse verwenden, um eine Zertifikatanforderung zu erstellen. Die meisten können nicht. Diese Felder können von der ausstellenden Behörde ausgefüllt werden, oder sie können leer gelassen werden. Weitere Informationen zu den Feldern finden Sie in den folgenden Abschnitten:

Felder der Version 1

Feld Beschreibung
Version Gibt die Versionsnummer des codierten Zertifikats an. Derzeit sind die möglichen Werte dieses Felds 0, 1 oder 2.
Seriennummer Enthält eine positive, eindeutige ganze Zahl, die von der Zertifizierungsstelle (CA) dem Zertifikat zugewiesen wird.
Signaturalgorithmus Enthält einen Objektbezeichner (Object Identifier, OID), der den Algorithmus angibt, der von der Zertifizierungsstelle zum Signieren des Zertifikats verwendet wird. Beispielsweise gibt 1.2.840.113549.1.1.5 einen SHA-1-Hashingalgorithmus in Kombination mit dem RSA-Verschlüsselungsalgorithmus von RSA Laboratories an.
Emittent Enthält den X.500 Distinguished Name (DN) der Zertifizierungsstelle, die das Zertifikat erstellt und signiert hat.
Gültigkeit Gibt das Zeitintervall an, in dem das Zertifikat gültig ist. Datumsangaben bis Ende 2049 verwenden das Koordinierte Weltzeitformat (Greenwich Mean Time) (yymmddhhmmssz). Datumsangaben ab dem 1. Januar 2050 verwenden das generalisierte Zeitformat (yyyymmdhhmmssz).
Betreff Enthält einen X.500-Distinguished-Namen der Entität, die dem öffentlichen Schlüssel zugeordnet ist, der im Zertifikat enthalten ist.
Öffentlicher Schlüssel Enthält den öffentlichen Schlüssel und die zugehörigen Algorithmusinformationen.

Felder der Version 2

Ein X.509 Version 2-Zertifikat enthält die grundlegenden Felder, die in Version 1 definiert sind, und fügt die folgenden Felder hinzu.

Feld Beschreibung
Eindeutiger Ausstellerbezeichner Enthält einen eindeutigen Wert, der verwendet werden kann, um den X.500-Namen der Zertifizierungsstelle eindeutig zu identifizieren, wenn sie von verschiedenen Entitäten im Laufe der Zeit wiederverwendet wird.
Eindeutiger Subjektbezeichner Enthält einen eindeutigen Wert, der verwendet werden kann, um den X.500-Namen des Zertifikatsbetreffs eindeutig zu machen, wenn er im Laufe der Zeit von verschiedenen Entitäten wiederverwendet wird.

Version 3-Erweiterungen

Ein X.509 Version 3-Zertifikat enthält die in Version 1 und Version 2 definierten Felder und fügt Zertifikaterweiterungen hinzu.

Feld Beschreibung
Zertifizierungsstellenschlüssel-ID Identifiziert den öffentlichen Schlüssel der Zertifizierungsstelle, der dem privaten Zertifizierungsstellenschlüssel entspricht, der zum Signieren des Zertifikats verwendet wird.
Grundlegende Einschränkungen Gibt an, ob die Entität als Zertifizierungsstelle verwendet werden kann, und falls ja, die Anzahl der untergeordneten Zertifizierungsstellen, die darunter in der Zertifikatkette vorhanden sein können.
Zertifikatrichtlinien Gibt die Richtlinien an, unter denen das Zertifikat ausgestellt wurde, und die Zwecke, für die es verwendet werden kann.
CRL-Verteilungspunkte Enthält den URI der Basiszertifikatsperrliste (CRL).
Erweiterte Schlüsselverwendung Gibt die Art und Weise an, in der der öffentliche Schlüssel im Zertifikat verwendet werden kann.
Alternativer Ausstellername Gibt einen oder mehrere alternative Namen für den Aussteller der Zertifikatanforderung an.
Schlüsselverwendung Gibt Einschränkungen für die Vorgänge an, die vom öffentlichen Schlüssel im Zertifikat ausgeführt werden können.
Namenseinschränkungen Gibt den Namespace an, in dem sich alle Subjektnamen in einer Zertifikathierarchie befinden müssen. Die Erweiterung wird nur in einem Zertifizierungsstellenzertifikat verwendet.
Richtlinieneinschränkungen Schränkt die Pfadüberprüfung dadurch ein, dass entweder die Richtlinienzuordnung untersagt wird oder gefordert wird, dass jedes Zertifikat in der Hierarchie einen akzeptablen Richtlinienbezeichner enthält. Die Erweiterung wird nur in einem Zertifizierungsstellenzertifikat verwendet.
Richtlinienzuordnungen Gibt die Richtlinien einer untergeordneten Zertifizierungsstelle an, die den Richtlinien bei der ausstellenden Zertifizierungsstelle entsprechen.
Nutzungszeitraum für private Schlüssel Gibt einen anderen Gültigkeitszeitraum für den privaten Schlüssel als für das Zertifikat an, dem der private Schlüssel zugeordnet ist.
Alternativer Antragstellername Gibt ein oder mehrere alternative Namen für das Subjekt der Zertifikatanforderung an. Beispiel für alternative Formulare sind E-Mail-Adressen, DNS-Namen, IP-Adressen und URIs.
Attribute des Betreffverzeichnisses Vermittelt Identifikationsattribute wie die Staatsangehörigkeit des Zertifikatsinhabers. Der Erweiterungswert ist eine Abfolge von OID-Wert-Paaren.
Schlüssel-ID des Antragstellers Unterscheidet zwischen mehreren öffentlichen Schlüsseln, die vom Zertifikatantragsteller gehalten werden. Der Erweiterungswert ist in der Regel ein SHA-1-Hash des Schlüssels.