Beschreibung
Verwenden Sie die chrome.platformKeys
API, um auf Clientzertifikate zuzugreifen, die von der Plattform verwaltet werden. Wenn der Nutzer oder die Richtlinie die Berechtigung erteilt, kann eine Erweiterung ein solches Zertifikat in ihrem benutzerdefinierten Authentifizierungsprotokoll verwenden. So können beispielsweise von der Plattform verwaltete Zertifikate in Drittanbieter-VPNs verwendet werden (siehe chrome.vpnProvider).
Berechtigungen
platformKeys
Verfügbarkeit
Typen
ClientCertificateRequest
Attribute
-
certificateAuthorities
ArrayBuffer[]
Liste der Distinguished Names von Zertifizierungsstellen, die vom Server zugelassen werden. Jeder Eintrag muss ein DER-codierter X.509-DistinguishedName sein.
-
certificateTypes
Dieses Feld ist eine Liste der angeforderten Zertifikatstypen, sortiert nach der Präferenz des Servers. Es werden nur Zertifikate eines Typs abgerufen, der in dieser Liste enthalten ist. Wenn
certificateTypes
jedoch die leere Liste ist, werden Zertifikate aller Typen zurückgegeben.
ClientCertificateType
Enum
"rsaSign"
"ecdsaSign"
Match
Attribute
-
Zertifikat
ArrayBuffer
Die DER-Codierung eines X.509-Zertifikats.
-
keyAlgorithm
Objekt
Der KeyAlgorithm des zertifizierten Schlüssels. Es enthält Algorithmusparameter, die dem Schlüssel des Zertifikats innewohnen (z.B. die Schlüssellänge). Andere Parameter wie die von der Sign-Funktion verwendete Hash-Funktion sind nicht enthalten.
SelectDetails
Attribute
-
clientCerts
ArrayBuffer[] optional
Falls angegeben, wird
selectClientCertificates
auf diese Liste angewendet. Andernfalls wird die Liste aller Zertifikate aus den Zertifikatspeichern der Plattform abgerufen, die für diese Erweiterungen verfügbar sind. Einträge, für die die Erweiterung keine Berechtigung hat oder die nicht der Anfrage entsprechen, werden entfernt. -
interactive
boolean
Ist der Wert „true“, wird dem Nutzer die gefilterte Liste angezeigt, damit er manuell ein Zertifikat auswählen und der Erweiterung so Zugriff auf die Zertifikate und Schlüssel gewähren kann. Es werden nur die ausgewählten Zertifikate zurückgegeben. Wenn „is“ auf „false“ gesetzt ist, wird die Liste auf alle Zertifikate reduziert, auf die die Erweiterung Zugriff hat (automatisch oder manuell).
-
Anfrage
Es werden nur Zertifikate zurückgegeben, die mit dieser Anfrage übereinstimmen.
VerificationDetails
Attribute
-
Hostname
String
Der Hostname des Servers, für den das Zertifikat überprüft werden soll, z.B. der Server, der
serverCertificateChain
präsentiert hat. -
serverCertificateChain
ArrayBuffer[]
Jeder Ketteneintrag muss die DER-Codierung eines X.509-Zertifikats sein. Der erste Eintrag muss das Serverzertifikat sein und jeder Eintrag muss den vorherigen Eintrag zertifizieren.
VerificationResult
Attribute
-
debug_errors
String[]
Wenn die Vertrauensüberprüfung fehlgeschlagen ist, enthält dieses Array die von der zugrunde liegenden Netzwerkschicht gemeldeten Fehler. Andernfalls ist dieses Array leer.
Hinweis:Diese Liste dient nur zur Fehlerbehebung und enthält möglicherweise nicht alle relevanten Fehler. Die zurückgegebenen Fehler können sich in zukünftigen Revisionen dieser API ändern und sind nicht garantiert vorwärts- oder rückwärtskompatibel.
-
vertrauenswürdig
boolean
Das Ergebnis der Vertrauensüberprüfung: „true“, wenn Vertrauen für die angegebenen Überprüfungsdetails hergestellt werden konnte, und „false“, wenn Vertrauen aus irgendeinem Grund abgelehnt wird.
Methoden
getKeyPair()
chrome.platformKeys.getKeyPair(
certificate: ArrayBuffer,
parameters: object,
callback: function,
): void
Übergibt das Schlüsselpaar von certificate
zur Verwendung mit platformKeys.subtleCrypto
an callback
.
Parameter
-
Zertifikat
ArrayBuffer
Das Zertifikat eines
Match
, das vonselectClientCertificates
zurückgegeben wird. -
Parameter
Objekt
Bestimmt zusätzlich zu den durch den Schlüssel selbst festgelegten Parametern die Parameter für den Signatur-/Hash-Algorithmus. Es werden dieselben Parameter wie von der importKey-Funktion von WebCrypto akzeptiert, z.B.
RsaHashedImportParams
für einen RSASSA-PKCS1-v1_5-Schlüssel undEcKeyImportParams
für einen EC-Schlüssel. Zusätzlich kann für RSASSA-PKCS1-v1_5-Schlüssel der Parameter für den Namen des Hash-Algorithmus mit einem der folgenden Werte angegeben werden: „none“, „SHA-1“, „SHA-256“, „SHA-384“ oder „SHA-512“, z.B.{"hash": { "name": "none" } }
. Die Signaturfunktion wendet dann PKCS#1 v1.5-Padding an, hasht die angegebenen Daten aber nicht.Derzeit werden mit dieser Methode nur die Algorithmen „RSASSA-PKCS1-v1_5“ und „ECDSA“ unterstützt.
-
callback
Funktion
Der Parameter
callback
sieht so aus:(publicKey: object, privateKey?: object) => void
-
publicKey
Objekt
-
privateKey
object optional
Möglicherweise
null
, wenn diese Erweiterung keinen Zugriff darauf hat.
-
getKeyPairBySpki()
chrome.platformKeys.getKeyPairBySpki(
publicKeySpkiDer: ArrayBuffer,
parameters: object,
callback: function,
): void
Übergibt das durch publicKeySpkiDer
identifizierte Schlüsselpaar zur Verwendung mit platformKeys.subtleCrypto
an callback
.
Parameter
-
publicKeySpkiDer
ArrayBuffer
Eine DER-codierte X.509-SubjectPublicKeyInfo, die z.B. durch Aufrufen der WebCrypto-Funktion „exportKey“ mit „format=spki“ abgerufen wird.
-
Parameter
Objekt
Stellt zusätzlich zu den durch den Schlüssel selbst festgelegten Parametern Signatur- und Hash-Algorithmusparameter bereit. Es werden dieselben Parameter wie von der importKey-Funktion von WebCrypto akzeptiert, z.B.
RsaHashedImportParams
für einen RSASSA-PKCS1-v1_5-Schlüssel. Für RSASSA-PKCS1-v1_5-Schlüssel muss auch ein „hash“-Parameter{ "hash": { "name": string } }
übergeben werden. Der Parameter „hash“ steht für den Namen des Hash-Algorithmus, der im Digest-Vorgang vor einem Sign verwendet werden soll. Es ist möglich, „none“ als Hash-Namen zu übergeben. In diesem Fall wird die PKCS#1 v1.5-Auffüllung auf die Signatur angewendet, die angegebenen Daten werden aber nicht gehasht.Derzeit unterstützt diese Methode den ECDSA-Algorithmus mit der benannten Kurve P-256 und den RSASSA-PKCS1-v1_5-Algorithmus mit einem der Hash-Algorithmen „none“, „SHA-1“, „SHA-256“, „SHA-384“ und „SHA-512“.
-
callback
Funktion
Der Parameter
callback
sieht so aus:(publicKey: object, privateKey?: object) => void
-
publicKey
Objekt
-
privateKey
object optional
Möglicherweise
null
, wenn diese Erweiterung keinen Zugriff darauf hat.
-
selectClientCertificates()
chrome.platformKeys.selectClientCertificates(
details: SelectDetails,
): Promise<Match[]>
Mit dieser Methode werden aus einer Liste von Clientzertifikaten diejenigen herausgefiltert, die der Plattform bekannt sind, mit request
übereinstimmen und für die die Erweiterung die Berechtigung hat, auf das Zertifikat und seinen privaten Schlüssel zuzugreifen. Wenn interactive
auf „true“ gesetzt ist, wird dem Nutzer ein Dialogfeld angezeigt, in dem er passende Zertifikate auswählen und der Erweiterung Zugriff auf das Zertifikat gewähren kann. Die ausgewählten/gefilterten Clientzertifikate werden an callback
übergeben.
Parameter
-
Details
Ausgabe
-
Promise<Match[]>
Chrome 121 und höher
subtleCrypto()
chrome.platformKeys.subtleCrypto(): object | undefined
Eine Implementierung von SubtleCrypto von WebCrypto, die kryptografische Vorgänge für Schlüssel von Clientzertifikaten ermöglicht, die für diese Erweiterung verfügbar sind.
Ausgabe
-
object | undefined
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
): Promise<VerificationResult>
Prüft, ob details.serverCertificateChain
gemäß den Vertrauenseinstellungen der Plattform für details.hostname
vertrauenswürdig ist. Hinweis: Das tatsächliche Verhalten der Vertrauensüberprüfung ist nicht vollständig spezifiziert und kann sich in Zukunft ändern. Die API-Implementierung prüft den Ablauf des Zertifikats, validiert den Zertifizierungspfad und prüft das Vertrauen durch eine bekannte Zertifizierungsstelle. Die Implementierung soll die erweiterte Schlüsselverwendung „serverAuth“ berücksichtigen und alternative Antragstellernamen unterstützen.
Parameter
-
Details
Ausgabe
-
Promise<VerificationResult>
Chrome 121 und höher