browser.enterprise.platformKeys

Opis

Użyj interfejsu API chrome.enterprise.platformKeys, aby wygenerować klucze i zainstalować certyfikaty dla tych kluczy. Certyfikaty będą zarządzane przez platformę i mogą być używane do uwierzytelniania TLS, dostępu do sieci lub przez inne rozszerzenie za pomocą chrome.platformKeys.

Uprawnienia

enterprise.platformKeys

Dostępność

Tylko w systemie ChromeOS Wymaga zasady

Pojęcia i użycie

Typowe użycie tego interfejsu API do rejestrowania certyfikatu klienta obejmuje te kroki:

  • Pobierz wszystkie dostępne tokeny za pomocą enterprise.platformKeys.getTokens().

  • Znajdź token, którego id jest równe "user". Użyj tego tokena.

  • Wygeneruj parę kluczy za pomocą metody generateKey() Token (zdefiniowanej w SubtleCrypto). Spowoduje to zwrócenie uchwytu do klucza.

  • Wyeksportuj klucz publiczny za pomocą 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 otrzymasz certyfikat, zaimportuj go za pomocą enterprise.platformKeys.importCertificate()`[3]

Oto przykład, który pokazuje główną interakcję z interfejsem API, z wyjątkiem tworzenia i wysyłania żądania certyfikacji:

function getUserToken(callback) {
  browser.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) {
  browser.enterprise.platformKeys.importCertificate(userToken.id, certificate);
}

getUserToken(generateAndSign);

Typy

Algorithm

Chrome 110 lub nowsza browser.* od Chrome 148

Typ klucza do wygenerowania.

Typ wyliczeniowy

"RSA"

"ECDSA"

ChallengeKeyOptions

Chrome 110 lub nowsza browser.* od Chrome 148

Właściwości

  • wyzwanie

    ArrayBuffer

    Zadanie wygenerowane przez interfejs Verified Access Web API.

  • registerKey

    RegisterKeyOptions opcjonalny

    Jeśli jest obecny, rejestruje klucz, którego dotyczy wyzwanie, za pomocą tokena określonego elementu 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ślonym scope.

  • zakres

    Który klucz Enterprise ma zostać sprawdzony.

RegisterKeyOptions

Chrome 110 lub nowsza browser.* od Chrome 148

Właściwości

  • algorytm

    Algorytm, którego powinien używać zarejestrowany klucz.

Scope

Chrome 110 lub nowsza browser.* od Chrome 148

Określa, czy używać klucza użytkownika firmowego czy klucza komputera Enterprise.

Typ wyliczeniowy

"USER"

"MACHINE"

Token

Właściwości

  • id

    tekst

    Jednoznacznie identyfikuje ten element Token.

    Identyfikatory statyczne to "user" i "system", które odnoszą się odpowiednio do tokena sprzętowego platformy dla konkretnego użytkownika i tokena sprzętowego dla całego systemu. Inne tokeny (z innymi identyfikatorami) mogą być zwracane przez enterprise.platformKeys.getTokens.

  • softwareBackedSubtleCrypto

    SubtleCrypto

    Chrome 97 lub nowsza wersja browser.* od Chrome 148

    Implementuje interfejs SubtleCrypto WebCrypto. Operacje kryptograficzne, w tym generowanie kluczy, są wykonywane na poziomie oprogramowania. Ochrona kluczy, a tym samym implementacja właściwości uniemożliwiającej wyodrębnienie, jest realizowana w oprogramowaniu, więc klucze są mniej chronione niż klucze wspierane sprzętowo.

    Można generować tylko klucze, których nie można wyodrębnić. Jedynym obsługiwanym typem klucza jest RSASSA-PKCS1-V1_5 z modulusLength do 2048. Każdego klucza można użyć do podpisania danych tylko raz, chyba że rozszerzenie jest na liście dozwolonych w ramach zasady KeyPermissions. W takim przypadku klucza można używać bez ograniczeń.

    Kluczy wygenerowanych na określonym urządzeniu Token nie można używać z innymi urządzeniami Token ani z window.crypto.subtle. Podobnie obiektów Key utworzonych za pomocą window.crypto.subtle nie można używać z tym interfejsem.

  • subtleCrypto

    SubtleCrypto

    Implementuje interfejs SubtleCrypto WebCrypto. Operacje kryptograficzne, w tym generowanie kluczy, są obsługiwane sprzętowo.

    Można generować tylko klucze, których nie można wyodrębnić. Obsługiwane typy kluczy to RSASSA-PKCS1-V1_5 z modulusLength do 2048 i ECDSA z namedCurve P-256. Każdego klucza można użyć do podpisania danych tylko raz, chyba że rozszerzenie jest na liście dozwolonych w zasadzie KeyPermissions. W takim przypadku klucza można używać bez ograniczeń.

    Kluczy wygenerowanych na określonym urządzeniu Token nie można używać z innymi urządzeniami Token ani z window.crypto.subtle. Podobnie obiektów Key utworzonych za pomocą window.crypto.subtle nie można używać z tym interfejsem.

Metody

challengeKey()

Chrome 110 lub nowsza browser.* od Chrome 148
browser.enterprise.platformKeys.challengeKey(
  options: ChallengeKeyOptions,
)
: Promise<ArrayBuffer>

Podobnie jak challengeMachineKey i challengeUserKey, ale umożliwia określenie algorytmu zarejestrowanego klucza. Weryfikuje klucz maszyny przedsiębiorstwa wspierany sprzętowo i wysyła odpowiedź w ramach protokołu poświadczenia zdalnego. Ta zasada jest przydatna tylko w systemie ChromeOS i w połączeniu z interfejsem Verified Access Web API, który wysyła wyzwania i weryfikuje odpowiedzi.

Pomyślna weryfikacja przez interfejs Verified Access Web API jest silnym sygnałem, że bieżące urządzenie jest prawidłowym urządzeniem z ChromeOS, jest zarządzane przez domenę określoną podczas weryfikacji, bieżący zalogowany użytkownik jest zarządzany przez domenę określoną podczas weryfikacji, a bieżący stan urządzenia jest zgodny z zasadami dotyczącymi urządzeń firmowych. Zasada może na przykład określać, że urządzenie nie może być w trybie programisty. Każdy identyfikator urządzenia wygenerowany podczas weryfikacji jest ściśle powiązany ze sprzętem bieżącego urządzenia. Jeśli określono zakres "user", tożsamość jest też ściśle powiązana z obecnie zalogowanym użytkownikiem.

Ta funkcja jest bardzo ograniczona i nie będzie dział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 elementu wywołującego przez zasady dotyczące urządzeń firmowych. Klucz, którego dotyczy wyzwanie, nie znajduje się w tokenie "system" ani "user" i nie jest dostępny dla żadnego innego interfejsu API.

Parametry

Zwroty

  • Promise<ArrayBuffer>

    Chrome 131 lub nowsza browser.* od Chrome 148

    Zwraca obiekt Promise, który jest rozwiązywany za pomocą odpowiedzi na test zabezpieczający.

challengeMachineKey()

Chrome 50 lub nowsza browser.* od Chrome 148 Wycofane od Chrome 110
browser.enterprise.platformKeys.challengeMachineKey(
  challenge: ArrayBuffer,
  registerKey?: boolean,
)
: Promise<ArrayBuffer>

Zamiast tego użyj challengeKey.

Weryfikuje klucz maszyny przedsiębiorstwa wspierany sprzętowo i wysyła odpowiedź w ramach protokołu poświadczenia zdalnego. Ta zasada jest przydatna tylko w systemie ChromeOS i w połączeniu z interfejsem Verified Access Web API, który wysyła wyzwania i weryfikuje odpowiedzi. Pomyślna weryfikacja przez interfejs Verified Access Web API jest silnym sygnałem, że: * bieżące urządzenie jest prawidłowym urządzeniem z ChromeOS, * Bieżące urządzenie jest zarządzane przez domenę określoną podczas weryfikacji. * Obecnie zalogowany użytkownik jest zarządzany przez domenę określoną podczas weryfikacji. * Obecny stan urządzenia jest zgodny z zasadami dotyczącymi urządzeń w firmie. Zasada może na przykład określać, że urządzenie nie może być w trybie programisty. * Każdy identyfikator urządzenia wygenerowany podczas weryfikacji jest ściśle powiązany ze sprzętem bieżącego urządzenia. Ta funkcja jest bardzo ograniczona i nie będzie dział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 elementu wywołującego przez zasady dotyczące urządzeń firmowych. Klucz komputera firmowego nie znajduje się w tokenie "system" i nie jest dostępny dla żadnego innego interfejsu API.

Parametry

  • wyzwanie

    ArrayBuffer

    Zadanie wygenerowane przez interfejs Verified Access Web API.

  • registerKey

    boolean opcjonalne

    Chrome 59 lub nowsza browser.* od Chrome 148

    Jeśli ta zasada jest skonfigurowana, bieżący klucz komputera firmowego jest rejestrowany za pomocą tokena "system" i rezygnuje z roli klucza komputera firmowego. Klucz można następnie powiązać z certyfikatem i używać go jak każdego innego klucza podpisywania. Ten klucz to 2048-bitowy klucz RSA. Kolejne wywołania tej funkcji spowodują wygenerowanie nowego klucza maszyny Enterprise.

Zwroty

  • Promise<ArrayBuffer>

    Chrome 131 lub nowsza browser.* od Chrome 148

    Zwraca obiekt Promise, który jest rozwiązywany za pomocą odpowiedzi na test zabezpieczający.

challengeUserKey()

Chrome 50 lub nowsza browser.* od Chrome 148 Wycofane od Chrome 110
browser.enterprise.platformKeys.challengeUserKey(
  challenge: ArrayBuffer,
  registerKey: boolean,
)
: Promise<ArrayBuffer>

Zamiast tego użyj challengeKey.

Weryfikuje klucz użytkownika firmowego wspierany sprzętowo i emituje odpowiedź w ramach protokołu poświadczenia zdalnego. Ta zasada jest przydatna tylko w systemie ChromeOS i w połączeniu z interfejsem Verified Access Web API, który wysyła wyzwania i weryfikuje odpowiedzi. Pomyślna weryfikacja przez interfejs Verified Access Web API jest silnym sygnałem, że: * bieżące urządzenie jest prawidłowym urządzeniem z ChromeOS, * Bieżące urządzenie jest zarządzane przez domenę określoną podczas weryfikacji. * Obecnie zalogowany użytkownik jest zarządzany przez domenę określoną podczas weryfikacji. * Bieżący stan urządzenia jest zgodny z zasadami dotyczącymi użytkowników firmowych. Zasada może 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 bieżącego urządzenia i obecnie zalogowanym użytkownikiem. Ta funkcja jest bardzo ograniczona i nie będzie dział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 elementu wywołującego przez zasady dotyczące użytkowników firmowych. Klucz użytkownika firmowego nie znajduje się w tokenie "user" i nie jest dostępny dla żadnego innego interfejsu API.

Parametry

  • wyzwanie

    ArrayBuffer

    Zadanie wygenerowane przez interfejs Verified Access Web API.

  • registerKey

    wartość logiczna

    Jeśli ta zasada jest skonfigurowana, bieżący klucz użytkownika firmowego jest rejestrowany za pomocą tokena "user" i traci rolę 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 to 2048-bitowy klucz RSA. Kolejne wywołania tej funkcji będą generować nowy klucz użytkownika firmowego.

Zwroty

  • Promise<ArrayBuffer>

    Chrome 131 lub nowsza browser.* od Chrome 148

    Zwraca obiekt Promise, który jest rozwiązywany za pomocą odpowiedzi na test zabezpieczający.

getCertificates()

browser.enterprise.platformKeys.getCertificates(
  tokenId: string,
)
: Promise<ArrayBuffer[]>

Zwraca listę wszystkich certyfikatów klienta dostępnych z danego tokena. Można go używać do sprawdzania istnienia i wygaśnięcia certyfikatów klienta, które mogą być używane do określonego uwierzytelniania.

Parametry

  • tokenId

    tekst

    Identyfikator tokena zwrócony przez getTokens.

Zwroty

  • Promise<ArrayBuffer[]>

    Chrome 131 lub nowsza browser.* od Chrome 148

    Zwraca obiekt Promise, który jest rozwiązywany za pomocą listy dostępnych certyfikatów.

getTokens()

browser.enterprise.platformKeys.getTokens(): Promise<Token[]>

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 id "system". Token systemowy będzie taki sam dla wszystkich sesji na tym urządzeniu (urządzeniu w sensie np. Chromebooka).

Zwroty

  • Promise<Token[]>

    Chrome 131 lub nowsza browser.* od Chrome 148

    Wywoływane przez getTokens z listą dostępnych tokenów.

importCertificate()

browser.enterprise.platformKeys.importCertificate(
  tokenId: string,
  certificate: ArrayBuffer,
)
: Promise<void>

Importuje certificate do podanego tokena, jeśli certyfikowany klucz jest już w nim przechowywany. Po pomyślnym przesłaniu prośby o certyfikat ta funkcja powinna zostać użyta do zapisania uzyskanego certyfikatu i udostępnienia go systemowi operacyjnemu i przeglądarce na potrzeby uwierzytelniania.

Parametry

  • tokenId

    tekst

    Identyfikator tokena zwrócony przez getTokens.

  • certyfikat

    ArrayBuffer

    Kodowanie DER certyfikatu X.509.

Zwroty

  • thought Promise<void>

    Chrome 131 lub nowsza browser.* od Chrome 148

    Zwraca obietnicę, która jest spełniona po zakończeniu tej operacji.

removeCertificate()

browser.enterprise.platformKeys.removeCertificate(
  tokenId: string,
  certificate: ArrayBuffer,
)
: Promise<void>

Usuwa certificate z podanego tokena, jeśli jest obecny. Należy jej używać do usuwania nieaktualnych certyfikatów, aby nie były one uwzględniane podczas uwierzytelniania i nie utrudniały wyboru certyfikatu. Należy go używać do zwalniania miejsca w magazynie certyfikatów.

Parametry

  • tokenId

    tekst

    Identyfikator tokena zwrócony przez getTokens.

  • certyfikat

    ArrayBuffer

    Kodowanie DER certyfikatu X.509.

Zwroty

  • thought Promise<void>

    Chrome 131 lub nowsza browser.* od Chrome 148

    Zwraca obietnicę, która jest spełniona po zakończeniu tej operacji.