chrome.enterprise.platformKeys

Açıklama

Anahtar oluşturmak ve bu anahtarlara sertifika yüklemek için chrome.enterprise.platformKeys API'yi kullanın. Sertifikalar platform tarafından yönetilir ve TLS kimlik doğrulaması, ağ erişimi için veya diğer uzantılar tarafından chrome.platformKeys aracılığıyla kullanılabilir.

İzinler

enterprise.platformKeys

Kullanılabilirlik

Yalnızca ChromeOS Politika gerektirir

Kavramlar ve kullanım

İstemci sertifikası kaydettirmek için bu API'nin tipik kullanımı aşağıdaki adımları içerir:

  • enterprise.platformKeys.getTokens() kullanarak mevcut tüm jetonları alın.

  • id değerinin "user" olduğu jetonu bulun. Bu jetonu daha sonra kullanın.

  • generateKey() jeton yöntemini (SubtleCrypto'da tanımlanır) kullanarak bir anahtar çifti oluşturun. Bu işlem, anahtarın tutamacını döndürür.

  • exportKey() jeton yöntemini (SubtleCrypto'da tanımlanmıştır) kullanarak ortak anahtarı dışa aktarın.

  • sign() jeton yöntemini (SubtleCrypto'da tanımlanmıştır) kullanarak sertifika isteği verilerinin imzasını oluşturun.

  • Sertifika isteğini doldurup sertifika yetkilisine gönderin.

  • Alınan sertifikaları [enterprise.platformKeys.importCertificate()`[3]

Sertifika isteği oluşturma ve gönderme hariç önemli API etkileşimini gösteren bir örnek aşağıda verilmiştir:

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);

Türler

Algorithm

Chrome 110 ve üzeri sürümler

Oluşturulacak anahtar türü.

Enum

"RSA"

"ECDSA"

ChallengeKeyOptions

Chrome 110 ve üzeri sürümler

Özellikler

  • meydan okuma

    ArrayBuffer

    Verified Access Web API tarafından gönderilen bir istem.

  • registerKey

    RegisterKeyOptions isteğe bağlı

    Varsa itiraz edilen anahtarı belirtilen scope jetonuyla kaydeder. Ardından anahtar bir sertifikayla ilişkilendirilebilir ve diğer imzalama anahtarları gibi kullanılabilir. Bu işleve yapılan sonraki çağrılar, belirtilen scope içinde yeni bir Enterprise anahtarı oluşturur.

  • kapsam

    Hangi kuruluş anahtarının sorgulanması gerektiği.

RegisterKeyOptions

Chrome 110 ve üzeri sürümler

Özellikler

  • algoritma

    Kayıtlı anahtarın kullanacağı algoritma.

Scope

Chrome 110 ve üzeri sürümler

Enterprise kullanıcı anahtarının mı yoksa Enterprise makine anahtarının mı kullanılacağı.

Enum

"USER"

"MACHINE"

Token

Özellikler

  • id

    dize

    Bu Token'yi benzersiz şekilde tanımlar.

    Statik kimlikler "user" ve "system"'dir. Bunlar sırasıyla platformun kullanıcıya özel ve sistem genelindeki donanım jetonunu ifade eder. Diğer tanımlayıcılar içeren diğer jetonlar enterprise.platformKeys.getTokens tarafından döndürülebilir.

  • softwareBackedSubtleCrypto

    SubtleCrypto

    Chrome 97 ve sonraki sürümler

    WebCrypto'nun SubtleCrypto arayüzünü uygular. Anahtar oluşturma dahil olmak üzere şifreleme işlemleri yazılım tarafından desteklenir. Anahtarlar yazılım tarafından korunduğundan ve ayıklanamayan özellik bu şekilde uygulandığından anahtarlar donanım destekli anahtarlardan daha az korunur.

    Yalnızca ayıklanamayan anahtarlar oluşturulabilir. Desteklenen anahtar türleri, 2048'e kadar modulusLength içeren RSASSA-PKCS1-V1_5 ve RSA-OAEP'dir. Her RSASSA-PKCS1-V1_5 anahtarı, uzantı KeyPermissions politikası aracılığıyla izin verilenler listesine eklenmediği sürece verileri imzalamak için en fazla bir kez kullanılabilir. Bu durumda anahtar süresiz olarak kullanılabilir. RSA-OAEP anahtarları, aynı politikadaki izin verilenler listesinde yer alan uzantılar tarafından diğer anahtarların sarmalanmasını kaldırmak için kullanılabilir.

    Belirli bir Token üzerinde oluşturulan anahtarlar başka jetonlarla veya window.crypto.subtle ile kullanılamaz. Benzer şekilde, window.crypto.subtle ile oluşturulan Key nesneleri bu arayüzde kullanılamaz.

  • subtleCrypto

    SubtleCrypto

    WebCrypto'nun SubtleCrypto arayüzünü uygular. Anahtar oluşturma dahil olmak üzere şifreleme işlemleri donanım desteklidir.

    Yalnızca ayıklanamayan anahtarlar oluşturulabilir. Desteklenen anahtar türleri, 2048'e kadar modulusLength ile RSASSA-PKCS1-V1_5 ve RSA-OAEP ve namedCurve P-256 ile ECDSA'dır. Her RSASSA-PKCS1-V1_5 ve ECDSA anahtarı, uzantı KeyPermissions politikası aracılığıyla izin verilenler listesine eklenmediği sürece verileri en fazla bir kez imzalamak için kullanılabilir. Bu durumda anahtar süresiz olarak kullanılabilir. RSA-OAEP anahtarları, aynı politikadaki izin verilenler listesinde yer alan uzantılar tarafından diğer anahtarların sarmalanmasını kaldırmak için kullanılabilir.

    Belirli bir Token üzerinde oluşturulan anahtarlar başka jetonlarla veya window.crypto.subtle ile kullanılamaz. Benzer şekilde, window.crypto.subtle ile oluşturulan Key nesneleri bu arayüzde kullanılamaz.

Yöntemler

challengeKey()

Promise Chrome 110 ve üzeri sürümler
chrome.enterprise.platformKeys.challengeKey(
  options: ChallengeKeyOptions,
  callback?: function,
)

challengeMachineKey ve challengeUserKey'e benzer ancak kayıtlı bir anahtarın algoritmasını belirtmenize olanak tanır. Donanım destekli bir Enterprise makine anahtarına istek gönderir ve yanıtı uzaktan onay protokolü kapsamında yayınlar. Yalnızca ChromeOS'te ve hem istemler gönderen hem de yanıtları doğrulayan Verified Access Web API ile birlikte kullanışlıdır.

Verified Access Web API'nin başarılı bir şekilde doğrulaması, mevcut cihazın meşru bir ChromeOS cihazı, mevcut cihazın doğrulama sırasında belirtilen alan tarafından yönetildiği, oturum açmış mevcut kullanıcının doğrulama sırasında belirtilen alan tarafından yönetildiği ve mevcut cihaz durumunun kurumsal cihaz politikasına uygun olduğu konusunda güçlü bir sinyaldir. Örneğin, bir politikada cihazın geliştirici modunda olmaması gerektiği belirtilebilir. Doğrulama işlemiyle yayınlanan tüm cihaz kimlikleri, mevcut cihazın donanımına sıkı sıkıya bağlıdır. "user" Kapsamı belirtilirse kimlik, oturum açmış durumdaki mevcut kullanıcıya da sıkı bir şekilde bağlanır.

Bu işlev oldukça kısıtlıdır ve mevcut cihaz yönetilmiyorsa, mevcut kullanıcı yönetilmiyorsa veya bu işlem kurumsal cihaz politikası tarafından arayan için açıkça etkinleştirilmediyse başarısız olur. İtiraz edilen anahtar, "system" veya "user" jetonunda bulunmaz ve başka hiçbir API tarafından erişilemez.

Parametreler

  • seçenekler

    ChallengeKeyOptions içinde tanımlanan alanları içeren nesne.

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (response: ArrayBuffer) => void

    • gönderin

      ArrayBuffer

      İstem yanıtı.

İadeler

  • Promise<ArrayBuffer>

    Chrome 131 ve sonraki sürümler

    Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

challengeMachineKey()

Promise Chrome 50 ve sonraki sürümler Chrome 110'dan beri kullanımdan kaldırıldı
chrome.enterprise.platformKeys.challengeMachineKey(
  challenge: ArrayBuffer,
  registerKey?: boolean,
  callback?: function,
)

Bunun yerine challengeKey kullanın.

Donanım destekli bir Enterprise makine anahtarına istek gönderir ve yanıtı uzaktan onay protokolü kapsamında yayınlar. Yalnızca ChromeOS'te ve hem istemler gönderen hem de yanıtları doğrulayan Verified Access Web API ile birlikte kullanışlıdır. Doğrulanmış Erişim Web API'si tarafından yapılan başarılı bir doğrulama, aşağıdakilerin tümünün güçlü bir göstergesidir: * Mevcut cihaz, meşru bir ChromeOS cihazıdır. * Mevcut cihaz, doğrulama sırasında belirtilen alan tarafından yönetilir. * Oturum açmış mevcut kullanıcı, doğrulama sırasında belirtilen alan tarafından yönetilir. * Mevcut cihaz durumu, kurumsal cihaz politikasıyla uyumlu. Örneğin, bir politikada cihazın geliştirici modunda olmaması gerektiği belirtilebilir. * Doğrulama işlemiyle yayınlanan tüm cihaz kimlikleri, mevcut cihazın donanımına sıkı sıkıya bağlıdır. Bu işlev oldukça kısıtlıdır ve mevcut cihaz yönetilmiyorsa, mevcut kullanıcı yönetilmiyorsa veya bu işlem kurumsal cihaz politikası tarafından arayan için açıkça etkinleştirilmediyse başarısız olur. Enterprise makine anahtarı, "system" jetonunda bulunmaz ve başka hiçbir API tarafından erişilemez.

Parametreler

  • meydan okuma

    ArrayBuffer

    Verified Access Web API tarafından gönderilen bir istem.

  • registerKey

    boole isteğe bağlı

    Chrome 59 ve sonraki sürümler

    Ayarlanırsa mevcut Enterprise Machine Key, "system" jetonuna kaydedilir ve Enterprise Machine Key rolünden vazgeçer. Ardından anahtar bir sertifikayla ilişkilendirilebilir ve diğer imzalama anahtarları gibi kullanılabilir. Bu anahtar 2048 bit RSA'dır. Bu işleve yapılan sonraki çağrılar yeni bir Enterprise makine anahtarı oluşturur.

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (response: ArrayBuffer) => void

    • gönderin

      ArrayBuffer

      İstem yanıtı.

İadeler

  • Promise<ArrayBuffer>

    Chrome 131 ve sonraki sürümler

    Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

challengeUserKey()

Promise Chrome 50 ve sonraki sürümler Chrome 110'dan beri kullanımdan kaldırıldı
chrome.enterprise.platformKeys.challengeUserKey(
  challenge: ArrayBuffer,
  registerKey: boolean,
  callback?: function,
)

Bunun yerine challengeKey kullanın.

Donanım destekli Enterprise kullanıcı anahtarına meydan okuyup yanıtı uzaktan doğrulama protokolü kapsamında yayınlar. Yalnızca ChromeOS'te ve hem istemler gönderen hem de yanıtları doğrulayan Verified Access Web API ile birlikte kullanışlıdır. Doğrulanmış Erişim Web API'si tarafından yapılan başarılı bir doğrulama, aşağıdakilerin tümünün güçlü bir göstergesidir: * Mevcut cihaz, meşru bir ChromeOS cihazıdır. * Mevcut cihaz, doğrulama sırasında belirtilen alan tarafından yönetilir. * Oturum açmış mevcut kullanıcı, doğrulama sırasında belirtilen alan tarafından yönetilir. * Mevcut cihaz durumu, kurumsal kullanıcı politikasına uygundur. Örneğin, bir politikada cihazın geliştirici modunda olmaması gerektiği belirtilebilir. * Doğrulama işlemiyle yayınlanan ortak anahtar, mevcut cihazın donanımına ve oturum açmış mevcut kullanıcıya sıkı sıkıya bağlıdır. Bu işlev oldukça kısıtlıdır ve mevcut cihaz yönetilmiyorsa, mevcut kullanıcı yönetilmiyorsa veya bu işlem kurumsal kullanıcı politikası uyarınca arayan için açıkça etkinleştirilmediyse başarısız olur. Enterprise kullanıcı anahtarı, "user" jetonunda bulunmaz ve başka hiçbir API tarafından erişilemez.

Parametreler

  • meydan okuma

    ArrayBuffer

    Verified Access Web API tarafından gönderilen bir istem.

  • registerKey

    boolean

    Ayarlanırsa mevcut Enterprise kullanıcı anahtarı "user" jetonuna kaydedilir ve Enterprise kullanıcı anahtarı rolünden vazgeçilir. Ardından anahtar bir sertifikayla ilişkilendirilebilir ve diğer imzalama anahtarları gibi kullanılabilir. Bu anahtar 2048 bit RSA'dır. Bu işleve yapılan sonraki çağrılar yeni bir Enterprise kullanıcı anahtarı oluşturur.

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (response: ArrayBuffer) => void

    • gönderin

      ArrayBuffer

      İstem yanıtı.

İadeler

  • Promise<ArrayBuffer>

    Chrome 131 ve sonraki sürümler

    Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

getCertificates()

Promise
chrome.enterprise.platformKeys.getCertificates(
  tokenId: string,
  callback?: function,
)

Belirtilen jetondan kullanılabilen tüm istemci sertifikalarının listesini döndürür. Belirli bir kimlik doğrulama için kullanılabilen istemci sertifikalarının varlığını ve süresinin dolup dolmadığını kontrol etmek için kullanılabilir.

Parametreler

  • tokenId

    dize

    getTokens tarafından döndürülen jetonun kimliği.

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (certificates: ArrayBuffer[]) => void

    • certificates

      ArrayBuffer[]

      Her biri X.509 sertifikasının DER kodlamasında olan sertifika listesi.

İadeler

  • Promise<ArrayBuffer[]>

    Chrome 131 ve sonraki sürümler

    Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

getTokens()

Promise
chrome.enterprise.platformKeys.getTokens(
  callback?: function,
)

Kullanılabilir jetonları döndürür. Normal bir kullanıcı oturumunda liste her zaman kullanıcının jetonunu id "user" ile birlikte içerir. Sistem genelinde bir TPM jetonu varsa döndürülen listede id "system" ile sistem genelindeki jeton da yer alır. Sistem genelindeki jeton, bu cihazdaki (ör. Chromebook) tüm oturumlar için aynıdır.

Parametreler

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (tokens: Token[]) => void

    • jeton

      Kullanılabilir jetonların listesi.

İadeler

  • Promise<Token[]>

    Chrome 131 ve sonraki sürümler

    Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

importCertificate()

Promise
chrome.enterprise.platformKeys.importCertificate(
  tokenId: string,
  certificate: ArrayBuffer,
  callback?: function,
)

Sertifikalı anahtar bu jetonda zaten depolanmışsa certificate'yi belirtilen jetona aktarır. Sertifika isteği başarıyla tamamlandıktan sonra, elde edilen sertifikayı depolamak ve kimlik doğrulama için işletim sistemine ve tarayıcıya sunmak üzere bu işlev kullanılmalıdır.

Parametreler

  • tokenId

    dize

    getTokens tarafından döndürülen jetonun kimliği.

  • sertifika

    ArrayBuffer

    X.509 sertifikasının DER kodlaması.

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    () => void

İadeler

  • Promise<void>

    Chrome 131 ve sonraki sürümler

    Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.

removeCertificate()

Promise
chrome.enterprise.platformKeys.removeCertificate(
  tokenId: string,
  certificate: ArrayBuffer,
  callback?: function,
)

Varsa certificate değerini verilen jetondan kaldırır. Eski sertifikaları kaldırmak için kullanılmalıdır. Böylece, kimlik doğrulama sırasında dikkate alınmaz ve sertifika seçimini karmaşık hale getirmezler. Sertifika mağazasında depolama alanı açmak için kullanılmalıdır.

Parametreler

  • tokenId

    dize

    getTokens tarafından döndürülen jetonun kimliği.

  • sertifika

    ArrayBuffer

    X.509 sertifikasının DER kodlaması.

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    () => void

İadeler

  • Promise<void>

    Chrome 131 ve sonraki sürümler

    Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.