chrome.enterprise.platformKeys

Nội dung mô tả

Sử dụng API chrome.enterprise.platformKeys để tạo khoá và cài đặt chứng chỉ cho các khoá này. Các chứng chỉ sẽ do nền tảng quản lý và có thể được dùng để xác thực TLS, truy cập mạng hoặc cho các tiện ích khác thông qua chrome.platformKeys.

Quyền

enterprise.platformKeys

Phạm vi cung cấp

Chỉ dành cho ChromeOS Cần có chính sách

Khái niệm và cách sử dụng

Quy trình sử dụng API này thông thường để đăng ký chứng chỉ ứng dụng khách theo các bước sau:

  • Nhận tất cả mã thông báo hiện có bằng cách sử dụng enterprise.platformKeys.getTokens().

  • Tìm mã thông báo có id bằng "user". Hãy sử dụng mã thông báo này sau đó.

  • Tạo một cặp khoá bằng phương thức Mã thông báo generateKey() (được định nghĩa trong SubtleCrypto). Thao tác này sẽ đưa tên người dùng trở về khoá.

  • Xuất khoá công khai bằng cách sử dụng phương thức Mã thông báo exportKey() (được định nghĩa trong SubtleCrypto).

  • Tạo chữ ký dữ liệu của yêu cầu chứng nhận bằng cách sử dụng phương thức Mã thông báo sign() (được định nghĩa trong SubtleCrypto).

  • Hoàn tất yêu cầu chứng nhận và gửi cho tổ chức phát hành chứng nhận đó.

  • Nếu nhận được chứng chỉ, hãy nhập chứng chỉ đó bằng [enterprise.platformKeys.importCertificate()`[3]

Dưới đây là ví dụ cho thấy hoạt động tương tác chính với API, ngoại trừ việc tạo và gửi yêu cầu chứng nhận:

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

Loại

Algorithm

Chrome 110 trở lên

Loại khoá cần tạo.

Liệt kê

"RSA"

"ECDSA"

ChallengeKeyOptions

Chrome 110 trở lên

Thuộc tính

  • thử thách

    ArrayBuffer

    Một thử thách do API Web truy cập đã xác minh đưa ra.

  • registerKey

    RegisterKeyOptions không bắt buộc

    Nếu có, hãy đăng ký khoá xác thực bằng mã thông báo của scope đã chỉ định. Sau đó, khoá có thể được liên kết với một chứng chỉ và sử dụng như bất kỳ khoá ký nào khác. Các lệnh gọi tiếp theo đối với hàm này sẽ tạo một Khoá doanh nghiệp mới trong scope được chỉ định.

  • xác định phạm vi của thứ nguyên.

    Cần xác nhận Khoá doanh nghiệp nào.

RegisterKeyOptions

Chrome 110 trở lên

Thuộc tính

  • thuật toán

    Thuật toán mà khoá đã đăng ký sẽ sử dụng.

Scope

Chrome 110 trở lên

Xem nên sử dụng Khoá người dùng doanh nghiệp hay Khoá máy doanh nghiệp.

Liệt kê

Token

Thuộc tính

  • id

    string

    Xác định duy nhất Token này.

    Mã nhận dạng tĩnh là "user""system", tương ứng với mã thông báo phần cứng dành riêng cho người dùng và mã thông báo phần cứng trên toàn hệ thống của nền tảng. enterprise.platformKeys.getTokens có thể trả về bất kỳ mã thông báo nào khác (có giá trị nhận dạng khác).

  • softwareBackedSubtleCrypto

    SubtleCrypto

    Chrome 97 trở lên

    Triển khai giao diện SubtleCrypto của WebCrypto. Các thao tác mã hoá, bao gồm cả việc tạo khoá, đều được phần mềm hỗ trợ. Việc bảo vệ các khoá và quá trình triển khai thuộc tính không thể trích xuất được thực hiện trong phần mềm, vì vậy, các khoá này ít được bảo vệ hơn so với khoá dựa trên phần cứng.

    Chỉ có thể tạo các khoá RSASSA-PKCS1-V1_5 không trích xuất được với modulusLength tối đa 2048. Bạn có thể dùng mỗi khoá để ký dữ liệu tối đa một lần.

    Bạn không thể dùng các khoá được tạo trên một Token cụ thể với bất kỳ Mã thông báo nào khác, cũng như không thể dùng các khoá này với window.crypto.subtle. Tương tự, bạn không thể sử dụng các đối tượng Key được tạo bằng window.crypto.subtle với giao diện này.

  • subtleCrypto

    SubtleCrypto

    Triển khai giao diện SubtleCrypto của WebCrypto. Các thao tác mã hoá, bao gồm cả tạo khoá, đều dựa trên phần cứng.

    Chỉ có thể tạo các khoá RSASSA-PKCS1-V1_5 không thể trích xuất có modulusLength lên đến 2048 và ECDSA với namedCurve P-256. Bạn có thể dùng mỗi khoá để ký dữ liệu tối đa một lần.

    Bạn không thể dùng các khoá được tạo trên một Token cụ thể với bất kỳ Mã thông báo nào khác, cũng như không thể dùng các khoá này với window.crypto.subtle. Tương tự, bạn không thể sử dụng các đối tượng Key được tạo bằng window.crypto.subtle với giao diện này.

Phương thức

challengeKey()

Chrome 110 trở lên
chrome.enterprise.platformKeys.challengeKey(
  options: ChallengeKeyOptions,
  callback: function,
)

Tương tự như challengeMachineKeychallengeUserKey, nhưng cho phép chỉ định thuật toán của một khoá đã đăng ký. Thử thách Khoá máy doanh nghiệp dựa trên phần cứng và phát ra phản hồi như một phần của giao thức chứng thực từ xa. Chỉ hữu ích trên ChromeOS và kết hợp với API web truy cập đã xác minh (Verify Access Web API) giải quyết thách thức và xác minh phản hồi.

Việc xác minh thành công API Web truy cập đã xác minh là một tín hiệu mạnh mẽ cho thấy thiết bị hiện tại là thiết bị ChromeOS hợp lệ, thiết bị hiện tại được quản lý bởi miền được chỉ định trong quá trình xác minh, người dùng hiện đã đăng nhập được quản lý bởi miền được chỉ định trong quá trình xác minh và trạng thái thiết bị hiện tại tuân thủ chính sách thiết bị của doanh nghiệp. Ví dụ: một chính sách có thể quy định rằng thiết bị không được đặt ở chế độ nhà phát triển. Mọi danh tính thiết bị do quá trình xác minh đưa ra đều được liên kết chặt chẽ với phần cứng của thiết bị hiện tại. Nếu bạn chỉ định Phạm vi "user", danh tính đó cũng phải bị ràng buộc bởi người dùng hiện tại đang đăng nhập.

Chức năng này bị hạn chế nghiêm ngặt và sẽ không thành công nếu thiết bị hiện tại không được quản lý, người dùng hiện tại không được quản lý hoặc nếu chính sách thiết bị doanh nghiệp chưa bật rõ ràng thao tác này cho phương thức gọi. Khoá được xác thực không nằm trong mã thông báo "system" hoặc "user" và không API nào khác truy cập được.

Tham số

  • tùy chọn

    Đối tượng chứa các trường được xác định trong ChallengeKeyOptions.

  • số gọi lại

    hàm

    Tham số callback sẽ có dạng như sau:

    (response: ArrayBuffer)=>void

    • phản hồi

      ArrayBuffer

      Phản hồi thử thách.

challengeMachineKey()

Chrome 50 trở lên Không dùng nữa kể từ Chrome 110
chrome.enterprise.platformKeys.challengeMachineKey(
  challenge: ArrayBuffer,
  registerKey?: boolean,
  callback: function,
)

Thay vào đó, hãy sử dụng challengeKey.

Thử thách Khoá máy doanh nghiệp dựa trên phần cứng và phát ra phản hồi như một phần của giao thức chứng thực từ xa. Chỉ hữu ích trên ChromeOS và kết hợp với API web truy cập đã xác minh (Verify Access Web API) giải quyết thách thức và xác minh phản hồi. Việc xác minh thành công qua API Web truy cập đã xác minh là tín hiệu rõ ràng của tất cả những điều sau: * Thiết bị hiện tại là thiết bị ChromeOS hợp lệ. * Thiết bị hiện tại do miền được chỉ định trong quá trình xác minh quản lý. * Người dùng hiện đã đăng nhập sẽ do miền được chỉ định trong quá trình xác minh quản lý. * Trạng thái thiết bị hiện tại tuân thủ chính sách thiết bị của doanh nghiệp. Ví dụ: một chính sách có thể quy định rằng thiết bị không được đặt ở chế độ nhà phát triển. * Mọi danh tính thiết bị do quá trình xác minh đưa ra đều được liên kết chặt chẽ với phần cứng của thiết bị hiện tại. Chức năng này bị hạn chế nghiêm ngặt và sẽ không thành công nếu thiết bị hiện tại không được quản lý, người dùng hiện tại không được quản lý hoặc nếu chính sách thiết bị doanh nghiệp chưa bật rõ ràng thao tác này cho phương thức gọi. Khoá máy doanh nghiệp không nằm trong mã thông báo "system" và không có API nào khác truy cập được.

Tham số

  • thử thách

    ArrayBuffer

    Một thử thách do API Web truy cập đã xác minh đưa ra.

  • registerKey

    boolean không bắt buộc

    Chrome 59 trở lên

    Nếu bạn đặt chính sách này, Khoá máy doanh nghiệp hiện tại sẽ được đăng ký bằng mã thông báo "system" và từ bỏ vai trò Khoá máy doanh nghiệp. Sau đó, khoá có thể được liên kết với một chứng chỉ và sử dụng như bất kỳ khoá ký nào khác. Khoá này là RSA 2048 bit. Các lệnh gọi tiếp theo đối với hàm này sẽ tạo một Khoá máy doanh nghiệp mới.

  • số gọi lại

    hàm

    Tham số callback sẽ có dạng như sau:

    (response: ArrayBuffer)=>void

    • phản hồi

      ArrayBuffer

      Phản hồi thử thách.

challengeUserKey()

Chrome 50 trở lên Không dùng nữa kể từ Chrome 110
chrome.enterprise.platformKeys.challengeUserKey(
  challenge: ArrayBuffer,
  registerKey: boolean,
  callback: function,
)

Thay vào đó, hãy sử dụng challengeKey.

Thử thách Khoá người dùng doanh nghiệp dựa trên phần cứng và phát ra phản hồi như một phần của giao thức chứng thực từ xa. Chỉ hữu ích trên ChromeOS và kết hợp với API web truy cập đã xác minh (Verify Access Web API) giải quyết thách thức và xác minh phản hồi. Việc xác minh thành công qua API Web truy cập đã xác minh là tín hiệu rõ ràng của tất cả những điều sau: * Thiết bị hiện tại là thiết bị ChromeOS hợp lệ. * Thiết bị hiện tại do miền được chỉ định trong quá trình xác minh quản lý. * Người dùng hiện đã đăng nhập sẽ do miền được chỉ định trong quá trình xác minh quản lý. * Trạng thái hiện tại của thiết bị tuân thủ chính sách người dùng của doanh nghiệp. Ví dụ: một chính sách có thể quy định rằng thiết bị không được đặt ở chế độ nhà phát triển. * Khoá công khai do quá trình xác minh này tạo ra được liên kết chặt chẽ với phần cứng của thiết bị hiện tại và với người dùng hiện đã đăng nhập. Chức năng này bị hạn chế nghiêm ngặt và sẽ không thành công nếu thiết bị hiện tại không được quản lý, người dùng hiện tại không được quản lý hoặc nếu chính sách người dùng doanh nghiệp chưa bật rõ ràng thao tác này cho phương thức gọi. Khoá người dùng doanh nghiệp không nằm trong mã thông báo "user" và không có API nào khác truy cập được.

Tham số

  • thử thách

    ArrayBuffer

    Một thử thách do API Web truy cập đã xác minh đưa ra.

  • registerKey

    boolean

    Nếu bạn đặt chính sách này, Khoá người dùng doanh nghiệp hiện tại sẽ được đăng ký bằng mã thông báo "user" và từ bỏ vai trò Khoá người dùng doanh nghiệp. Sau đó, khoá có thể được liên kết với một chứng chỉ và sử dụng như bất kỳ khoá ký nào khác. Khoá này là RSA 2048 bit. Các lệnh gọi tiếp theo đối với hàm này sẽ tạo một Khoá người dùng doanh nghiệp mới.

  • số gọi lại

    hàm

    Tham số callback sẽ có dạng như sau:

    (response: ArrayBuffer)=>void

    • phản hồi

      ArrayBuffer

      Phản hồi thử thách.

getCertificates()

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

Trả về danh sách tất cả chứng chỉ ứng dụng khách có sẵn từ mã thông báo đã cho. Có thể dùng để kiểm tra sự tồn tại và hết hạn của các chứng chỉ ứng dụng khách có thể dùng cho một phương thức xác thực nhất định.

Tham số

  • tokenId

    string

    Mã của một Mã thông báo do getTokens trả về.

  • số gọi lại

    hàm

    Tham số callback sẽ có dạng như sau:

    (certificates: ArrayBuffer[])=>void

    • chứng chỉ

      ArrayBuffer[]

      Danh sách chứng chỉ, mỗi chứng chỉ ở dạng mã hoá DER của chứng chỉ X.509.

getTokens()

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

Trả về các mã thông báo hiện có. Trong một phiên hoạt động của người dùng thông thường, danh sách sẽ luôn chứa mã thông báo của người dùng đó bằng id "user". Nếu có mã thông báo TPM trên toàn hệ thống, danh sách được trả về cũng sẽ chứa mã thông báo trên toàn hệ thống với id "system". Mã thông báo trên toàn hệ thống sẽ giống nhau cho tất cả các phiên trên thiết bị này (thiết bị theo nghĩa chẳng hạn như Chromebook).

Tham số

  • số gọi lại

    hàm

    Tham số callback sẽ có dạng như sau:

    (tokens: Token[])=>void

importCertificate()

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

Nhập certificate vào mã thông báo đã cho nếu khoá được chứng nhận đã được lưu trữ trong mã thông báo này. Sau khi yêu cầu chứng nhận thành công, bạn nên sử dụng hàm này để lưu trữ chứng chỉ thu được và cung cấp chứng chỉ đó cho hệ điều hành và trình duyệt để xác thực.

Tham số

  • tokenId

    string

    Mã của một Mã thông báo do getTokens trả về.

  • chứng nhận

    ArrayBuffer

    Mã hoá DER của chứng chỉ X.509.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    ()=>void

removeCertificate()

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

Xoá certificate khỏi mã thông báo đã cho (nếu có). Bạn nên sử dụng để xoá các chứng chỉ đã lỗi thời để các chứng chỉ đó không được xem xét trong quá trình xác thực và không làm lộn xộn lựa chọn chứng chỉ. Phải được dùng để giải phóng dung lượng lưu trữ trong kho chứng chỉ.

Tham số

  • tokenId

    string

    Mã của một Mã thông báo do getTokens trả về.

  • chứng nhận

    ArrayBuffer

    Mã hoá DER của chứng chỉ X.509.

  • số gọi lại

    hàm không bắt buộc

    Tham số callback sẽ có dạng như sau:

    ()=>void