Opis
Do generowania kluczy i instalowania certyfikatów dla tych kluczy używaj interfejsu API chrome.enterprise.platformKeys
. Certyfikaty będą zarządzane przez platformę i można ich używać do uwierzytelniania TLS, dostępu do sieci lub za pomocą innego rozszerzenia za pomocą chrome.platformKeys.
Uprawnienia
enterprise.platformKeys
Dostępność
Pojęcia i zastosowanie
Typowe zastosowanie tego interfejsu API do rejestracji certyfikatu klienta przebiega w następujący sposób:
Uzyskaj wszystkie dostępne tokeny za pomocą
enterprise.platformKeys.getTokens()
.Znajdź token z wartością
id
równą"user"
. Użyj tego tokena w późniejszym czasie.Wygeneruj parę kluczy, korzystając z metody tokena
generateKey()
(zdefiniowanej w SubtleCrypto). Spowoduje to zwrócenie nicku do klucza.Wyeksportuj klucz publiczny, korzystając z metody
exportKey()
Token (zdefiniowanej w SubtleCrypto).Utwórz podpis danych wniosku o certyfikację, korzystając z metody
sign()
Token (zdefiniowanej w SubtleCrypto).Wypełnij wniosek o certyfikat i wyślij go do urzędu certyfikacji.
Po otrzymaniu certyfikatu zaimportuj go za pomocą atrybutu [
enterprise.platformKeys.importCertificate()
`[3]
Oto przykład, który przedstawia główną interakcję interfejsu API z wyjątkiem tworzenia i wysyłania prośby o certyfikację:
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.
Enum
ChallengeKeyOptions
Właściwości
-
wyzwanie
ArrayBuffer
Wyzwanie generowane przez interfejs Verified Access Web API.
-
registerKey
Opcjonalny RegisterKeyOptions
Jeśli ten klucz jest dostępny, rejestruje testowany klucz za pomocą podanego tokena
scope
. Klucz ten można powiązać z certyfikatem i używać jak każdego innego klucza podpisywania. Kolejne wywołania tej funkcji będą następnie powodować wygenerowanie nowego klucza Enterprise w określonymscope
. -
zakres
Który klucz Enterprise należy zakwestionować.
RegisterKeyOptions
Właściwości
-
algorytm
Algorytm, którego ma używać zarejestrowany klucz.
Scope
Określa, czy używany jest klucz użytkownika Enterprise, czy Enterprise Machine Key.
Enum
Token
Właściwości
-
id
string,
Jednoznacznie identyfikuje zasób
Token
.Identyfikatory statyczne to odpowiednio
"user"
i"system"
. Odwołują się one odpowiednio do specyficznych dla użytkownika platformy i do całego systemu tokena sprzętowego. Wszystkie inne tokeny (z innymi identyfikatorami) mogą zostać zwrócone przezenterprise.platformKeys.getTokens
. -
softwareBackedSubtleCrypto
SubtleCrypto
Chrome 97 i nowsze wersjeImplementuje interfejs SubtleCrypto interfejsu WebCrypto. Operacje kryptograficzne, w tym generowanie kluczy, są oparte na oprogramowaniu. Ochrona kluczy, a tym samym implementacja właściwości, których nie można wyodrębnić, odbywa się w oprogramowaniu, dzięki czemu klucze są mniej chronione niż klucze sprzętowe.
Można wygenerować tylko niewyodrębnione klucze RSASSA-PKCS1-V1_5 z
modulusLength
do 2048. Każdego klucza możesz używać do podpisywania danych najwyżej raz.Kluczy wygenerowanych na określonym urządzeniu
Token
nie można używać z żadnym innym tokenem ani zwindow.crypto.subtle
. Również obiektyKey
utworzone za pomocąwindow.crypto.subtle
nie mogą być używane w tym interfejsie. -
subtleCrypto
SubtleCrypto
Implementuje interfejs SubtleCrypto interfejsu WebCrypto. Operacje kryptograficzne, w tym generowanie kluczy, są wspomagane sprzętowo.
Można wygenerować tylko niewyodrębnione klucze RSASSA-PKCS1-V1_5 z
modulusLength
do 2048 oraz ECDSA znamedCurve
P-256. Każdego klucza możesz używać do podpisywania danych najwyżej raz.Kluczy wygenerowanych na określonym urządzeniu
Token
nie można używać z żadnym innym tokenem ani zwindow.crypto.subtle
. Również obiektyKey
utworzone za pomocąwindow.crypto.subtle
nie mogą być używane 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. kwestionuje oparty na sprzętowym kluczu Enterprise Machine Key i wysyła odpowiedź w ramach protokołu poświadczania zdalnego. Ta opcja jest przydatna tylko w systemie operacyjnym Chrome oraz w połączeniu z interfejsem internetowym Verified Access API, który zarówno wyświetla testy, jak i weryfikuje odpowiedzi.
Pomyślna weryfikacja przez interfejs internetowy interfejsu Verified Access API to wyraźny sygnał, że urządzenie jest prawidłowym urządzeniem z Chrome OS, bieżącym urządzeniem zarządza domena określona podczas weryfikacji, bieżącym zalogowanym użytkownikiem jest domena wskazana podczas weryfikacji, a bieżący stan urządzenia jest zgodny z zasadami dotyczącymi urządzeń firmowych. Zasady mogą na przykład określać, że urządzenie nie może być w trybie programisty. Każda tożsamość urządzenia widoczna w ramach weryfikacji jest ściśle powiązana ze sprzętem danego urządzenia. Jeśli określono zakres "user"
, tożsamość jest też ściśle powiązana z obecnym zalogowanym użytkownikiem.
Ta funkcja jest bardzo ograniczona i nie powiedzie się, jeśli bieżące urządzenie nie jest zarządzane, bieżący użytkownik nie jest zarządzany lub ta operacja nie została wyraźnie włączona dla elementu wywołującego przez firmowe zasady dotyczące urządzeń. Testowany klucz 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
funkcja
Parametr
callback
wygląda tak:(response: ArrayBuffer)=>void
-
odpowiedź
ArrayBuffer
Odpowiedź na wyzwanie.
-
challengeMachineKey()
chrome.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
callback: function,
)
Użyj w zamian challengeKey
.
kwestionuje oparty na sprzętowym kluczu Enterprise Machine Key i wysyła odpowiedź w ramach protokołu poświadczania zdalnego. Ta opcja jest przydatna tylko w systemie operacyjnym Chrome oraz w połączeniu z interfejsem internetowym Verified Access API, który zarówno wyświetla testy, jak i weryfikuje odpowiedzi. Pomyślna weryfikacja przez interfejs internetowy Verified Access API to wyraźny sygnał, że: * Posiadane urządzenie to prawidłowe urządzenie z Chrome OS. * Bieżące urządzenie jest zarządzane przez domenę podaną podczas weryfikacji. * Obecnie zalogowany użytkownik jest zarządzany przez domenę podaną podczas weryfikacji. * Obecny stan urządzenia jest zgodny z zasadami dotyczącymi urządzeń w firmie. Zasady mogą na przykład określać, że urządzenie nie może być w trybie programisty. * Wszelka tożsamość urządzenia widoczna w ramach weryfikacji jest ściśle powiązana ze sprzętem danego urządzenia. Ta funkcja jest bardzo ograniczona i nie powiedzie się, jeśli bieżące urządzenie nie jest zarządzane, bieżący użytkownik nie jest zarządzany lub ta operacja nie została wyraźnie włączona dla elementu wywołującego przez firmowe zasady dotyczące urządzeń. Klucz Enterprise Machine Key nie znajduje się w tokenie "system"
i nie jest dostępny dla żadnego innego interfejsu API.
Parametry
-
wyzwanie
ArrayBuffer
Wyzwanie generowane przez interfejs Verified Access Web API.
-
registerKey
wartość logiczna opcjonalna
Chrome w wersji 59 i nowszychJeśli jest ustawiony, bieżący klucz komputera Enterprise jest rejestrowany za pomocą tokena
"system"
i zrzeka się roli klucza komputera przedsiębiorstwa. Klucz ten można powiązać z certyfikatem i używać jak każdego innego klucza podpisywania. Jest to 2048-bitowy klucz RSA. Kolejne wywołania tej funkcji będą powodować wygenerowanie nowego klucza komputera Enterprise. -
wywołanie zwrotne
funkcja
Parametr
callback
wygląda tak:(response: ArrayBuffer)=>void
-
odpowiedź
ArrayBuffer
Odpowiedź na wyzwanie.
-
challengeUserKey()
chrome.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
callback: function,
)
Użyj w zamian challengeKey
.
kwestionuje oparty na sprzętowym kluczu użytkownika Enterprise klucz użytkownika i wysyła odpowiedź w ramach protokołu poświadczania zdalnego. Ta opcja jest przydatna tylko w systemie operacyjnym Chrome oraz w połączeniu z interfejsem internetowym Verified Access API, który zarówno wyświetla testy, jak i weryfikuje odpowiedzi. Pomyślna weryfikacja przez interfejs internetowy Verified Access API to wyraźny sygnał, że: * Posiadane urządzenie to prawidłowe urządzenie z Chrome OS. * Bieżące urządzenie jest zarządzane przez domenę podaną podczas weryfikacji. * Obecnie zalogowany użytkownik jest zarządzany przez domenę podaną podczas weryfikacji. * Obecny stan urządzenia jest zgodny z zasadami dotyczącymi użytkowników firmowych. Zasady mogą na przykład określać, że urządzenie nie może być w trybie programisty. * Klucz publiczny wygenerowany podczas weryfikacji jest ściśle powiązany ze sprzętem obecnego urządzenia i z aktualnie zalogowanym użytkownikiem. Ta funkcja jest bardzo ograniczona i nie powiedzie się, jeśli bieżące urządzenie nie jest zarządzane, bieżący użytkownik nie jest zarządzany lub ta operacja nie została jawnie włączona dla elementu wywołującego za pomocą zasad dotyczących użytkowników firmowych. Klucz użytkownika Enterprise nie znajduje się w tokenie "user"
i nie jest dostępny dla żadnego innego interfejsu API.
Parametry
-
wyzwanie
ArrayBuffer
Wyzwanie generowane przez interfejs Verified Access Web API.
-
registerKey
boolean
Jeśli jest ustawiony, bieżący klucz użytkownika Enterprise jest rejestrowany za pomocą tokena
"user"
i zwalnia rolę klucza Enterprise użytkownika. Klucz ten można powiązać z certyfikatem i używać jak każdego innego klucza podpisywania. Jest to 2048-bitowy klucz RSA. Kolejne wywołania tej funkcji będą powodować wygenerowanie nowego klucza użytkownika Enterprise. -
wywołanie zwrotne
funkcja
Parametr
callback
wygląda tak:(response: ArrayBuffer)=>void
-
odpowiedź
ArrayBuffer
Odpowiedź na wyzwanie.
-
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, czy certyfikaty klienta nadają się do określonego uwierzytelniania i czy istnieją i czy nie wygasają.
Parametry
-
tokenId
string,
Identyfikator tokena zwrócony przez
getTokens
. -
wywołanie zwrotne
funkcja
Parametr
callback
wygląda tak:(certificates: ArrayBuffer[])=>void
-
certyfikaty
TablicaBuffer[]
Lista certyfikatów, każdy w kodowaniu DER certyfikatu X.509.
-
getTokens()
chrome.enterprise.platformKeys.getTokens(
callback: function,
)
Zwraca dostępne tokeny. W zwykłej sesji użytkownika lista zawsze zawiera token użytkownika z id
"user"
. Jeśli dostępny jest token TPM stosowany w całym systemie, zwrócona lista będzie zawierać też token dla całego systemu z id
"system"
. Token dla całego systemu będzie taki sam dla wszystkich sesji na tym urządzeniu (urządzenie w rozumieniu, np. Chromebook).
Parametry
importCertificate()
chrome.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
)
Importuje certificate
do danego tokena, jeśli certyfikowany klucz jest już zapisany w tym tokenie. Po pozytywnym rozpatrzeniu wniosku o certyfikację należy użyć tej funkcji do zapisania uzyskanego certyfikatu oraz udostępnienia go systemowi operacyjnemu i przeglądarce w celu uwierzytelnienia.
Parametry
-
tokenId
string,
Identyfikator tokena zwrócony przez
getTokens
. -
certyfikat
ArrayBuffer
Kodowanie DER certyfikatu X.509.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:()=>void
removeCertificate()
chrome.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
)
Usuwa certificate
z danego tokena, jeśli występuje. Służy do usuwania przestarzałych certyfikatów, aby nie zostały uwzględnione podczas uwierzytelniania i nie zaśmiecały wyboru certyfikatów. Powinno być używane do zwolnienia miejsca w magazynie certyfikatów.
Parametry
-
tokenId
string,
Identyfikator tokena zwrócony przez
getTokens
. -
certyfikat
ArrayBuffer
Kodowanie DER certyfikatu X.509.
-
wywołanie zwrotne
funkcja opcjonalnie
Parametr
callback
wygląda tak:()=>void