chrome.enterprise.platformKeys

Deskripsi

Gunakan chrome.enterprise.platformKeys API untuk membuat kunci dan menginstal sertifikat untuk kunci ini. Sertifikat akan dikelola oleh platform dan dapat digunakan untuk autentikasi TLS, akses jaringan, atau oleh ekstensi lain melalui chrome.platformKeys.

Izin

enterprise.platformKeys

Ketersediaan

Khusus ChromeOS Mewajibkan kebijakan

Penggunaan

Penggunaan standar API ini untuk mendaftarkan sertifikat klien mengikuti langkah-langkah berikut:

  • Dapatkan semua token yang tersedia menggunakan enterprise.platformKeys.getTokens.

  • Temukan Token dengan id sama dengan "user". Gunakan Token ini selanjutnya.

  • Buat pasangan kunci menggunakan metode Token generateKey (ditentukan di SubtleCrypto). Tindakan ini akan menampilkan handle ke kunci.

  • Ekspor kunci publik menggunakan metode Token exportKey (ditentukan di SubtleCrypto).

  • Buat tanda tangan data permintaan sertifikasi menggunakan metode Token sign (ditentukan di SubtleCrypto).

  • Selesaikan permintaan sertifikasi dan kirimkan ke otoritas sertifikasi.

  • Jika sertifikat diterima, impor menggunakan enterprise.platformKeys.importCertificate

Berikut adalah contoh yang menunjukkan interaksi API utama kecuali pembuatan dan pengiriman permintaan sertifikasi:

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

Jenis

Algorithm

Chrome 110 dan yang lebih baru

Jenis kunci yang akan dibuat.

Enum

"ECDSA"

ChallengeKeyOptions

Chrome 110 dan yang lebih baru

Properti

  • tantangan

    ArrayBuffer

    Tantangan seperti yang dikeluarkan oleh Verified Access Web API.

  • registerKey

    Jika ada, daftarkan kunci yang ditantang dengan token scope yang ditentukan. Kunci tersebut kemudian dapat dikaitkan dengan sertifikat dan digunakan seperti kunci penandatanganan lainnya. Panggilan berikutnya ke fungsi ini akan membuat Kunci Enterprise baru dalam scope yang ditentukan.

  • cakupan

    Kunci Perusahaan yang akan ditantang.

RegisterKeyOptions

Chrome 110 dan yang lebih baru

Properti

  • algoritme

    Algoritma yang harus digunakan kunci terdaftar.

Scope

Chrome 110 dan yang lebih baru

Apakah akan menggunakan Kunci Pengguna Enterprise atau Kunci Perangkat Enterprise.

Enum

Token

Properti

  • id

    string

    Secara unik mengidentifikasi Token ini.

    ID statis adalah "user" dan "system", yang masing-masing merujuk ke token hardware khusus pengguna dan token hardware seluruh sistem. Token lain (dengan ID lain) mungkin ditampilkan oleh enterprise.platformKeys.getTokens.

  • softwareBackedSubtleCrypto

    SubtleCrypto

    Chrome 97+

    Mengimplementasikan antarmuka SubtleCrypto WebCrypto. Operasi kriptografis, termasuk pembuatan kunci, didukung software. Perlindungan kunci, dan dengan demikian implementasi properti yang tidak dapat diekstrak, dilakukan di dalam software, sehingga kunci tersebut kurang terlindungi dibandingkan kunci yang didukung hardware.

    Hanya kunci RSASSA-PKCS1-V1_5 yang tidak dapat diekstrak dengan modulusLength hingga 2048 yang dapat dibuat. Setiap kunci dapat digunakan paling banyak untuk menandatangani data.

    Kunci yang dibuat di Token tertentu tidak dapat digunakan dengan Token lain, atau tidak dapat digunakan dengan window.crypto.subtle. Demikian pula, objek Key yang dibuat dengan window.crypto.subtle tidak dapat digunakan dengan antarmuka ini.

  • subtleCrypto

    SubtleCrypto

    Mengimplementasikan antarmuka SubtleCrypto WebCrypto. Operasi kriptografis, termasuk pembuatan kunci, didukung hardware.

    Hanya kunci RSASSA-PKCS1-V1_5 yang tidak dapat diekstrak dengan modulusLength hingga 2048, dan ECDSA dengan namedCurve P-256 yang dapat dibuat. Setiap kunci dapat digunakan paling banyak untuk menandatangani data.

    Kunci yang dibuat di Token tertentu tidak dapat digunakan dengan Token lain, atau tidak dapat digunakan dengan window.crypto.subtle. Demikian pula, objek Key yang dibuat dengan window.crypto.subtle tidak dapat digunakan dengan antarmuka ini.

Metode

challengeKey()

Promise Chrome 110+
chrome.enterprise.platformKeys.challengeKey(
  options: ChallengeKeyOptions,
  callback?: function,
)

Serupa dengan challengeMachineKey dan challengeUserKey, tetapi memungkinkan penentuan algoritma kunci terdaftar. Memberikan tantangan pada Kunci Komputer Perusahaan yang didukung hardware dan memunculkan respons sebagai bagian dari protokol pengesahan jarak jauh. Hanya berguna di ChromeOS dan bersama dengan Verified Access Web API yang mengeluarkan tantangan dan memverifikasi respons.

Verifikasi yang berhasil oleh Verified Access Web API adalah sinyal kuat bahwa perangkat saat ini adalah perangkat ChromeOS yang sah, perangkat saat ini dikelola oleh domain yang ditentukan selama verifikasi, pengguna yang login saat ini dikelola oleh domain yang ditentukan selama verifikasi, dan status perangkat saat ini mematuhi kebijakan perangkat perusahaan. Misalnya, kebijakan dapat menentukan bahwa perangkat tidak boleh berada dalam mode developer. Setiap identitas perangkat yang dikeluarkan oleh verifikasi terikat erat dengan hardware perangkat saat ini. Jika Cakupan "user" ditentukan, identitas juga akan terikat erat dengan pengguna yang login saat ini.

Fungsi ini sangat dibatasi dan akan gagal jika perangkat saat ini tidak dikelola, pengguna saat ini tidak dikelola, atau jika operasi ini belum diaktifkan secara eksplisit untuk pemanggil oleh kebijakan perangkat perusahaan. Kunci yang ditantang tidak berada di token "system" atau "user" dan tidak dapat diakses oleh API lain.

Parameter

  • Objek yang berisi kolom yang ditentukan di ChallengeKeyOptions.

  • callback

    fungsi opsional

    Parameter callback terlihat seperti:

    (response: ArrayBuffer) => void

    • respons

      ArrayBuffer

      Respons tantangan.

Hasil

  • Promise<ArrayBuffer>

    Tertunda

    Promise hanya didukung untuk Manifes V3 dan yang lebih baru, platform lain perlu menggunakan callback.

challengeMachineKey()

Promise Chrome 50+ Tidak digunakan lagi sejak Chrome 110
chrome.enterprise.platformKeys.challengeMachineKey(
  challenge: ArrayBuffer,
  registerKey?: boolean,
  callback?: function,
)

Sebagai gantinya, gunakan challengeKey.

Menantang Kunci Mesin Perusahaan yang didukung hardware dan memberikan respons sebagai bagian dari protokol pengesahan jarak jauh. Hanya berguna di ChromeOS dan bersama dengan Verified Access Web API yang memberikan tantangan dan memverifikasi respons. Verifikasi yang berhasil oleh Verified Access Web API adalah sinyal kuat dari semua hal berikut: * Perangkat saat ini adalah perangkat ChromeOS yang sah. * Perangkat saat ini dikelola oleh domain yang ditentukan selama verifikasi. * Pengguna yang login saat ini dikelola oleh domain yang ditentukan selama verifikasi. * Status perangkat saat ini mematuhi kebijakan perangkat perusahaan. Misalnya, kebijakan dapat menentukan bahwa perangkat tidak boleh berada dalam mode developer. * Setiap identitas perangkat yang dikeluarkan oleh verifikasi terikat erat dengan hardware perangkat saat ini. Fungsi ini sangat dibatasi dan akan gagal jika perangkat saat ini tidak dikelola, pengguna saat ini tidak dikelola, atau jika operasi ini belum diaktifkan secara eksplisit untuk pemanggil oleh kebijakan perangkat perusahaan. Kunci Mesin Enterprise tidak berada di token "system" dan tidak dapat diakses oleh API lain.

Parameter

  • tantangan

    ArrayBuffer

    Tantangan seperti yang dikeluarkan oleh Verified Access Web API.

  • registerKey

    boolean opsional

    Chrome 59+

    Jika ditetapkan, Kunci Komputer Enterprise saat ini akan terdaftar dengan token "system" dan melepaskan peran Kunci Komputer Enterprise. Kunci tersebut kemudian dapat dikaitkan dengan sertifikat dan digunakan seperti kunci penandatanganan lainnya. Kunci ini adalah RSA 2048-bit. Panggilan berikutnya ke fungsi ini akan menghasilkan Kunci Komputer Enterprise baru.

  • callback

    fungsi opsional

    Parameter callback terlihat seperti:

    (response: ArrayBuffer) => void

    • respons

      ArrayBuffer

      Respons tantangan.

Hasil

  • Promise<ArrayBuffer>

    Tertunda

    Promise hanya didukung untuk Manifes V3 dan yang lebih baru, platform lain harus menggunakan callback.

challengeUserKey()

Promise Chrome 50+ Tidak digunakan lagi sejak Chrome 110
chrome.enterprise.platformKeys.challengeUserKey(
  challenge: ArrayBuffer,
  registerKey: boolean,
  callback?: function,
)

Sebagai gantinya, gunakan challengeKey.

Menguji Kunci Pengguna Enterprise yang didukung hardware dan memunculkan respons sebagai bagian dari protokol pengesahan jarak jauh. Hanya berguna di ChromeOS dan bersama dengan Verified Access Web API yang mengeluarkan tantangan dan memverifikasi respons. Verifikasi yang berhasil oleh Verified Access Web API adalah sinyal kuat dari semua hal berikut: * Perangkat saat ini adalah perangkat ChromeOS yang sah. * Perangkat saat ini dikelola oleh domain yang ditentukan saat verifikasi. * Pengguna yang login saat ini dikelola oleh domain yang ditentukan selama verifikasi. * Status perangkat saat ini mematuhi kebijakan pengguna perusahaan. Misalnya, kebijakan dapat menentukan bahwa perangkat tidak boleh dalam mode developer. * Kunci publik yang dikeluarkan oleh verifikasi terikat erat ke hardware perangkat saat ini dan ke pengguna yang login saat ini. Fungsi ini sangat dibatasi dan akan gagal jika perangkat saat ini tidak dikelola, pengguna saat ini tidak dikelola, atau jika operasi ini belum diaktifkan secara eksplisit untuk pemanggil oleh kebijakan pengguna perusahaan. Kunci Pengguna Perusahaan tidak berada di token "user" dan tidak dapat diakses oleh API lain.

Parameter

  • tantangan

    ArrayBuffer

    Tantangan seperti yang dikeluarkan oleh Verified Access Web API.

  • registerKey

    boolean

    Jika ditetapkan, Kunci Pengguna Enterprise saat ini akan terdaftar dengan token "user" dan melepaskan peran Kunci Pengguna Enterprise. Kunci tersebut kemudian dapat dikaitkan dengan sertifikat dan digunakan seperti kunci penandatanganan lainnya. Kunci ini adalah RSA 2048-bit. Panggilan berikutnya ke fungsi ini akan menghasilkan Kunci Pengguna Enterprise baru.

  • callback

    fungsi opsional

    Parameter callback terlihat seperti ini:

    (response: ArrayBuffer) => void

    • respons

      ArrayBuffer

      Respons tantangan.

Hasil

  • Promise<ArrayBuffer>

    Tertunda

    Promise hanya didukung untuk Manifes V3 dan yang lebih baru, platform lain harus menggunakan callback.

getCertificates()

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

Menampilkan daftar semua sertifikat klien yang tersedia dari token yang diberikan. Dapat digunakan untuk memeriksa keberadaan dan masa berlaku sertifikat klien yang dapat digunakan untuk otentikasi tertentu.

Parameter

  • tokenId

    string

    ID Token yang ditampilkan oleh getTokens.

  • callback

    fungsi opsional

    Parameter callback terlihat seperti ini:

    (certificates: ArrayBuffer[]) => void

    • sertifikat

      ArrayBuffer[]

      Daftar sertifikat, masing-masing dalam encoding DER sertifikat X.509.

Hasil

  • Promise&lt;ArrayBuffer[]&gt;

    Tertunda

    Promise hanya didukung untuk Manifes V3 dan yang lebih baru, platform lain perlu menggunakan callback.

getTokens()

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

Menampilkan Token yang tersedia. Pada sesi pengguna reguler, daftar akan selalu berisi token pengguna dengan id "user". Jika token TPM seluruh sistem tersedia, daftar yang ditampilkan juga akan berisi token seluruh sistem dengan id "system". Token di seluruh sistem akan sama untuk semua sesi di perangkat ini (perangkat dalam artian mis. Chromebook).

Parameter

  • callback

    fungsi opsional

    Parameter callback terlihat seperti:

    (tokens: Token[]) => void

    • token

      Daftar token yang tersedia.

Hasil

  • Promise<Token[]>

    Tertunda

    Promise hanya didukung untuk Manifes V3 dan yang lebih baru, platform lain perlu menggunakan callback.

importCertificate()

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

Mengimpor certificate ke token yang diberikan jika kunci tersertifikasi sudah disimpan dalam token ini. Setelah permintaan sertifikasi berhasil, fungsi ini harus digunakan untuk menyimpan sertifikat yang diperoleh dan membuatnya tersedia untuk sistem operasi dan browser untuk autentikasi.

Parameter

  • tokenId

    string

    ID Token yang ditampilkan oleh getTokens.

  • sertifikat

    ArrayBuffer

    Encoding DER sertifikat X.509.

  • callback

    fungsi opsional

    Parameter callback terlihat seperti:

    () => void

Hasil

  • Promise<void>

    Tertunda

    Promise hanya didukung untuk Manifes V3 dan yang lebih baru, platform lain harus menggunakan callback.

removeCertificate()

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

Menghapus certificate dari token yang diberikan jika ada. Harus digunakan untuk menghapus sertifikat yang sudah tidak berlaku sehingga tidak dipertimbangkan selama autentikasi dan tidak mengacaukan pilihan sertifikat. Harus digunakan untuk mengosongkan penyimpanan di penyimpanan sertifikat.

Parameter

  • tokenId

    string

    ID Token yang ditampilkan oleh getTokens.

  • sertifikat

    ArrayBuffer

    Encoding DER sertifikat X.509.

  • callback

    fungsi opsional

    Parameter callback terlihat seperti ini:

    () => void

Hasil

  • Promise<void>

    Tertunda

    Promise hanya didukung untuk Manifes V3 dan yang lebih baru, platform lain perlu menggunakan callback.