chrome.platformKeys

refresh date: 2026-09-25 robots: noindex

Beschreibung

Verwenden Sie die chrome.platformKeys API, um auf von der Plattform verwaltete Clientzertifikate zuzugreifen. 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

Chrome 45 und höher Nur ChromeOS

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 enthält 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 die leere Liste ist, werden jedoch 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. Diese enthält Algorithmusparameter, die dem Schlüssel des Zertifikats inhärent sind (z.B. die Schlüssellänge). Andere Parameter wie die von der Signierfunktion verwendete Hash-Funktion sind nicht enthalten.

SelectDetails

Attribute

  • clientCerts

    ArrayBuffer[] optional

    Wenn angegeben, wird die selectClientCertificates auf diese Liste angewendet. Andernfalls wird die Liste aller Zertifikate aus den Zertifikatsspeichern der Plattform abgerufen, die für diese Erweiterungen verfügbar sind. Einträge, für die die Erweiterung keine Berechtigung hat oder die nicht mit der Anfrage übereinstimmen, werden entfernt.

  • interaktiv

    boolean

    Wenn „true“ festgelegt ist, wird dem Nutzer die gefilterte Liste angezeigt, damit er manuell ein Zertifikat auswählen kann. Dadurch erhält die Erweiterung Zugriff auf die Zertifikate und Schlüssel. Es werden nur die ausgewählten Zertifikate zurückgegeben. Wenn der Wert „false“ ist, wird die Liste auf alle Zertifikate reduziert, auf die die Erweiterung (automatisch oder manuell) Zugriff erhalten hat.

  • 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 das 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 Vertrauensprüfung fehlgeschlagen ist, enthält dieses Array die von der zugrunde liegenden Netzwerkschicht gemeldeten Fehler. Andernfalls ist dieses Array leer.

    Hinweis: Diese Liste ist nur für die Fehlerbehebung gedacht und enthält möglicherweise nicht alle relevanten Fehler. Die zurückgegebenen Fehler können sich in zukünftigen Versionen dieser API ändern und sind nicht garantiert vorwärts- oder abwärtskompatibel.

  • vertrauenswürdig

    boolean

    Das Ergebnis der Vertrauensprüfung: „true“, wenn die Vertrauenswürdigkeit für die angegebenen Prüfungsdetails festgestellt werden konnte, und „false“, wenn die Vertrauenswürdigkeit aus irgendeinem Grund abgelehnt wurde.

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 von selectClientCertificates zurückgegeben wird.

  • Parameter

    Objekt

    Bestimmt zusätzlich zu den durch den Schlüssel selbst festgelegten Parametern die Parameter des Signatur-/Hash-Algorithmus. Es werden dieselben Parameter wie von der WebCrypto-Funktion importKey akzeptiert, z.B. RsaHashedImportParams für einen RSASSA-PKCS1-v1_5-Schlüssel und EcKeyImportParams 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 Signierfunktion wendet dann das PKCS#1 v1.5-Padding an, hasht die angegebenen Daten jedoch nicht.

    Derzeit werden von 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

      Objekt optional

      Kann null sein, wenn diese Erweiterung keinen Zugriff darauf hat.

getKeyPairBySpki()

Chrome 85 oder höher
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 müssen wir auch den Parameter „hash“ { "hash": { "name": string } } übergeben. Der Parameter „hash“ stellt den Namen des Hash-Algorithmus dar, der vor einer Signatur im Digest-Vorgang verwendet werden soll. Es ist möglich, „none“ als Hash-Namen zu übergeben. In diesem Fall wendet die Signierfunktion das PKCS#1 v1.5-Padding an, hasht die angegebenen Daten jedoch nicht.

    Derzeit unterstützt diese Methode den Algorithmus „ECDSA“ mit der benannten Kurve P-256 und den Algorithmus „RSASSA-PKCS1-v1_5“ 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

      Objekt optional

      Kann null sein, wenn diese Erweiterung keinen Zugriff darauf hat.

selectClientCertificates()

Promise
chrome.platformKeys.selectClientCertificates(
  details: SelectDetails,
  callback?: function,
)
: Promise<Match[]>

Mit dieser Methode wird eine Liste von Clientzertifikaten gefiltert, 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 aus übereinstimmenden 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

    function optional

    Der Parameter callback sieht so aus:

    (matches: Match[]) => void

    • stimmt überein mit

      Die Liste der Zertifikate, die der Anfrage entsprechen, für die die Erweiterung die Berechtigung hat und die vom Nutzer ausgewählt wurden, wenn interactive „true“ ist.

Ausgabe

  • Promise<Match[]>

    Chrome 121 und höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.

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()

Promise
chrome.platformKeys.verifyTLSServerCertificate(
  details: VerificationDetails,
  callback?: function,
)
: 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 Vertrauensprüfung ist nicht vollständig spezifiziert und kann sich in Zukunft ändern. Die API-Implementierung überprüft den Ablauf des Zertifikats, validiert den Zertifizierungspfad und prüft die Vertrauenswürdigkeit durch eine bekannte Zertifizierungsstelle. Die Implementierung muss die EKU „serverAuth“ berücksichtigen und alternative Antragstellernamen unterstützen.

Parameter

Ausgabe

  • Chrome 121 und höher

    Promises werden nur für Manifest V3 und höher unterstützt. Auf anderen Plattformen müssen Callbacks verwendet werden.