browser.enterprise.platformKeys

Açıklama

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

İzinler

enterprise.platformKeys

Kullanılabilirlik

Yalnızca ChromeOS Politika gerektirir

Kavramlar ve kullanım

İstemci sertifikası kaydetmek 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ğeri "user" olan jetonu bulun. Bu jetonu daha sonra kullanın.

  • generateKey() Token yöntemini (SubtleCrypto'da tanımlanmıştır) kullanarak bir anahtar çifti oluşturun. Bu işlem, anahtarın herkese açık kullanıcı adını döndürür.

  • SubtleCrypto'da tanımlanan exportKey() Token yöntemini kullanarak ortak anahtarı dışa aktarın.

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

  • Sertifika isteğini tamamlayıp sertifika yetkilisine gönderin.

  • Sertifika alınırsa [enterprise.platformKeys.importCertificate()`[3] kullanarak sertifikayı içe aktarın.

Aşağıda, sertifika isteğinin oluşturulması ve gönderilmesi dışındaki önemli API etkileşimini gösteren bir örnek verilmiştir:

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

Türler

Algorithm

Chrome 110 ve sonraki sürümler Chrome 148'den itibaren browser.*

Oluşturulacak anahtarın türü.

Enum

"RSA"

"ECDSA"

ChallengeKeyOptions

Chrome 110 ve sonraki sürümler Chrome 148'den itibaren browser.*

Özellikler

  • meydan okuma

    ArrayBuffer

    Doğrulanmış Erişim Web API'si tarafından yayınlanan bir sorgu.

  • registerKey

    RegisterKeyOptions isteğe bağlı

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

  • kapsam

    Sorgulanacak kurumsal anahtar.

RegisterKeyOptions

Chrome 110 ve sonraki sürümler Chrome 148'den itibaren browser.*

Özellikler

  • algoritma

    Kayıtlı anahtarın kullanması gereken algoritma.

Scope

Chrome 110 ve sonraki sürümler Chrome 148'den itibaren browser.*

Kurumsal kullanıcı anahtarının mı yoksa kurumsal makine anahtarının mı kullanılacağı.

Enum

"USER"

"MACHINE"

Token

Özellikler

  • id

    dize

    Bu Token öğesini benzersiz şekilde tanımlar.

    Statik kimlikler "user" ve "system" olup sırasıyla platformun kullanıcıya özel ve sistem genelindeki donanım jetonunu ifade eder. Diğer tüm jetonlar (diğer tanımlayıcılarla birlikte) enterprise.platformKeys.getTokens tarafından döndürülebilir.

  • softwareBackedSubtleCrypto

    SubtleCrypto

    Chrome 97 ve sonraki sürümler Chrome 148'den itibaren browser.*

    WebCrypto'nun SubtleCrypto arayüzünü uygular. Anahtar oluşturma dahil olmak üzere kriptografik işlemler yazılım desteklidir. Anahtarların korunması ve dolayısıyla ayıklanamaz özelliğinin uygulanması yazılımda yapıldığından anahtarlar, donanım tabanlı anahtarlara göre daha az korunur.

    Yalnızca ayıklanamayan anahtarlar oluşturulabilir. Desteklenen tek anahtar türü, 2048'e kadar modulusLength ile RSASSA-PKCS1-V1_5'tir. Uzantı, KeyPermissions politikası aracılığıyla izin verilenler listesine eklenmediği sürece her anahtar, verileri imzalamak için en fazla bir kez kullanılabilir. İzin verilenler listesine eklenirse anahtar süresiz olarak kullanılabilir.

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

  • subtleCrypto

    SubtleCrypto

    WebCrypto'nun SubtleCrypto arayüzünü uygular. Anahtar oluşturma da dahil olmak üzere kriptografik işlemler donanım tabanlıdır.

    Yalnızca ayıklanamayan anahtarlar oluşturulabilir. Desteklenen anahtar türleri, modulusLength ile 2048'e kadar RSASSA-PKCS1-V1_5 ve namedCurve ile P-256 ECDSA'dır. Uzantı, KeyPermissions politikası tarafından izin verilenler listesine eklenmediği sürece her anahtar, verileri imzalamak için en fazla bir kez kullanılabilir. İzin verilenler listesine eklenirse anahtar süresiz olarak kullanılabilir.

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

Yöntemler

challengeKey()

Chrome 110 ve sonraki sürümler Chrome 148'den itibaren browser.*
browser.enterprise.platformKeys.challengeKey(
  options: ChallengeKeyOptions,
)
: Promise<ArrayBuffer>

challengeMachineKey ve challengeUserKey özelliklerine benzer ancak kayıtlı bir anahtarın algoritmasının belirtilmesine olanak tanır. Donanım tabanlı bir kurumsal makine anahtarını sorgular ve yanıtı uzaktan doğrulama protokolünün bir parçası olarak yayınlar. Yalnızca ChromeOS'te ve hem sorgu gönderen hem de yanıtları doğrulayan Verified Access Web API ile birlikte kullanıldığında faydalıdır.

Doğrulanmış Erişim Web API'si tarafından yapılan başarılı bir doğrulama, mevcut cihazın meşru bir ChromeOS cihazı olduğunu, mevcut cihazın doğrulama sırasında belirtilen alan tarafından yönetildiğini, mevcut oturum açmış kullanıcının doğrulama sırasında belirtilen alan tarafından yönetildiğini ve mevcut cihaz durumunun kurumsal cihaz politikasına uygun olduğunu gösteren güçlü bir sinyaldir. Örneğin, bir politika, cihazın geliştirici modunda olmaması gerektiğini belirtebilir. Doğrulama tarafından yayınlanan tüm cihaz kimlikleri, mevcut cihazın donanımına sıkı bir şekilde bağlıdır. "user" kapsamı belirtilirse kimlik, oturum açmış olan mevcut kullanıcıya da sıkı bir şekilde bağlanır.

Bu işlev son derece 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ştirilmemişse başarısız olur. Sorgulanan anahtar, "system" veya "user" jetonunda bulunmaz ve başka bir API tarafından erişilemez.

Parametreler

İadeler

  • Promise<ArrayBuffer>

    Chrome 131 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Sorgulama yanıtıyla çözümlenen bir Promise döndürür.

challengeMachineKey()

Chrome 50 ve sonraki sürümler Chrome 148'den itibaren browser.* Chrome 110'dan itibaren desteği sonlandırıldı
browser.enterprise.platformKeys.challengeMachineKey(
  challenge: ArrayBuffer,
  registerKey?: boolean,
)
: Promise<ArrayBuffer>

Bunun yerine challengeKey kullanın.

Donanım tabanlı bir kurumsal makine anahtarını sorgular ve yanıtı uzaktan doğrulama protokolünün bir parçası olarak yayınlar. Yalnızca ChromeOS'te ve hem sorgu gönderen hem de yanıtları doğrulayan Verified Access Web API ile birlikte kullanıldığında faydalıdır. Doğrulanmış Erişim Web API'si tarafından yapılan başarılı bir doğrulama, aşağıdakilerin tümü için güçlü bir sinyaldir: * Mevcut cihaz, meşru bir ChromeOS cihazdır. * Mevcut cihaz, doğrulama sırasında belirtilen alan tarafından yönetilir. * Oturum açmış olan mevcut kullanıcı, doğrulama sırasında belirtilen alan tarafından yönetilir. * Mevcut cihaz durumu, kurumsal cihaz politikasına uygundur. Örneğin, bir politika, cihazın geliştirici modunda olmaması gerektiğini belirtebilir. * Doğrulama tarafından yayınlanan tüm cihaz kimlikleri, mevcut cihazın donanımına sıkı bir şekilde bağlıdır. Bu işlev yüksek düzeyde kısıtlanmıştı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ştirilmemişse başarısız olur. Enterprise Machine Key, "system" jetonunda bulunmaz ve başka bir API tarafından erişilemez.

Parametreler

  • meydan okuma

    ArrayBuffer

    Doğrulanmış Erişim Web API'si tarafından yayınlanan bir sorgu.

  • registerKey

    boole isteğe bağlı

    Chrome 59 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Bu politika ayarlanırsa mevcut kurumsal makine anahtarı "system" jetonuyla kaydedilir ve kurumsal makine anahtarı 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şlevin sonraki çağrıları yeni bir kurumsal makine anahtarı oluşturur.

İadeler

  • Promise<ArrayBuffer>

    Chrome 131 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Sorgulama yanıtıyla çözümlenen bir Promise döndürür.

challengeUserKey()

Chrome 50 ve sonraki sürümler Chrome 148'den itibaren browser.* Chrome 110'dan itibaren desteği sonlandırıldı
browser.enterprise.platformKeys.challengeUserKey(
  challenge: ArrayBuffer,
  registerKey: boolean,
)
: Promise<ArrayBuffer>

Bunun yerine challengeKey kullanın.

Donanım tabanlı bir kurumsal kullanıcı anahtarını sorgular ve yanıtı uzaktan doğrulama protokolünün bir parçası olarak yayınlar. Yalnızca ChromeOS'te ve hem sorgu gönderen hem de yanıtları doğrulayan Verified Access Web API ile birlikte kullanıldığında faydalıdır. Doğrulanmış Erişim Web API'si tarafından yapılan başarılı bir doğrulama, aşağıdakilerin tümü için güçlü bir sinyaldir: * Mevcut cihaz, meşru bir ChromeOS cihazdır. * Mevcut cihaz, doğrulama sırasında belirtilen alan tarafından yönetilir. * Oturum açmış olan 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 politika, cihazın geliştirici modunda olmaması gerektiğini belirtebilir. * Doğrulama tarafından yayınlanan ortak anahtar, mevcut cihazın donanımına ve mevcut oturum açmış kullanıcıya sıkı bir şekilde bağlıdır. Bu işlev yüksek düzeyde kısıtlanmıştır ve mevcut cihaz yönetilmiyorsa, mevcut kullanıcı yönetilmiyorsa veya bu işlem, kurumsal kullanıcı politikası tarafından arayan için açıkça etkinleştirilmemişse başarısız olur. Kurumsal Kullanıcı Anahtarı, "user" jetonunda bulunmaz ve başka bir API tarafından erişilemez.

Parametreler

  • meydan okuma

    ArrayBuffer

    Doğrulanmış Erişim Web API'si tarafından yayınlanan bir sorgu.

  • registerKey

    boole

    Ayarlanırsa mevcut kurumsal kullanıcı anahtarı "user" jetonuyla kaydedilir ve kurumsal kullanıcı anahtarı 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şlevin sonraki çağrıları yeni bir kurumsal kullanıcı anahtarı oluşturur.

İadeler

  • Promise<ArrayBuffer>

    Chrome 131 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Sorgulama yanıtıyla çözümlenen bir Promise döndürür.

getCertificates()

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

Belirli bir 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 geçerlilik süresini kontrol etmek için kullanılabilir.

Parametreler

  • tokenId

    dize

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

İadeler

  • Promise<ArrayBuffer[]>

    Chrome 131 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Mevcut sertifikaların listesiyle çözümlenen bir Promise döndürür.

getTokens()

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

Kullanılabilir jetonları döndürür. Normal bir kullanıcının oturumunda, listede her zaman id "user" ile kullanıcının jetonu yer alır. 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ı olur.

İadeler

  • Promise<Token[]>

    Chrome 131 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Mevcut jetonların listesiyle birlikte getTokens tarafından çağrılır.

importCertificate()

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

Sertifikalı anahtar bu jetonda zaten depolanmışsa certificate anahtarını verilen jetona aktarır. Başarılı bir sertifika isteğinden sonra bu işlev, alınan sertifikayı depolamak ve kimlik doğrulama için işletim sistemi ile tarayıcıya sunmak amacıyla 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ı.

İadeler

  • Promise<void>

    Chrome 131 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Bu işlem tamamlandığında çözümlenen bir Promise döndürür.

removeCertificate()

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

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 bu sertifikalar dikkate alınmaz ve sertifika seçiminde karmaşaya neden olmaz. Sertifika deposunda 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ı.

İadeler

  • Promise<void>

    Chrome 131 ve sonraki sürümler Chrome 148'den itibaren browser.*

    Bu işlem tamamlandığında çözümlenen bir Promise döndürür.