Beschrijving
Gebruik de chrome.enterprise.platformKeys
API om sleutels te genereren en certificaten voor deze sleutels te installeren. De certificaten worden beheerd door het platform en kunnen worden gebruikt voor TLS-authenticatie, netwerktoegang of andere extensies via chrome.platformKeys.
Machtigingen
enterprise.platformKeys
Beschikbaarheid
Begrippen en gebruik
Het typische gebruik van deze API om een clientcertificaat te registreren, verloopt als volgt:
Haal alle beschikbare tokens op met
enterprise.platformKeys.getTokens()
.Zoek het token met
id
gelijk aan"user"
. Gebruik dit token later.Genereer een sleutelpaar met behulp van de
generateKey()
Token-methode (gedefinieerd in SubtleCrypto). Dit retourneert de handle naar de sleutel.Exporteer de openbare sleutel met behulp van de
exportKey()
tokenmethode (gedefinieerd in SubtleCrypto).Maak de handtekening van de gegevens van het certificeringsverzoek met behulp van de
sign()
tokenmethode (gedefinieerd in SubtleCrypto).Vul het certificeringsverzoek in en stuur het naar de certificeringsinstantie.
Als er een certificaat is ontvangen, importeer het dan met behulp van [
enterprise.platformKeys.importCertificate()
`[3]
Hier is een voorbeeld dat de belangrijkste API-interactie laat zien, met uitzondering van het opstellen en verzenden van de certificeringsaanvraag:
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);
Typen
Algorithm
Type sleutel dat gegenereerd moet worden.
Enum
"RSA" "ECDSA"
ChallengeKeyOptions
Eigenschappen
- uitdaging
ArrayBuffer
Een uitdaging afkomstig van de Verified Access Web API.
- registerKey
RegisterKeyOptions optioneel
Indien aanwezig, registreert de aangevochten sleutel met het token van de opgegeven
scope
. De sleutel kan vervolgens aan een certificaat worden gekoppeld en als elke andere ondertekeningssleutel worden gebruikt. Volgende aanroepen van deze functie genereren vervolgens een nieuwe Enterprise Key in de opgegevenscope
. - domein
Welke Enterprise Key moet ik uitdagen?
RegisterKeyOptions
Eigenschappen
- algoritme
Welk algoritme de geregistreerde sleutel moet gebruiken.
Scope
Of de Enterprise User Key of de Enterprise Machine Key moet worden gebruikt.
Enum
"GEBRUIKER" "MACHINE"
Token
Eigenschappen
- id
snaar
Identificeert dit
Token
op unieke wijze.Statische ID's zijn
"user"
en"system"
, die respectievelijk verwijzen naar de gebruikerspecifieke en systeembrede hardwaretoken van het platform. Andere tokens (met andere identificatiegegevens) kunnen worden geretourneerd doorenterprise.platformKeys.getTokens
. - softwareBackedSubtleCrypto
Subtiele Crypto
Chroom 97+Implementeert de SubtleCrypto- interface van WebCrypto. De cryptografische bewerkingen, inclusief sleutelgeneratie, worden softwarematig ondersteund. De beveiliging van de sleutels, en daarmee de implementatie van de niet-extraheerbare eigenschap, gebeurt softwarematig, waardoor de sleutels minder goed beschermd zijn dan hardwarematig ondersteunde sleutels.
Er kunnen alleen niet-extraheerbare sleutels worden gegenereerd. De ondersteunde sleuteltypen zijn RSASSA-PKCS1-V1_5 en RSA-OAEP (op Chrome-versies 135 en hoger) met
modulusLength
tot 2048. Elke RSASSA-PKCS1-V1_5-sleutel kan maximaal één keer worden gebruikt voor het ondertekenen van gegevens, tenzij de extensie op de whitelist staat via het KeyPermissions-beleid . In dat geval kan de sleutel onbeperkt worden gebruikt. RSA-OAEP-sleutels worden ondersteund sinds Chrome-versie 135 en kunnen door extensies die via datzelfde beleid op de whitelist staan, worden gebruikt om andere sleutels uit te pakken.Sleutels die op een specifieke
Token
zijn gegenereerd, kunnen niet met andere tokens worden gebruikt, noch metwindow.crypto.subtle
. OokKey
die metwindow.crypto.subtle
zijn gemaakt, kunnen niet met deze interface worden gebruikt. - subtieleCrypto
Subtiele Crypto
Implementeert de SubtleCrypto- interface van WebCrypto. De cryptografische bewerkingen, inclusief sleutelgeneratie, worden hardwarematig ondersteund.
Er kunnen alleen niet-extraheerbare sleutels worden gegenereerd. De ondersteunde sleuteltypen zijn RSASSA-PKCS1-V1_5 en RSA-OAEP (op Chrome-versies 135 en hoger) met
modulusLength
tot 2048 en ECDSA metnamedCurve
P-256. Elke RSASSA-PKCS1-V1_5- en ECDSA-sleutel kan maximaal één keer worden gebruikt voor het ondertekenen van gegevens, tenzij de extensie op de whitelist staat via het KeyPermissions-beleid . In dat geval kan de sleutel onbeperkt worden gebruikt. RSA-OAEP-sleutels worden ondersteund sinds Chrome-versie 135 en kunnen door extensies die via datzelfde beleid op de whitelist staan, worden gebruikt om andere sleutels uit te pakken.Sleutels die op een specifieke
Token
zijn gegenereerd, kunnen niet met andere tokens worden gebruikt, noch metwindow.crypto.subtle
. OokKey
die metwindow.crypto.subtle
zijn gemaakt, kunnen niet met deze interface worden gebruikt.
Methoden
challengeKey()
chrome.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
): Promise<ArrayBuffer>
Vergelijkbaar met challengeMachineKey
en challengeUserKey
, maar maakt het mogelijk om het algoritme van een geregistreerde sleutel te specificeren. Daagt een hardwarematige Enterprise Machine Key uit en verzendt de respons als onderdeel van een extern attestatieprotocol. Alleen bruikbaar op ChromeOS en in combinatie met de Verified Access Web API, die zowel challenges uitvoert als responsen verifieert.
Een succesvolle verificatie door de Verified Access Web API is een sterk signaal dat het huidige apparaat een legitiem ChromeOS-apparaat is, dat het huidige apparaat wordt beheerd door het domein dat tijdens de verificatie is opgegeven, dat de huidige aangemelde gebruiker wordt beheerd door het domein dat tijdens de verificatie is opgegeven en dat de huidige apparaatstatus voldoet aan het bedrijfsbeleid voor apparaten. Een beleid kan bijvoorbeeld specificeren dat het apparaat zich niet in de ontwikkelaarsmodus mag bevinden. Elke apparaatidentiteit die door de verificatie wordt gegenereerd, is strikt gekoppeld aan de hardware van het huidige apparaat. Als de scope "user"
is opgegeven, is de identiteit ook strikt gekoppeld aan de huidige aangemelde gebruiker.
Deze functie is zeer beperkt en mislukt als het huidige apparaat niet wordt beheerd, de huidige gebruiker niet wordt beheerd of als deze bewerking niet expliciet is ingeschakeld voor de aanroeper via het apparaatbeleid van het bedrijf. De betwiste sleutel bevindt zich niet in het token "system"
of "user"
en is niet toegankelijk voor andere API's.
Parameters
- opties
Object dat de velden bevat die zijn gedefinieerd in
ChallengeKeyOptions
.
Retourneren
Belofte<ArrayBuffer>
Chroom 131+
challengeMachineKey()
chrome.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
): Promise<ArrayBuffer>
Gebruik in plaats daarvan challengeKey
.
Daagt een hardwarematige Enterprise Machine Key uit en verzendt de respons als onderdeel van een extern attestatieprotocol. Alleen bruikbaar op ChromeOS en in combinatie met de Verified Access Web API, die zowel challenges uitstuurt als responsen verifieert. Een succesvolle verificatie door de Verified Access Web API is een sterk signaal van al het volgende: * Het huidige apparaat is een legitiem ChromeOS-apparaat. * Het huidige apparaat wordt beheerd door het domein dat tijdens de verificatie is opgegeven. * De huidige aangemelde gebruiker wordt beheerd door het domein dat tijdens de verificatie is opgegeven. * De huidige apparaatstatus voldoet aan het bedrijfsbeleid voor apparaten. Een beleid kan bijvoorbeeld specificeren dat het apparaat zich niet in de ontwikkelaarsmodus mag bevinden. * Elke apparaatidentiteit die door de verificatie wordt verzonden, is strikt gekoppeld aan de hardware van het huidige apparaat. Deze functie is zeer beperkt en mislukt als het huidige apparaat niet wordt beheerd, de huidige gebruiker niet wordt beheerd of als deze bewerking niet expliciet is ingeschakeld voor de aanroeper via het bedrijfsbeleid voor apparaten. De Enterprise Machine Key bevindt zich niet in het "system"
-token en is niet toegankelijk voor andere API's.
Parameters
- uitdaging
ArrayBuffer
Een uitdaging afkomstig van de Verified Access Web API.
- registerKey
boolean optioneel
Chroom 59+Indien ingesteld, wordt de huidige Enterprise Machine Key geregistreerd bij het
"system"
-token en wordt de Enterprise Machine Key-rol opgeheven. De sleutel kan vervolgens worden gekoppeld aan een certificaat en worden gebruikt zoals elke andere ondertekeningssleutel. Deze sleutel is 2048-bits RSA. Volgende aanroepen van deze functie genereren vervolgens een nieuwe Enterprise Machine Key.
Retourneren
Belofte<ArrayBuffer>
Chroom 131+
challengeUserKey()
chrome.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
): Promise<ArrayBuffer>
Gebruik in plaats daarvan challengeKey
.
Daagt een hardwarematige Enterprise User Key uit en verzendt de respons als onderdeel van een extern attestatieprotocol. Alleen nuttig op ChromeOS en in combinatie met de Verified Access Web API, die zowel challenges uitstuurt als responsen verifieert. Een succesvolle verificatie door de Verified Access Web API is een sterk signaal van al het volgende: * Het huidige apparaat is een legitiem ChromeOS-apparaat. * Het huidige apparaat wordt beheerd door het domein dat tijdens de verificatie is opgegeven. * De huidige aangemelde gebruiker wordt beheerd door het domein dat tijdens de verificatie is opgegeven. * De huidige apparaatstatus voldoet aan het gebruikersbeleid van het bedrijf. Een beleid kan bijvoorbeeld specificeren dat het apparaat zich niet in de ontwikkelaarsmodus mag bevinden. * De openbare sleutel die door de verificatie wordt verzonden, is strikt gekoppeld aan de hardware van het huidige apparaat en aan de huidige aangemelde gebruiker. Deze functie is zeer beperkt en mislukt als het huidige apparaat niet wordt beheerd, de huidige gebruiker niet wordt beheerd of als deze bewerking niet expliciet is ingeschakeld voor de aanroeper via het gebruikersbeleid van het bedrijf. De Enterprise User Key bevindt zich niet in de "user"
-token en is niet toegankelijk voor andere API's.
Parameters
- uitdaging
ArrayBuffer
Een uitdaging afkomstig van de Verified Access Web API.
- registerKey
Booleaanse
Indien ingesteld, wordt de huidige Enterprise User Key geregistreerd bij het token
"user"
en wordt de Enterprise User Key-rol opgeheven. De sleutel kan vervolgens aan een certificaat worden gekoppeld en net als elke andere ondertekeningssleutel worden gebruikt. Deze sleutel is 2048-bits RSA. Volgende aanroepen van deze functie genereren vervolgens een nieuwe Enterprise User Key.
Retourneren
Belofte<ArrayBuffer>
Chroom 131+
getCertificates()
chrome.enterprise.platformKeys.getCertificates(
tokenId: string,
): Promise<ArrayBuffer[]>
Retourneert een lijst met alle beschikbare clientcertificaten van het opgegeven token. Kan worden gebruikt om te controleren of clientcertificaten die bruikbaar zijn voor een bepaalde authenticatie, bestaan en verlopen.
Parameters
- token-ID
snaar
De id van een token dat door
getTokens
wordt geretourneerd.
Retourneren
Belofte<ArrayBuffer[]>
Chroom 131+
getTokens()
chrome.enterprise.platformKeys.getTokens(): Promise<Token[]>
Retourneert de beschikbare tokens. Tijdens een reguliere gebruikerssessie bevat de lijst altijd het token van de gebruiker met id
"user"
. Als er een systeembrede TPM-token beschikbaar is, bevat de geretourneerde lijst ook het systeembrede token met id
"system"
. Het systeembrede token is hetzelfde voor alle sessies op dit apparaat (apparaat in de zin van bijvoorbeeld een Chromebook).
Retourneren
Belofte< Token []>
Chroom 131+
importCertificate()
chrome.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
): Promise<void>
Importeert certificate
naar het opgegeven token als de gecertificeerde sleutel al in dit token is opgeslagen. Na een succesvolle certificeringsaanvraag dient deze functie te worden gebruikt om het verkregen certificaat op te slaan en beschikbaar te maken voor het besturingssysteem en de browser voor authenticatie.
Parameters
- token-ID
snaar
De id van een token dat door
getTokens
wordt geretourneerd. - certificaat
ArrayBuffer
De DER-codering van een X.509-certificaat.
Retourneren
Belofte<leegte>
Chroom 131+
removeCertificate()
chrome.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
): Promise<void>
Verwijdert certificate
van het opgegeven token, indien aanwezig. Dient te worden gebruikt om verouderde certificaten te verwijderen, zodat ze niet worden meegenomen tijdens de authenticatie en de certificaatkeuze niet verstoren. Dient te worden gebruikt om opslagruimte vrij te maken in de certificaatopslag.
Parameters
- token-ID
snaar
De id van een token dat door
getTokens
wordt geretourneerd. - certificaat
ArrayBuffer
De DER-codering van een X.509-certificaat.
Retourneren
Belofte<leegte>
Chroom 131+