chrome.platformKeys

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

Chrome 45 und höher Nur ChromeOS

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.

  • 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.

Parameters

  • Zertifikat

    ArrayBuffer

    Das Zertifikat eines Match, das von selectClientCertificates 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 und EcKeyImportParams 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 85 und höher
chrome.platformKeys.getKeyPairBySpki(
  publicKeySpkiDer: ArrayBuffer,
  parameters: object,
  callback: function,
)

Übergibt das von publicKeySpkiDer angegebene Schlüsselpaar zur Verwendung mit platformKeys.subtleCrypto an callback.

Parameters

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

Versprechen
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.

Parameters

  • 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ückgaben

  • Promise<Match[]>

    Chrome 121 und höher

    Promise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks werden jedoch aus Gründen der Abwärtskompatibilität bereitgestellt. Sie können nicht beide in einem Funktionsaufruf verwenden. Das Promise wird mit demselben Typ aufgelöst, der an den Callback übergeben wird.

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ückgaben

  • Objekt|nicht definiert

verifyTLSServerCertificate()

Versprechen
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.

Parameters

Rückgaben

  • Chrome 121 und höher

    Promise-Objekte werden in Manifest V3 und höher unterstützt, Callbacks werden jedoch aus Gründen der Abwärtskompatibilität bereitgestellt. Sie können nicht beide in einem Funktionsaufruf verwenden. Das Promise wird mit demselben Typ aufgelöst, der an den Callback übergeben wird.