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 peuvent être utilisés pour l'authentification TLS, l'accès au réseau ou par toute autre extension via chrome.platformKeys.
Autorisations
enterprise.platformKeys
Disponibilité
Concepts et utilisation
Voici une utilisation type de cette API pour enregistrer un certificat client:
Obtenez tous les jetons disponibles à l'aide de
enterprise.platformKeys.getTokens()
.Recherchez le jeton où
id
correspond à"user"
. Utilisez ce jeton par la suite.Générez une paire de clés à l'aide de la méthode du jeton
generateKey()
(définie dans SubtleCrypto). Cela renverra le handle à la clé.Exportez la clé publique à l'aide de la méthode du jeton
exportKey()
(définie dans SubtleCrypto).Créez la signature des données de la demande de certification à l'aide de la méthode du 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 avec [
enterprise.platformKeys.importCertificate()
`[3].
Voici un exemple qui illustre l'interaction majeure avec 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
"Vendeur"
"ECDSA"
ChallengeKeyOptions
Propriétés
-
challenge
ArrayBuffer
Défi émis par l'API Verified Access Web.
-
registerKey
RegisterKeyOptions facultatif
Si cette valeur est présente, elle enregistre la clé testée avec le jeton
scope
spécifié. La clé peut ensuite être associée à un certificat et utilisée comme n'importe quelle autre clé de signature. Les appels suivants à cette fonction généreront ensuite une nouvelle clé d'entreprise dans lescope
spécifié. -
champ d'application
Quelle clé d'entreprise tester ?
RegisterKeyOptions
Propriétés
-
algorithm
Algorithme que la clé enregistrée doit utiliser.
Scope
Indique s'il faut utiliser la clé utilisateur de l'entreprise ou la clé de machine de l'entreprise.
Énumération
"USER"
"MACHINE"
Token
Propriétés
-
id
chaîne
Identifie l'élément
Token
de manière unique.Les ID statiques sont
"user"
et"system"
. Ils font référence respectivement au jeton matériel spécifique à l'utilisateur de la plate-forme et au jeton matériel à l'échelle du système. Tous les autres jetons (avec d'autres identifiants) peuvent être renvoyés parenterprise.platformKeys.getTokens
. -
softwareBackedSubtleCrypto
SubtleCrypto
Chrome 97 ou version ultérieureElle met en œuvre l'interface SubtleCrypto de WebCrypto. Les opérations de chiffrement, y compris la génération de clés, s'appuient sur un logiciel. La protection des clés, et donc l'implémentation de la propriété non récupérable, sont effectuées de manière logicielle. Les clés sont donc moins protégées que les clés intégrées au matériel.
Seules des clés RSASSA-PKCS1-V1_5 non extraites avec
modulusLength
jusqu'à 2 048 peuvent être générées. Chaque clé ne peut être utilisée qu'une seule fois pour signer des données.Les clés générées sur un
Token
spécifique ne peuvent pas être utilisées avec d'autres jetons, ni avecwindow.crypto.subtle
. De même, les objetsKey
créés avecwindow.crypto.subtle
ne peuvent pas être utilisés avec cette interface. -
subtleCrypto
SubtleCrypto
Elle met en œuvre l'interface SubtleCrypto de WebCrypto. Les opérations de chiffrement, y compris la génération de clés, s'appuient sur le matériel.
Seules les clés RSASSA-PKCS1-V1_5 non extraites avec
modulusLength
jusqu'à 2048 et ECDSA avecnamedCurve
P-256 peuvent être générées. Chaque clé ne peut être utilisée qu'une seule fois pour signer des données.Les clés générées sur un
Token
spécifique ne peuvent pas être utilisées avec d'autres jetons, ni avecwindow.crypto.subtle
. De même, les objetsKey
créés avecwindow.crypto.subtle
ne peuvent pas être utilisés avec cette interface.
Méthodes
challengeKey()
chrome.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
callback: function,
)
Semblable à challengeMachineKey
et challengeUserKey
, mais permet de spécifier l'algorithme d'une clé enregistrée. Remet une clé de machine d'entreprise intégrée au matériel et émet sa réponse dans le cadre d'un protocole d'attestation à distance. Utile uniquement sous ChromeOS et avec l'API Verified Access Web qui émet des questions d'authentification et vérifie les réponses.
Une validation réussie par l'API Verified Access Web indique clairement que l'appareil actuel est un appareil ChromeOS légitime, que l'appareil actuel 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é é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 hautement limitée et échouera si l'appareil actuel n'est pas géré, si l'utilisateur actuel ne l'est pas, ou si cette opération n'a pas été explicitement activée pour l'appelant par les règles relatives aux appareils de l'entreprise. La clé contestée ne se trouve 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
. -
rappel
fonction
Le paramètre
callback
se présente comme suit:(response: ArrayBuffer) => void
-
réponse
ArrayBuffer
La réponse à un défi.
-
challengeMachineKey()
chrome.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
callback: function,
)
Utilisez challengeKey
à la place.
Remet une clé de machine d'entreprise intégrée au matériel et émet sa réponse dans le cadre d'un protocole d'attestation à distance. Utile uniquement sous ChromeOS et avec l'API Verified Access Web qui émet des questions d'authentification et vérifie les réponses. Une validation réussie par l'API Verified Access Web est un signal fort des é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é émise par la vérification est étroitement liée au matériel de l'appareil actuel. Cette fonction est hautement limitée et échouera si l'appareil actuel n'est pas géré, si l'utilisateur actuel ne l'est pas, ou si cette opération n'a pas été explicitement activée pour l'appelant par les règles relatives aux appareils de l'entreprise. La clé de machine de l'entreprise ne se trouve pas dans le jeton "system"
et n'est accessible par aucune autre API.
Paramètres
-
challenge
ArrayBuffer
Défi émis par l'API Verified Access Web.
-
registerKey
Booléen facultatif
Chrome (version 59 ou ultérieure)Si cette clé est définie, la clé de machine d'entreprise actuelle est enregistrée avec le jeton
"system"
et renonce au rôle de clé de machine 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 2 048 bits. Les appels suivants à cette fonction généreront ensuite une nouvelle clé de machine Enterprise. -
rappel
fonction
Le paramètre
callback
se présente comme suit:(response: ArrayBuffer) => void
-
réponse
ArrayBuffer
La réponse à un défi.
-
challengeUserKey()
chrome.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
callback: function,
)
Utilisez challengeKey
à la place.
Remet une clé utilisateur Enterprise intégrée au matériel et émet la réponse dans le cadre d'un protocole d'attestation à distance. Utile uniquement sous ChromeOS et avec l'API Verified Access Web qui émet des questions d'authentification et vérifie les réponses. Une validation réussie par l'API Verified Access Web est un signal fort des é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 utilisateurs de l'entreprise. 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 hautement limitée et échouera si l'appareil actuel n'est pas géré, si l'utilisateur actuel ne l'est pas ou si cette opération n'a pas été explicitement activée pour l'appelant par les règles relatives aux utilisateurs de l'entreprise. La clé utilisateur Enterprise ne se trouve pas dans le jeton "user"
et n'est accessible par aucune autre API.
Paramètres
-
challenge
ArrayBuffer
Défi émis par l'API Verified Access Web.
-
registerKey
booléen
Si elle est définie, la clé utilisateur Enterprise actuelle est enregistrée avec le jeton
"user"
et renonce à son rôle de clé utilisateur 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 2 048 bits. Les appels ultérieurs envoyés à cette fonction généreront alors une nouvelle clé utilisateur Enterprise. -
rappel
fonction
Le paramètre
callback
se présente comme suit:(response: ArrayBuffer) => void
-
réponse
ArrayBuffer
La réponse à un défi.
-
getCertificates()
chrome.enterprise.platformKeys.getCertificates(
tokenId: string,
callback: function,
)
Renvoie la liste de tous les certificats client disponibles à partir du jeton donné. Permet de vérifier l'existence et l'expiration de certificats clients utilisables pour une authentification donnée.
Paramètres
-
tokenId
chaîne
ID d'un jeton renvoyé par
getTokens
. -
rappel
fonction
Le paramètre
callback
se présente comme suit:(certificates: ArrayBuffer[]) => void
-
certificats
ArrayBuffer[]
Liste des certificats, chacun selon l'encodage DER d'un certificat X.509.
-
getTokens()
chrome.enterprise.platformKeys.getTokens(
callback: function,
)
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 au niveau du système est disponible, la liste renvoyée contient également le jeton au niveau 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 de Chromebook, par exemple).
Paramètres
importCertificate()
chrome.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
)
Importe certificate
dans le jeton donné si la clé certifiée est déjà stockée dans ce jeton. Après une 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.
-
rappel
function facultatif
Le paramètre
callback
se présente comme suit:() => void
removeCertificate()
chrome.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
)
Supprime certificate
du jeton donné, le cas échéant. À utiliser 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. À utiliser 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.
-
rappel
function facultatif
Le paramètre
callback
se présente comme suit:() => void