Opis
Użyj interfejsu API chrome.enterprise.platformKeys
, aby wygenerować klucze i zainstalować certyfikaty dla tych kluczy. Certyfikatami będzie zarządzać platforma. Można ich używać do uwierzytelniania TLS, dostępu do sieci lub przez inne rozszerzenie za pomocą interfejsu chrome.platformKeys.
Uprawnienia
enterprise.platformKeys
Dostępność
Wykorzystanie
Typowe użycie tego interfejsu API do rejestracji certyfikatu klienta:
Pobierz wszystkie dostępne tokeny za pomocą interfejsu enterprise.platformKeys.getTokens.
Znajdź token z wartością
id
="user"
. Użyj tego tokena później.Wygeneruj parę kluczy za pomocą metody
generateKey
Token (zdefiniowanej w SubtleCrypto). Zwróci on uchwyt do klucza.Wyeksportuj klucz publiczny, używając metody
exportKey
Token (zdefiniowanej w SubtleCrypto).Utwórz podpis danych żądania certyfikacji za pomocą metody
sign
Token (zdefiniowanej w SubtleCrypto).Wypełnij wniosek o certyfikat i wyślij go do urzędu certyfikacji.
Jeśli certyfikat został odebrany, zaimportuj go za pomocą interfejsu enterprise.platformKeys.importCertificate.
Oto przykład, który pokazuje główne interakcje interfejsu API z wyjątkiem tworzenia i wysyłania prośby o certyfikat:
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);
Typy
Algorithm
Typ klucza do wygenerowania.
Typ wyliczeniowy
"RSA"
"ECDSA"
ChallengeKeyOptions
Właściwości
-
wyzwanie
ArrayBuffer
Wyzwanie emitowane przez interfejs Verified Access Web API.
-
registerKey
RegisterKeyOptions opcjonalnie
Jeśli klucz jest dostępny, rejestruje klucz z wyzwaniem za pomocą tokena
scope
. Klucz można następnie powiązać z certyfikatem i używać go jak każdego innego klucza podpisywania. Kolejne wywołania tej funkcji będą generować nowy klucz Enterprise w określonymscope
. -
zakres
Który klucz Enterprise chcesz zakwestionować.
RegisterKeyOptions
Właściwości
-
algorytm
Którego algorytmu powinien używać zarejestrowany klucz.
Scope
Czy użyć klucza użytkownika Enterprise czy klucza maszynowego Enterprise.
Typ wyliczeniowy
"USER"
"MACHINE"
Token
Właściwości
-
id
ciąg znaków
Unikalnie identyfikuje tę
Token
.Identyfikatory statyczne to
"user"
i"system"
, które odnoszą się odpowiednio do tokena sprzętowego na poziomie użytkownika i domeny systemowej.enterprise.platformKeys.getTokens
może zwrócić dowolne inne tokeny (z innymi identyfikatorami). -
softwareBackedSubtleCrypto
SubtleCrypto
Chrome 97 lub nowszyImplementuje interfejs SubtleCrypto biblioteki WebCrypto. Operacje kryptograficzne, w tym generowanie kluczy, są obsługiwane przez oprogramowanie. Ochrona kluczy, a zarazem implementacja właściwości niewyodalnej, jest realizowana w oprogramowaniu, więc klucze są mniej chronione niż klucze obsługiwane sprzętowo.
Można generować tylko niewyodwracalne klucze RSASSA-PKCS1-V1_5 o
modulusLength
do 2048. Każdego klucza można użyć do podpisywania danych najwyżej raz.Kluczy wygenerowanych na określonym
Token
nie można używać z żadnymi innymi tokenami ani zwindow.crypto.subtle
. Podobnie obiektówKey
utworzonych za pomocąwindow.crypto.subtle
nie można używać w tym interfejsie. -
subtleCrypto
SubtleCrypto
Implementuje interfejs SubtleCrypto biblioteki WebCrypto. Operacje kryptograficzne, w tym generowanie kluczy, są obsługiwane przez sprzęt.
Można generować tylko klucze RSASSA-PKCS1-V1_5 z
modulusLength
do 2048 i ECDSA znamedCurve
P-256, które nie mogą być wyodrębniane. Każdego klucza można użyć do podpisywania danych najwyżej raz.Kluczy wygenerowanych na określonym
Token
nie można używać z żadnymi innymi tokenami ani zwindow.crypto.subtle
. Podobnie obiektówKey
utworzonych za pomocąwindow.crypto.subtle
nie można używać w tym interfejsie.
Metody
challengeKey()
chrome.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
callback?: function,
)
Podobnie jak challengeMachineKey
i challengeUserKey
, ale umożliwia określenie algorytmu zarejestrowanego klucza. Wyzwanie klucza maszynowego firmy obsługiwanego sprzętowo i emitowanie odpowiedzi w ramach protokołu zdalnego uwierzytelniania. Jest przydatna tylko w ChromeOS i w połączeniu z interfejsem Verified Access Web API, który wysyła wyzwania i sprawdza odpowiedzi.
Pomyślna weryfikacja przez interfejs Verified Access Web API jest mocnym sygnałem, że bieżące urządzenie jest prawidłowym urządzeniem z ChromeOS, jest zarządzane przez domenę określoną podczas weryfikacji, a bieżący zalogowany użytkownik jest zarządzany przez domenę określoną podczas weryfikacji i że stan bieżącego urządzenia jest zgodny z zasadami dotyczącymi urządzeń firmowych. Na przykład zasada może określać, że urządzenie nie może być w trybie programisty. Tożsamość urządzenia emitowana przez weryfikację jest ściśle powiązana ze sprzętem bieżącego urządzenia. Jeśli jest określony zakres "user"
, tożsamość jest też ściśle powiązana z aktualnie zalogowanym użytkownikiem.
Ta funkcja jest bardzo ograniczona i nie zadziała, jeśli bieżące urządzenie nie jest zarządzane, bieżący użytkownik nie jest zarządzany lub jeśli ta operacja nie została wyraźnie włączona dla wywołującego przez zasady urządzenia firmowego. Klucz, którego dotyczy zgłoszenie, nie znajduje się w tokenie "system"
ani "user"
i nie jest dostępny dla żadnego innego interfejsu API.
Parametry
-
Opcje
Obiekt zawierający pola zdefiniowane w
ChallengeKeyOptions
. -
wywołanie zwrotne
function opcjonalny
Parametr
callback
ma postać:(response: ArrayBuffer) => void
-
odpowiedź
ArrayBuffer
Odpowiedź na wyzwanie.
-
Zwroty
-
Obietkwarzeczenie<ArrayBuffer>
Chrome 131 lub nowszyObietnice są obsługiwane tylko w przypadku pliku manifestu w wersji 3 lub nowszej, na innych platformach należy używać wywołań zwrotnych.
challengeMachineKey()
chrome.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
callback?: function,
)
Zamiast tego użyj kolumny challengeKey
.
Wyzwanie klucza maszynowego firmy obsługiwanego sprzętowo i emitowanie odpowiedzi w ramach protokołu zdalnego uwierzytelniania. Jest przydatna tylko w ChromeOS i w połączeniu z interfejsem Verified Access Web API, który wysyła wyzwania i sprawdza odpowiedzi. Pomyślna weryfikacja przez interfejs Verified Access Web API jest mocnym sygnałem o tym, że: * bieżące urządzenie jest prawidłowym urządzeniem z ChromeOS. * Bieżącym urządzeniem zarządza domena określona podczas weryfikacji. * Obecnie zalogowany użytkownik jest zarządzany przez domenę określoną podczas weryfikacji. * Aktualny stan urządzenia jest zgodny z zasadami dotyczącymi urządzeń firmowych. Na przykład zasada może określać, że urządzenie nie może być w trybie programisty. * Tożsamość urządzenia emitowana przez weryfikację jest ściśle powiązana ze sprzętem bieżącego urządzenia. Ta funkcja jest bardzo ograniczona i nie zadziała, jeśli bieżące urządzenie nie jest zarządzane, bieżący użytkownik nie jest zarządzany lub jeśli ta operacja nie została wyraźnie włączona dla wywołującego przez zasady urządzenia firmowego. Klucz maszynowy dla firm nie znajduje się w tokenie "system"
i nie jest dostępny dla żadnego innego interfejsu API.
Parametry
-
wyzwanie
ArrayBuffer
Wyzwanie emitowane przez interfejs Verified Access Web API.
-
registerKey
logiczna opcjonalna
Chrome 59 lub nowszyJeśli to ustawienie jest włączone, bieżący klucz maszynowy dla przedsiębiorstwa jest zarejestrowany za pomocą tokena
"system"
i zrzeka na rolę klucza maszynowego dla przedsiębiorstwa. Klucz można następnie powiązać z certyfikatem i używać go jak każdego innego klucza podpisywania. Ten klucz jest kluczem RSA o długości 2048 bitów. Kolejne wywołania tej funkcji będą generować nowy klucz maszynowy Enterprise. -
wywołanie zwrotne
function opcjonalny
Parametr
callback
ma postać:(response: ArrayBuffer) => void
-
odpowiedź
ArrayBuffer
Odpowiedź na wyzwanie.
-
Zwroty
-
Obietkwarzeczenie<ArrayBuffer>
Chrome 131 lub nowszyObietnice są obsługiwane tylko w przypadku pliku manifestu w wersji 3 lub nowszej, na innych platformach należy używać wywołań zwrotnych.
challengeUserKey()
chrome.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
callback?: function,
)
Zamiast tego użyj kolumny challengeKey
.
Wyzwanie klucza użytkownika Enterprise obsługiwanego przez sprzęt i wysyłanie odpowiedzi w ramach protokołu weryfikacji zdalnej. Jest przydatna tylko w ChromeOS i w połączeniu z interfejsem Verified Access Web API, który wysyła wyzwania i sprawdza odpowiedzi. Pomyślna weryfikacja przez interfejs Verified Access Web API jest mocnym sygnałem o tym, że: * bieżące urządzenie jest prawidłowym urządzeniem z ChromeOS. * Bieżącym urządzeniem zarządza domena określona podczas weryfikacji. * Obecnie zalogowany użytkownik jest zarządzany przez domenę określoną podczas weryfikacji. * Obecny stan urządzenia jest zgodny z zasadami dla użytkowników firmowych. Na przykład zasada może określać, że urządzenie nie może być w trybie programisty. * Klucz publiczny wygenerowany przez weryfikację jest ściśle powiązany ze sprzętem bieżącego urządzenia i bieżącym zalogowanym użytkownikiem. Ta funkcja jest bardzo ograniczona i nie zadziała, jeśli bieżące urządzenie nie jest zarządzane, bieżący użytkownik nie jest zarządzany lub jeśli ta operacja nie została wyraźnie włączona dla wywołującego przez zasady użytkownika firmy. Klucz użytkownika Enterprise nie znajduje się w tokenie "user"
i nie jest dostępny dla żadnego innego interfejsu API.
Parametry
-
wyzwanie
ArrayBuffer
Wyzwanie emitowane przez interfejs Verified Access Web API.
-
registerKey
wartość logiczna
Jeśli jest ustawiony, bieżący klucz użytkownika firmowego jest zarejestrowany za pomocą tokena
"user"
i zrzeka roli klucza użytkownika firmowego. Klucz można następnie powiązać z certyfikatem i używać go jak każdego innego klucza podpisywania. Ten klucz jest kluczem RSA o długości 2048 bitów. Kolejne wywołania tej funkcji będą generować nowy klucz użytkownika Enterprise. -
wywołanie zwrotne
function opcjonalny
Parametr
callback
ma postać:(response: ArrayBuffer) => void
-
odpowiedź
ArrayBuffer
Odpowiedź na wyzwanie.
-
Zwroty
-
Obietkwarzeczenie<ArrayBuffer>
Chrome 131 lub nowszyObietnice są obsługiwane tylko w przypadku pliku manifestu w wersji 3 lub nowszej, na innych platformach należy używać wywołań zwrotnych.
getCertificates()
chrome.enterprise.platformKeys.getCertificates(
tokenId: string,
callback?: function,
)
Zwraca listę wszystkich certyfikatów klienta dostępnych w danym tokenie. Może służyć do sprawdzania istnienia i terminu ważności certyfikatów klienta, które można wykorzystać do określonego uwierzytelniania.
Parametry
-
tokenId
ciąg znaków
Identyfikator tokena zwróconego przez
getTokens
. -
wywołanie zwrotne
function opcjonalny
Parametr
callback
ma postać:(certificates: ArrayBuffer[]) => void
-
certyfikaty
ArrayBuffer[]
Lista certyfikatów, z których każdy jest certyfikatem X.509 zakodowanym w formacie DER.
-
Zwroty
-
Promise<ArrayBuffer[]>
Chrome 131 lub nowszyObietnice są obsługiwane tylko w przypadku pliku manifestu w wersji 3 lub nowszej, na innych platformach należy używać wywołań zwrotnych.
getTokens()
chrome.enterprise.platformKeys.getTokens(
callback?: function,
)
Zwraca dostępne tokeny. W sesji zwykłego użytkownika lista zawsze będzie zawierać token użytkownika z id
"user"
. Jeśli dostępny jest token TPM dla całego systemu, zwrócona lista będzie zawierać również token dla całego systemu z wartością id
"system"
. Token systemowy będzie taki sam dla wszystkich sesji na tym urządzeniu (urządzenie w rozumieniu np. Chromebooka).
Parametry
Zwroty
-
Obietnica<Token[]>
Chrome 131 lub nowszyObietnice są obsługiwane tylko w przypadku pliku manifestu w wersji 3 lub nowszej, na innych platformach należy używać wywołań zwrotnych.
importCertificate()
chrome.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
)
Zaimportuj certificate
do danego tokena, jeśli certyfikowany klucz jest już w nim przechowywany. Po pomyślnym przesłaniu żądania certyfikacji należy użyć tej funkcji, aby przechowywać uzyskany certyfikat i udostępniać go systemowi operacyjnemu oraz przeglądarce na potrzeby uwierzytelniania.
Parametry
-
tokenId
ciąg znaków
Identyfikator tokena zwróconego przez
getTokens
. -
certyfikat
ArrayBuffer
Kodowanie DER certyfikatu X.509.
-
wywołanie zwrotne
function opcjonalny
Parametr
callback
ma postać:() => void
Zwroty
-
Obietnica<void>
Chrome 131 lub nowszyObietnice są obsługiwane tylko w przypadku pliku manifestu w wersji 3 lub nowszej, na innych platformach należy używać wywołań zwrotnych.
removeCertificate()
chrome.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
)
Usuwa certificate
z danego tokena, jeśli jest obecny. Należy go używać do usuwania nieaktualnych certyfikatów, aby nie były one brane pod uwagę podczas uwierzytelniania i nie zaśmiecały listy certyfikatów. Należy go używać, aby zwolnić miejsce w sklepie z certyfikatami.
Parametry
-
tokenId
ciąg znaków
Identyfikator tokena zwróconego przez
getTokens
. -
certyfikat
ArrayBuffer
Kodowanie DER certyfikatu X.509.
-
wywołanie zwrotne
function opcjonalny
Parametr
callback
ma postać:() => void
Zwroty
-
Obietnica<void>
Chrome 131 lub nowszyObietnice są obsługiwane tylko w przypadku pliku manifestu w wersji 3 lub nowszej, na innych platformach należy używać wywołań zwrotnych.