Beschreibung
Sie können die chrome.platformKeys
API verwenden, 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. Dadurch können beispielsweise von der Plattform verwaltete Zertifikate in Drittanbieter-VPNs verwendet werden (siehe chrome.vpnProvider).
Berechtigungen
platformKeys
Verfügbarkeit
Typen
ClientCertificateRequest
Attribute
-
certificateAuthorities
Array-Zwischenspeicher[]
Liste der Distinguished Name von Zertifizierungsstellen, die vom Server zugelassen ist. Jeder Eintrag muss ein DER-codierter X.509 DistinguishedName sein.
-
certificateTypes
Dieses Feld enthält eine Liste der angeforderten Zertifikattypen, die nach Servereinstellungen geordnet sind. Es werden nur Zertifikate eines Typs abgerufen, der in dieser Liste enthalten ist. Wenn
certificateTypes
die leere Liste ist, werden alle Zertifikate zurückgegeben.
ClientCertificateType
Enum
"ecdsaSign"
Match
Attribute
-
Zertifikat
ArrayBuffer
Die DER-Codierung eines X.509-Zertifikats.
-
keyAlgorithm
Objekt
Den KeyAlgorithm des zertifizierten Schlüssels. Enthält Algorithmusparameter, die dem Schlüssel des Zertifikats inhärent sind (z.B. die Schlüssellänge). Andere Parameter wie die von der Zeichenfunktion verwendete Hash-Funktion sind nicht enthalten.
SelectDetails
Attribute
-
clientCerts
ArrayBuffer[] optional
Wenn angegeben, wird die
selectClientCertificates
auf diese Liste angewendet. Andernfalls wird eine Liste aller Zertifikate aus den Zertifikatspeichern der Plattform abgerufen, die für diese Erweiterung verfügbar sind. Einträge, für die die Erweiterung keine Berechtigung hat oder die nicht mit der Anfrage übereinstimmen, werden entfernt. -
interactive
boolean
Bei „true“ wird dem Nutzer die gefilterte Liste angezeigt, in der er manuell ein Zertifikat auswählen und der Erweiterung Zugriff auf die Zertifikate und Schlüssel gewähren kann. Nur die ausgewählten Zertifikate werden zurückgegeben. Ist der Wert „false“, wird die Liste auf alle Zertifikate reduziert, auf die der Erweiterung automatisch oder manuell Zugriff gewährt wurde.
-
Anfrage
Es werden nur Zertifikate zurückgegeben, die dieser Anfrage entsprechen.
VerificationDetails
Attribute
-
Hostname
String
Der Hostname des Servers, für den das Zertifikat verifiziert werden soll, z.B. der Server, der das
serverCertificateChain
bereitgestellt hat. -
serverCertificateChain
Array-Zwischenspeicher[]
Jeder Ketteneintrag muss die DER-Codierung eines X.509-Zertifikats sein, der erste Eintrag muss das Serverzertifikat sein und jeder Eintrag muss den vorangehenden Eintrag zertifizieren.
VerificationResult
Attribute
-
debug_errors
String[]
Wenn die Überprüfung der Vertrauensstellung fehlgeschlagen ist, enthält dieses Array die von der zugrunde liegenden Netzwerkschicht gemeldeten Fehler. Andernfalls ist dieses Array leer.
Hinweis:Diese Liste dient nur der Fehlerbehebung und enthält möglicherweise nicht alle relevanten Fehler. Die zurückgegebenen Fehler können sich in zukünftigen Versionen dieser API ändern. Es kann nicht garantiert werden, dass sie abwärts- oder abwärtskompatibel sind.
-
vertrauenswürdig
boolean
Das Ergebnis der Vertrauensüberprüfung: „true“, wenn die Vertrauenswürdigkeit für die angegebenen Überprüfungsdetails hergestellt werden konnte, und „false“, wenn die Vertrauensstellung aus irgendeinem Grund abgelehnt wird.
Methoden
getKeyPair()
chrome.platformKeys.getKeyPair(
certificate: ArrayBuffer,
parameters: object,
callback: function,
)
Übergibt das Schlüsselpaar certificate
zur Verwendung mit platformKeys.subtleCrypto
an callback
.
Parameter
-
Zertifikat
ArrayBuffer
Das Zertifikat eines
Match
, das vonselectClientCertificates
zurückgegeben wurde. -
Parameter
Objekt
Bestimmt zusätzlich zu den durch den Schlüssel festgelegten Parametern die Signatur-/Hash-Algorithmusparameter. Dieselben Parameter werden von der Funktion importKey von WebCrypto akzeptiert, z.B.
RsaHashedImportParams
für einen RSASSA-PKCS1-v1_5-Schlüssel undEcKeyImportParams
für einen EC-Schlüssel. Außerdem kann für RSASSA-PKCS1-v1_5-Schlüssel der Name 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 Zeichenfunktion wendet dann PKCS#1 v1.5-Padding an, aber hasht die angegebenen Daten nicht.Derzeit unterstützt diese Methode nur die Algorithmen „RSASSA-PKCS1-v1_5“ und „ECDSA“.
-
callback
Funktion
Der Parameter
callback
sieht so aus:(publicKey: object, privateKey?: object) => void
-
publicKey
Objekt
-
privateKey
Objekt optional
Könnte
null
sein, wenn diese Erweiterung keinen Zugriff darauf hat.
-
getKeyPairBySpki()
chrome.platformKeys.getKeyPairBySpki(
publicKeySpkiDer: ArrayBuffer,
parameters: object,
callback: function,
)
Übergibt das von publicKeySpkiDer
angegebene Schlüsselpaar zur Verwendung mit platformKeys.subtleCrypto
an callback
.
Parameter
-
publicKeySpkiDer
ArrayBuffer
Eine DER-codierte X.509-SubjectPublicKeyInfo, die beispielsweise durch Aufrufen der exportKey-Funktion von WebCrypto mit format="spki" abgerufen wird.
-
Parameter
Objekt
Stellt Signatur- und Hash-Algorithmusparameter bereit, zusätzlich zu den durch den Schlüssel selbst festgelegten Parametern. Dieselben Parameter werden von der Funktion importKey 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 der „hash“-Parameter{ "hash": { "name": string } }
übergeben werden. Der Parameter „hash“ steht für den Namen des Hash-Algorithmus, der im Digest-Vorgang vor einem Zeichen verwendet werden soll. Es ist möglich, „none“ als Hash-Name zu übergeben. In diesem Fall wendet die Zeichenfunktion PKCS#1 v1.5-Padding an und hasht die angegebenen Daten nicht.Derzeit unterstützt diese Methode den Algorithmus „ECDSA“ mit den Algorithmen „benannte Kurve P-256“ und „RSASSA-PKCS1-v1_5“ mit einem der Hash-Algorithmen „Keine“, „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
Objekt optional
Könnte
null
sein, wenn diese Erweiterung keinen Zugriff darauf hat.
-
selectClientCertificates()
chrome.platformKeys.selectClientCertificates(
details: SelectDetails,
callback?: function,
)
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
„true“ ist, wird dem Nutzer ein Dialogfeld angezeigt, in dem er aus passenden Zertifikaten auswählen und der Erweiterung Zugriff auf das Zertifikat gewähren kann. Die ausgewählten/gefilterten Clientzertifikate werden an callback
übergeben.
Parameter
-
Details
-
callback
Funktion optional
Der Parameter
callback
sieht so aus:(matches: Match[]) => void
-
Übereinstimmungen
Die Liste der Zertifikate, die der Anfrage entsprechen, für die die Erweiterung die Berechtigung hat und, wenn
interactive
wahr ist, die vom Nutzer ausgewählt wurden.
-
Rückgabe
-
Promise<Match[]>
Chrome 121 und höherPromise-Objekte werden nur für Manifest V3 und höher unterstützt. Andere Plattformen müssen Callbacks verwenden.
subtleCrypto()
chrome.platformKeys.subtleCrypto()
Eine Implementierung von SubtleCrypto von WebCrypto, die kryptografische Vorgänge an Schlüsseln von Clientzertifikaten zulassen, die für diese Erweiterung zur Verfügung stehen.
Rückgabe
-
Objekt | nicht definiert
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
callback?: function,
)
Überprüft, ob details.serverCertificateChain
gemäß den Vertrauenseinstellungen der Plattform für details.hostname
vertrauenswürdig ist. Hinweis: Das tatsächliche Verhalten der Bestätigung der Vertrauensstellung ist nicht vollständig definiert und kann sich in Zukunft ändern. Die API-Implementierung prüft den Ablauf des Zertifikats, validiert den Zertifizierungspfad und prüft die Vertrauenswürdigkeit einer bekannten Zertifizierungsstelle. Die Implementierung sollte die serverAuth von EKU berücksichtigen und alternative Antragstellernamen unterstützen.
Parameter
-
Details
-
callback
Funktion optional
Der Parameter
callback
sieht so aus:(result: VerificationResult) => void
-
Ergebnis
-
Rückgabe
-
Promise<VerificationResult>
Chrome 121 und höherPromise-Objekte werden nur für Manifest V3 und höher unterstützt. Andere Plattformen müssen Callbacks verwenden.