chrome.enterprise.platformKeys

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. 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 dùng tiện ích khác thông qua chrome.platformKeys.

Quyền

enterprise.platformKeys

Phạm vi cung cấp

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

Cách sử dụng thông thường của API này để đăng ký chứng chỉ ứng dụng theo các bước sau:

  • Lấy tất cả mã thông báo có sẵn bằng enterprise.platformKeys.getTokens().

  • Tìm mã thông báo có id bằng "user". 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 xác định trong SubtleCrypto). Thao tác này sẽ trả về handle cho khoá.

  • Xuất khoá công khai bằng phương thức Mã thông báo exportKey() (được xác định trong SubtleCrypto).

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

  • Hoàn tất yêu cầu chứng nhận và gửi yêu cầu đó đến 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ụ minh hoạ các 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.

Enum

"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 phát ra.

  • registerKey

    RegisterKeyOptions không bắt buộc

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

  • phạm vi

    Khoá doanh nghiệp nào cần xác minh.

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

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

Enum

"USER"

"MACHINE"

Token

Thuộc tính

  • id

    chuỗi

    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 trên toàn hệ thống và mã thông báo dành riêng cho người dù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 hoạt động mã hoá, bao gồm cả việc tạo khoá, được hỗ trợ bằng phần mềm. Việc bảo vệ khoá và triển khai thuộc tính không thể trích xuất được thực hiện trong phần mềm, do đó, các khoá này được bảo vệ kém hơn so với khoá dựa trên phần cứng.

    Bạn chỉ có thể tạo các khoá không thể trích xuất. Các loại khoá được hỗ trợ là RSASSA-PKCS1-V1_5 và RSA-OAEP với modulusLength lên đến 2048. Mỗi khoá RSASSA-PKCS1-V1_5 có thể được dùng để ký dữ liệu tối đa một lần, trừ phi tiện ích được đưa vào danh sách cho phép thông qua chính sách KeyPermissions. Trong trường hợp này, khoá có thể được dùng vô thời hạn. Các khoá RSA-OAEP có thể được các tiện ích có trong danh sách cho phép trong chính sách đó sử dụng để mở khoá các khoá khác.

    Bạn không thể sử 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ể sử dụng các khoá đó 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 hoạt động mã hoá, bao gồm cả việc tạo khoá, được hỗ trợ phần cứng.

    Bạn chỉ có thể tạo các khoá không thể trích xuất. Các loại khoá được hỗ trợ là RSASSA-PKCS1-V1_5 và RSA-OAEP với modulusLength lên đến 2048 và ECDSA với namedCurve P-256. Mỗi khoá RSASSA-PKCS1-V1_5 và ECDSA có thể được dùng để ký dữ liệu tối đa một lần, trừ phi tiện ích được đưa vào danh sách cho phép thông qua chính sách KeyPermissions. Trong trường hợp này, khoá có thể được dùng vô thời hạn. Các khoá RSA-OAEP có thể được các tiện ích có trong danh sách cho phép trong chính sách đó sử dụng để mở khoá các khoá khác.

    Bạn không thể sử 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ể sử dụng các khoá đó 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()

Lời hứa 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 khoá đã đăng ký. Đưa ra thách thức cho Khoá máy doanh nghiệp dựa trên phần cứng và phát ra phản hồi trong 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 của tính năng Quyền truy cập được xác minh. API này vừa đưa ra câu đố vừa xác minh câu trả lời.

Việc xác minh thành công bằng Verified Access Web API là một tín hiệu rõ ràng 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 do miền được chỉ định trong quá trình xác minh quản lý, người dùng đã đăng nhập hiện tại do miền được chỉ định trong quá trình xác minh quản lý và trạng thái thiết bị hiện tại tuân thủ chính sách của doanh nghiệp đối với thiết bị. Ví dụ: một chính sách có thể chỉ định rằng thiết bị không được ở chế độ nhà phát triển. Mọi danh tính thiết bị do quy trình xác minh phát ra đều 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", thì danh tính cũng được liên kết chặt chẽ với người dùng đang đăng nhập.

Hàm 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 thách thức không nằm trong mã thông báo "system" hoặc "user" và không có API nào khác có thể truy cập vào khoá này.

Tham số

  • tùy chọn

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

  • lệnh gọi lại

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

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

    (response: ArrayBuffer) => void

    • phản hồi

      ArrayBuffer

      Phản hồi thách thức.

Giá trị trả về

  • Promise<ArrayBuffer>

    Chrome 131 trở lên

    Lời hứa được hỗ trợ trong Tệp kê khai V3 trở lên, nhưng lệnh gọi lại được cung cấp để đảm bảo khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Lời hứa sẽ phân giải bằng cùng một loại được truyền đến lệnh gọi lại.

challengeMachineKey()

Promise Chrome 50 trở lên Ngừng sử dụng kể từ Chrome 110
chrome.enterprise.platformKeys.challengeMachineKey(
  challenge: ArrayBuffer,
  registerKey?: boolean,
  callback?: function,
)

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

Đưa ra thách thức cho Khoá máy doanh nghiệp dựa trên phần cứng và phát ra phản hồi trong 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 của tính năng Quyền truy cập được xác minh. API này vừa đưa ra câu đố vừa xác minh câu trả lời. Việc xác minh thành công bằng API Web của tính năng Xác minh quyền truy cập là một tín hiệu mạnh mẽ cho 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 đang đăng nhập hiện tại được quản lý bởi miền được chỉ định trong quá trình xác minh. * Trạng thái thiết bị hiện tại tuân thủ chính sách thiết bị doanh nghiệp. Ví dụ: một chính sách có thể chỉ định rằng thiết bị không được ở chế độ nhà phát triển. * Mọi danh tính thiết bị do quy trình xác minh phát ra đều liên kết chặt chẽ với phần cứng của thiết bị hiện tại. Hàm 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 có thể truy cập vào khoá này.

Tham số

  • thử thách

    ArrayBuffer

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

  • registerKey

    boolean không bắt buộc

    Chrome 59 trở lên

    Nếu được đặt, 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 đó, bạn có thể liên kết khoá này với một chứng chỉ và sử dụng như mọi khoá ký khác. Khoá này là RSA 2048 bit. Sau đó, các lệnh gọi tiếp theo đến hàm này sẽ tạo một Khoá máy doanh nghiệp mới.

  • lệnh gọi lại

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

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

    (response: ArrayBuffer) => void

    • phản hồi

      ArrayBuffer

      Phản hồi thách thức.

Giá trị trả về

  • Promise<ArrayBuffer>

    Chrome 131 trở lên

    Lời hứa được hỗ trợ trong Tệp kê khai V3 trở lên, nhưng lệnh gọi lại được cung cấp để đảm bảo khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Lời hứa sẽ phân giải bằng cùng một loại được truyền đến lệnh gọi lại.

challengeUserKey()

Promise Chrome 50 trở lên Ngừng sử dụng kể từ Chrome 110
chrome.enterprise.platformKeys.challengeUserKey(
  challenge: ArrayBuffer,
  registerKey: boolean,
  callback?: function,
)

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

Đưa ra thách thức cho Khoá người dùng doanh nghiệp dựa trên phần cứng và phát ra phản hồi trong 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 của tính năng Quyền truy cập được xác minh. API này vừa đưa ra câu đố vừa xác minh câu trả lời. Việc xác minh thành công bằng API Web của tính năng Xác minh quyền truy cập là một tín hiệu mạnh mẽ cho 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 đang đăng nhập hiện tại được quản lý bởi miền được chỉ định trong quá trình xác minh. * Trạng thái thiết bị hiện tại tuân thủ chính sách dành cho người dùng doanh nghiệp. Ví dụ: một chính sách có thể chỉ định rằng thiết bị không được ở chế độ nhà phát triển. * Khoá công khai do quy trình xác minh phát 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 đã đăng nhập hiện tại. Hàm 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 có thể truy cập vào khoá này.

Tham số

  • thử thách

    ArrayBuffer

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

  • registerKey

    boolean

    Nếu được đặt, 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 đó, bạn có thể liên kết khoá này với một chứng chỉ và sử dụng như mọi khoá ký khác. Khoá này là RSA 2048 bit. Sau đó, các lệnh gọi tiếp theo đến hàm này sẽ tạo một Khoá người dùng doanh nghiệp mới.

  • lệnh gọi lại

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

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

    (response: ArrayBuffer) => void

    • phản hồi

      ArrayBuffer

      Phản hồi thách thức.

Giá trị trả về

  • Promise<ArrayBuffer>

    Chrome 131 trở lên

    Lời hứa được hỗ trợ trong Tệp kê khai V3 trở lên, nhưng lệnh gọi lại được cung cấp để đảm bảo khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Lời hứa sẽ phân giải bằng cùng một loại được truyền đến lệnh gọi lại.

getCertificates()

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

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

Tham số

  • tokenId

    chuỗi

    Mã nhận dạng của Mã thông báo do getTokens trả về.

  • lệnh gọi lại

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

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

    (certificates: ArrayBuffer[]) => void

    • chứng chỉ

      ArrayBuffer[]

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

Giá trị trả về

  • Promise<ArrayBuffer[]>

    Chrome 131 trở lên

    Lời hứa được hỗ trợ trong Tệp kê khai V3 trở lên, nhưng lệnh gọi lại được cung cấp để đảm bảo khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Lời hứa sẽ phân giải bằng cùng một loại được truyền đến lệnh gọi lại.

getTokens()

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

Trả về các Mã thông báo có sẵn. Trong phiên hoạt động của người dùng thông thường, danh sách này sẽ luôn chứa mã thông báo của người dùng với 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ị ở đây có nghĩa là ví dụ: Chromebook).

Tham số

  • lệnh gọi lại

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

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

    (tokens: Token[]) => void

Giá trị trả về

  • Promise<Token[]>

    Chrome 131 trở lên

    Lời hứa được hỗ trợ trong Tệp kê khai V3 trở lên, nhưng lệnh gọi lại được cung cấp để đảm bảo khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Lời hứa sẽ phân giải bằng cùng một loại được truyền đến lệnh gọi lại.

importCertificate()

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

Nhập certificate vào mã thông báo đã cho nếu khoá đã chứng nhận đã được lưu trữ trong mã thông báo này. Sau khi yêu cầu chứng chỉ thành công, bạn nên sử dụng hàm này để lưu trữ chứng chỉ đã nhận đượ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

    chuỗi

    Mã nhận dạng của Mã thông báo do getTokens trả về.

  • chứng chỉ

    ArrayBuffer

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

  • lệnh gọi lại

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

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

    () => void

Giá trị trả về

  • Promise<void>

    Chrome 131 trở lên

    Lời hứa được hỗ trợ trong Tệp kê khai V3 trở lên, nhưng lệnh gọi lại được cung cấp để đảm bảo khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Lời hứa sẽ phân giải bằng cùng một loại được truyền đến lệnh gọi lại.

removeCertificate()

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

Xoá certificate khỏi mã thông báo đã cho (nếu có). Nên dùng để xoá các chứng chỉ đã lỗi thời để 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ỉ. Nên dùng để giải phóng bộ nhớ trong kho chứng chỉ.

Tham số

  • tokenId

    chuỗi

    Mã nhận dạng của Mã thông báo do getTokens trả về.

  • chứng chỉ

    ArrayBuffer

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

  • lệnh gọi lại

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

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

    () => void

Giá trị trả về

  • Promise<void>

    Chrome 131 trở lên

    Lời hứa được hỗ trợ trong Tệp kê khai V3 trở lên, nhưng lệnh gọi lại được cung cấp để đảm bảo khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Lời hứa sẽ phân giải bằng cùng một loại được truyền đến lệnh gọi lại.