refresh date: 2026-09-25 robots: noindex
Description
Utilisez l'API chrome.enterprise.platformKeys pour générer des clés et installer des certificats pour ces clés. Les certificats seront gérés par la plate-forme et pourront être utilisés pour l'authentification TLS, l'accès au réseau ou par d'autres extensions via chrome.platformKeys.
Autorisations
enterprise.platformKeysDisponibilité
Utilisation
L'utilisation classique de cette API pour enregistrer un certificat client se déroule comme suit :
Obtenez tous les jetons disponibles à l'aide de enterprise.platformKeys.getTokens.
Recherchez le jeton dont la valeur
idest égale à"user". Utilisez ce jeton par la suite.Générez une paire de clés à l'aide de la méthode de jeton
generateKey(définie dans SubtleCrypto). Cette opération renvoie un handle vers la clé.Exportez la clé publique à l'aide de la méthode de jeton
exportKey(définie dans SubtleCrypto).Créez la signature des données de la demande de certification à l'aide de la méthode de jeton
sign(définie dans SubtleCrypto).Remplissez la demande de certification et envoyez-la à l'autorité de certification.
Si un certificat est reçu, importez-le à l'aide de enterprise.platformKeys.importCertificate.
Voici un exemple qui montre l'interaction majeure de l'API, à l'exception de la création et de l'envoi de la demande de certification :
function getUserToken(callback) {
chrome.enterprise.platformKeys.getTokens(function(tokens) {
for (var i = 0; i < tokens.length; i++) {
if (tokens[i].id == "user") {
callback(tokens[i]);
return;
}
}
callback(undefined);
});
}
function generateAndSign(userToken) {
var data = new Uint8Array([0, 5, 1, 2, 3, 4, 5, 6]);
var algorithm = {
name: "RSASSA-PKCS1-v1_5",
// RsaHashedKeyGenParams
modulusLength: 2048,
publicExponent:
new Uint8Array([0x01, 0x00, 0x01]), // Equivalent to 65537
hash: {
name: "SHA-256",
}
};
var cachedKeyPair;
userToken.subtleCrypto.generateKey(algorithm, false, ["sign"])
.then(function(keyPair) {
cachedKeyPair = keyPair;
return userToken.subtleCrypto.exportKey("spki", keyPair.publicKey);
},
console.log.bind(console))
.then(function(publicKeySpki) {
// Build the Certification Request using the public key.
return userToken.subtleCrypto.sign(
{name : "RSASSA-PKCS1-v1_5"}, cachedKeyPair.privateKey, data);
},
console.log.bind(console))
.then(function(signature) {
// Complete the Certification Request with |signature|.
// Send out the request to the CA, calling back
// onClientCertificateReceived.
},
console.log.bind(console));
}
function onClientCertificateReceived(userToken, certificate) {
chrome.enterprise.platformKeys.importCertificate(userToken.id, certificate);
}
getUserToken(generateAndSign);
Types
Algorithm
Type de clé à générer.
Énumération
"RSA"
"ECDSA"
ChallengeKeyOptions
Propriétés
-
challenge
ArrayBuffer
Une question d'authentification émise par l'API Web Verified Access.
-
registerKey
RegisterKeyOptions facultatif
Si elle est présente, enregistre la clé de vérification avec le jeton de l'
scopespécifié. La clé peut ensuite être associée à un certificat et utilisée comme n'importe quelle autre clé de signature. Les appels ultérieurs à cette fonction généreront une nouvelle clé d'entreprise dans lescopespécifié. -
champ d'application
Scope (Portée)
Clé d'entreprise à demander.
RegisterKeyOptions
Propriétés
-
algorithm
Algorithme que la clé enregistrée doit utiliser.
Scope
Indique s'il faut utiliser la clé utilisateur de la version Enterprise ou la clé de machine Enterprise.
Énumération
"USER"
"MACHINE"
Token
Propriétés
-
id
chaîne
Identifie de manière unique ce
Token.Les ID statiques sont
"user"et"system", qui font respectivement référence au jeton matériel spécifique à l'utilisateur et au jeton matériel à l'échelle du système de la plate-forme. Tout autre jeton (avec d'autres identifiants) peut être renvoyé parenterprise.platformKeys.getTokens. -
softwareBackedSubtleCrypto
SubtleCrypto
Chrome 97 ou version ultérieureImplémente l'interface SubtleCrypto de WebCrypto. Les opérations de chiffrement, y compris la génération de clés, sont effectuées par le biais d'un logiciel. La protection des clés, et donc l'implémentation de la propriété non extractible, est effectuée dans le logiciel. Les clés sont donc moins protégées que les clés intégrées au matériel.
Seules les clés non extractibles peuvent être générées. Le seul type de clé accepté est RSASSA-PKCS1-V1_5 avec
modulusLengthjusqu'à 2048. Chaque clé ne peut être utilisée qu'une seule fois pour signer des données, sauf si l'extension est ajoutée à la liste d'autorisation via la règle KeyPermissions, auquel cas la clé peut être utilisée indéfiniment.Les clés générées sur un
Tokenspécifique ne peuvent pas être utilisées avec d'autres jetons, ni avecwindow.crypto.subtle. De même, les objetsKeycréés avecwindow.crypto.subtlene peuvent pas être utilisés avec cette interface. -
subtleCrypto
SubtleCrypto
Implémente l'interface SubtleCrypto de WebCrypto. Les opérations de chiffrement, y compris la génération de clés, sont intégrées au matériel.
Seules les clés non extractibles peuvent être générées. Les types de clés compatibles sont RSASSA-PKCS1-V1_5 avec
modulusLengthjusqu'à 2048 et ECDSA avecnamedCurveP-256. Chaque clé ne peut être utilisée qu'une seule fois pour signer des données, sauf si l'extension est ajoutée à la liste d'autorisation par la règle KeyPermissions, auquel cas la clé peut être utilisée indéfiniment.Les clés générées sur un
Tokenspécifique ne peuvent pas être utilisées avec d'autres jetons, ni avecwindow.crypto.subtle. De même, les objetsKeycréés avecwindow.crypto.subtlene peuvent pas être utilisés avec cette interface.
Méthodes
challengeKey()
chrome.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
callback?: function,
): Promise<ArrayBuffer>
Semblable à challengeMachineKey et challengeUserKey, mais permet de spécifier l'algorithme d'une clé enregistrée. Interroge une clé de machine d'entreprise intégrée au matériel et émet la réponse dans le cadre d'un protocole d'attestation à distance. Cette option n'est utile que sur ChromeOS et en association avec l'API Web Verified Access, qui émet des demandes de vérification et vérifie les réponses.
Une validation réussie par l'API Web Verified Access est un signal fort indiquant que l'appareil actuel est un appareil ChromeOS légitime, qu'il est géré par le domaine spécifié lors de la validation, que l'utilisateur actuellement connecté est géré par le domaine spécifié lors de la validation et que l'état actuel de l'appareil est conforme aux règles relatives aux appareils de l'entreprise. Par exemple, une règle peut spécifier que l'appareil ne doit pas être en mode développeur. Toute identité d'appareil émise par la validation est étroitement liée au matériel de l'appareil actuel. Si le champ d'application "user" est spécifié, l'identité est également étroitement liée à l'utilisateur actuellement connecté.
Cette fonction est très limitée et échouera si l'appareil actuel n'est pas géré, si l'utilisateur actuel n'est pas géré ou si cette opération n'a pas été explicitement activée pour l'appelant par la règle relative aux appareils de l'entreprise. La clé contestée ne réside pas dans le jeton "system" ou "user" et n'est accessible par aucune autre API.
Paramètres
-
options
Objet contenant les champs définis dans
ChallengeKeyOptions. -
callback
function facultatif
Le paramètre
callbackse présente comme suit :(response: ArrayBuffer) => void
-
réponse
ArrayBuffer
Réponse au test.
-
Renvoie
-
Promise<ArrayBuffer>
Chrome 131 ou version ultérieureRenvoie une promesse qui se résout avec la réponse au test.
Les promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.
challengeMachineKey()
chrome.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
callback?: function,
): Promise<ArrayBuffer>
Utilisez plutôt challengeKey.
Interroge une clé de machine d'entreprise intégrée au matériel et émet la réponse dans le cadre d'un protocole d'attestation à distance. Cette option n'est utile que sur ChromeOS et en association avec l'API Web Verified Access, qui émet des demandes de vérification et vérifie les réponses. Une validation réussie par l'API Web Verified Access est un signal fort de tous les éléments suivants : * L'appareil actuel est un appareil ChromeOS légitime. * L'appareil actuel est géré par le domaine spécifié lors de la validation. * L'utilisateur actuellement connecté est géré par le domaine spécifié lors de la validation. * L'état actuel de l'appareil est conforme aux règles relatives aux appareils de l'entreprise. Par exemple, une règle peut spécifier que l'appareil ne doit pas être en mode développeur. * Toute identité d'appareil émise par la validation est étroitement liée au matériel de l'appareil actuel. Cette fonction est très limitée et échouera si l'appareil actuel n'est pas géré, si l'utilisateur actuel n'est pas géré ou si cette opération n'a pas été explicitement activée pour l'appelant par la règle relative aux appareils de l'entreprise. La clé de machine d'entreprise ne réside pas dans le jeton "system" et n'est accessible par aucune autre API.
Paramètres
-
challenge
ArrayBuffer
Une question d'authentification émise par l'API Web Verified Access.
-
registerKey
boolean facultatif
Chrome 59 ou version ultérieureSi cette option est définie, la clé d'ordinateur d'entreprise actuelle est enregistrée avec le jeton
"system"et abandonne le rôle de clé d'ordinateur d'entreprise. La clé peut ensuite être associée à un certificat et utilisée comme n'importe quelle autre clé de signature. Cette clé est une clé RSA de 2 048 bits. Les appels ultérieurs à cette fonction généreront une nouvelle clé de machine d'entreprise. -
callback
function facultatif
Le paramètre
callbackse présente comme suit :(response: ArrayBuffer) => void
-
réponse
ArrayBuffer
Réponse au test.
-
Renvoie
-
Promise<ArrayBuffer>
Chrome 131 ou version ultérieureRenvoie une promesse qui se résout avec la réponse au test.
Les promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.
challengeUserKey()
chrome.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
callback?: function,
): Promise<ArrayBuffer>
Utilisez plutôt challengeKey.
Interroge une clé d'utilisateur d'entreprise intégrée au matériel et émet la réponse dans le cadre d'un protocole d'attestation à distance. Cette option n'est utile que sur ChromeOS et en association avec l'API Web Verified Access, qui émet des demandes de vérification et vérifie les réponses. Une validation réussie par l'API Web Verified Access est un signal fort de tous les éléments suivants : * L'appareil actuel est un appareil ChromeOS légitime. * L'appareil actuel est géré par le domaine spécifié lors de la validation. * L'utilisateur actuellement connecté est géré par le domaine spécifié lors de la validation. * L'état actuel de l'appareil est conforme aux règles d'entreprise concernant les utilisateurs. Par exemple, une règle peut spécifier que l'appareil ne doit pas être en mode développeur. * La clé publique émise par la validation est étroitement liée au matériel de l'appareil actuel et à l'utilisateur actuellement connecté. Cette fonction est très limitée et échouera si l'appareil actuel n'est pas géré, si l'utilisateur actuel n'est pas géré ou si cette opération n'a pas été explicitement activée pour l'appelant par la règle d'entreprise pour les utilisateurs. La clé utilisateur de la version Enterprise ne réside pas dans le jeton "user" et n'est accessible par aucune autre API.
Paramètres
-
challenge
ArrayBuffer
Une question d'authentification émise par l'API Web Verified Access.
-
registerKey
booléen
Si cette option est définie, la clé d'utilisateur de la version Enterprise actuelle est enregistrée avec le jeton
"user"et abandonne le rôle de clé d'utilisateur de la version Enterprise. La clé peut ensuite être associée à un certificat et utilisée comme n'importe quelle autre clé de signature. Cette clé est une clé RSA de 2 048 bits. Les appels ultérieurs à cette fonction généreront une nouvelle clé d'utilisateur de la version Enterprise. -
callback
function facultatif
Le paramètre
callbackse présente comme suit :(response: ArrayBuffer) => void
-
réponse
ArrayBuffer
Réponse au test.
-
Renvoie
-
Promise<ArrayBuffer>
Chrome 131 ou version ultérieureRenvoie une promesse qui se résout avec la réponse au test.
Les promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.
getCertificates()
chrome.enterprise.platformKeys.getCertificates(
tokenId: string,
callback?: function,
): Promise<ArrayBuffer[]>
Renvoie la liste de tous les certificats clients disponibles à partir du jeton donné. Peut être utilisé pour vérifier l'existence et l'expiration des certificats clients utilisables pour une certaine authentification.
Paramètres
-
tokenId
chaîne
ID d'un jeton renvoyé par
getTokens. -
callback
function facultatif
Le paramètre
callbackse présente comme suit :(certificates: ArrayBuffer[]) => void
-
certificats
ArrayBuffer[]
Liste des certificats, chacun dans l'encodage DER d'un certificat X.509.
-
Renvoie
-
Promise<ArrayBuffer[]>
Chrome 131 ou version ultérieureRenvoie une promesse qui se résout avec la liste des certificats disponibles.
Les promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.
getTokens()
chrome.enterprise.platformKeys.getTokens(
callback?: function,
): Promise<Token[]>
Renvoie les jetons disponibles. Dans une session utilisateur standard, la liste contient toujours le jeton de l'utilisateur avec id "user". Si un jeton TPM à l'échelle du système est disponible, la liste renvoyée contiendra également le jeton à l'échelle du système avec id "system". Le jeton à l'échelle du système sera le même pour toutes les sessions sur cet appareil (appareil au sens d'un Chromebook, par exemple).
Paramètres
Renvoie
-
Promise<Token[]>
Chrome 131 ou version ultérieureInvoqué par
getTokensavec la liste des jetons disponibles.Les promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.
importCertificate()
chrome.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
): Promise<void>
Importe certificate dans le jeton donné si la clé certifiée est déjà stockée dans ce jeton. Une fois la demande de certification réussie, cette fonction doit être utilisée pour stocker le certificat obtenu et le mettre à la disposition du système d'exploitation et du navigateur pour l'authentification.
Paramètres
-
tokenId
chaîne
ID d'un jeton renvoyé par
getTokens. -
certificat
ArrayBuffer
Encodage DER d'un certificat X.509.
-
callback
function facultatif
Le paramètre
callbackse présente comme suit :() => void
Renvoie
-
Promise<void>
Chrome 131 ou version ultérieureRenvoie une promesse qui se résout lorsque cette opération est terminée.
Les promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.
removeCertificate()
chrome.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
): Promise<void>
Supprime certificate du jeton donné, s'il est présent. Cette option doit être utilisée pour supprimer les certificats obsolètes afin qu'ils ne soient pas pris en compte lors de l'authentification et qu'ils n'encombrent pas le choix des certificats. Doit être utilisé pour libérer de l'espace de stockage dans le magasin de certificats.
Paramètres
-
tokenId
chaîne
ID d'un jeton renvoyé par
getTokens. -
certificat
ArrayBuffer
Encodage DER d'un certificat X.509.
-
callback
function facultatif
Le paramètre
callbackse présente comme suit :() => void
Renvoie
-
Promise<void>
Chrome 131 ou version ultérieureRenvoie une promesse qui se résout lorsque cette opération est terminée.
Les promesses ne sont compatibles qu'avec Manifest V3 et les versions ultérieures. Les autres plates-formes doivent utiliser des rappels.