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. Các chứng chỉ này sẽ do nền tảng quản lý và có thể được dùng để xác thực TLS, truy cập vào mạng hoặc do 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 Yêu cầu chính sách

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

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

  • Lấy 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". Sau đó, hãy sử dụng Mã thông báo này.

  • 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ề mã nhận dạng cho khoá.

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

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

  • Hoàn tất yêu cầu cấp chứng chỉ và gửi yêu cầu đó cho cơ quan cấp chứng chỉ.

  • Nếu bạn nhận được một chứng chỉ, hãy nhập chứng chỉ đó bằng cách sử dụng [enterprise.platformKeys.importCertificate()`[3]

Sau đây là ví dụ minh hoạ hoạt động tương tác chính của 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 yêu cầu do Verified Access Web API phát ra.

  • registerKey

    RegisterKeyOptions không bắt buộc

    Nếu có, hãy đăng ký khoá được xác thực bằng mã thông báo scope đã chỉ định. 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 thực.

RegisterKeyOptions

Chrome 110 trở lên

Thuộc tính

  • thuật toán

    Thuật toán mà khoá đã đăng ký nên 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", lần lượt đề cập đến mã thông báo phần cứng dành riêng cho người dùng của nền tảng và mã thông báo phần cứng trên toàn hệ thống. Mọi mã thông báo khác (có giá trị nhận dạng khác) đều có thể được enterprise.platformKeys.getTokens trả về.

  • 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á, đều được phần mềm hỗ trợ. Việc bảo vệ các khoá và do đó, việc 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 các khoá dựa trên phần cứng.

    Bạn chỉ có thể tạo các khoá không trích xuất được. Các loại khoá được hỗ trợ là RSASSA-PKCS1-V1_5 và RSA-OAEP (trên Chrome phiên bản 135 trở lên) với modulusLength tối đa là 2048. Mỗi khoá RSASSA-PKCS1-V1_5 chỉ 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 đó, khoá có thể được dùng vô thời hạn. Khoá RSA-OAEP được hỗ trợ từ Chrome phiên bản 135 và có thể được các tiện ích trong danh sách cho phép sử dụng thông qua chính sách đó để mở khoá khác.

    Các khoá được tạo trên một Token cụ thể không thể dùng với bất kỳ mã thông báo nào khác, cũng như không thể dùng 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á, đều được phần cứng hỗ trợ.

    Bạn chỉ có thể tạo các khoá không trích xuất được. Các loại khoá được hỗ trợ là RSASSA-PKCS1-V1_5 và RSA-OAEP (trên Chrome phiên bản 135 trở lên) với modulusLength lên đến 2048 và ECDSA với namedCurve P-256. Mỗi khoá RSASSA-PKCS1-V1_5 và ECDSA chỉ 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 đó, khoá có thể được dùng vô thời hạn. Khoá RSA-OAEP được hỗ trợ từ Chrome phiên bản 135 và có thể được các tiện ích trong danh sách cho phép sử dụng thông qua chính sách đó để mở khoá khác.

    Các khoá được tạo trên một Token cụ thể không thể dùng với bất kỳ mã thông báo nào khác, cũng như không thể dùng 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,
)
: Promise<ArrayBuffer>

Tương tự như challengeMachineKeychallengeUserKey, nhưng cho phép chỉ định thuật toán của một khoá đã đăng ký. Thách thức 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 Verified Access Web API (API truy cập được xác minh trên web) để đưa ra các thử thách và xác minh phản hồi.

Việc Verified Access Web API xác minh thành công là một tín hiệu mạnh mẽ cho thấy thiết bị hiện tại là một thiết bị ChromeOS hợp pháp, 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 tại đã đăng nhập 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 thiết bị dành cho doanh nghiệp. Ví dụ: một chính sách có thể quy đị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 đượ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 "user" Phạm vi, thì danh tính cũng được liên kết chặt chẽ với người dùng hiện đang đăng nhập.

Chức năng này bị hạn chế rất nhiều và sẽ không hoạt độ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 hoạt động này cho người 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 thể truy cập bằng bất kỳ API nào khác.

Thông số

Giá trị trả về

  • Promise<ArrayBuffer>

    Chrome 131 trở lên

challengeMachineKey()

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

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

Thách thức 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 Verified Access Web API (API truy cập được xác minh trên web) để đưa ra các thử thách và xác minh phản hồi. Việc Xác minh quyền truy cập Web API xác minh thành công 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à một thiết bị ChromeOS hợp pháp. * 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 đang đăng nhập được quản lý bởi miền được chỉ định trong quá trình xác minh. * Trạng thái hiện tại của thiết bị 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 ở 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 đượ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ế rất nhiều và sẽ không hoạt độ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 hoạt động này cho người gọi. Khoá máy doanh nghiệp không nằm trong mã thông báo "system" và không thể truy cập bằng bất kỳ API nào khác.

Thông số

  • thử thách

    ArrayBuffer

    Một yêu cầu do Verified Access Web API 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à khoá RSA 2048 bit. Sau đó, các lệnh gọi tiếp theo đến hàm này sẽ tạo ra một Khoá máy doanh nghiệp mới.

Giá trị trả về

  • Promise<ArrayBuffer>

    Chrome 131 trở lên

challengeUserKey()

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

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

Thách thức 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 Verified Access Web API (API truy cập được xác minh trên web) để đưa ra các thử thách và xác minh phản hồi. Việc Xác minh quyền truy cập Web API xác minh thành công 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à một thiết bị ChromeOS hợp pháp. * 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 đang đăng nhập được quản lý bởi miền được chỉ định trong quá trình xác minh. * Trạng thái hiện tại của thiết bị tuân thủ chính sách người dùng doanh nghiệp. Ví dụ: một chính sách có thể quy đị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 hiện đang đăng nhập. Chức năng này bị hạn chế rất nhiều và sẽ không hoạt độ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 hoạt động 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 thể truy cập bằng bất kỳ API nào khác.

Thông số

  • thử thách

    ArrayBuffer

    Một yêu cầu do Verified Access Web API 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à khoá RSA 2048 bit. Sau đó, các lệnh gọi tiếp theo đến hàm này sẽ tạo ra một Khoá người dùng doanh nghiệp mới.

Giá trị trả về

  • Promise<ArrayBuffer>

    Chrome 131 trở lên

getCertificates()

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

Trả về danh sách tất cả các chứng chỉ máy 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à thời gian hết hạn của chứng chỉ ứng dụng có thể dùng cho một phương thức xác thực nhất định.

Thông số

  • tokenId

    chuỗi

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

Giá trị trả về

  • Promise<ArrayBuffer[]>

    Chrome 131 trở lên

getTokens()

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

Trả về các mã thông báo hiện có. Trong 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 có 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 có 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 ví dụ: Chromebook).

Giá trị trả về

  • Promise<Token[]>

    Chrome 131 trở lên

importCertificate()

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

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 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.

Thông số

  • tokenId

    chuỗi

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

  • chứng chỉ

    ArrayBuffer

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

Giá trị trả về

  • Promise<void>

    Chrome 131 trở lên

removeCertificate()

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

Xoá certificate khỏi mã thông báo đã cho (nếu có). Nên dùng để xoá các chứng chỉ không còn hiệu lực để chúng không được xem xét trong quá trình xác thực và không làm rối lựa chọn chứng chỉ. Nên được dùng để giải phóng bộ nhớ trong kho chứng chỉ.

Thông số

  • tokenId

    chuỗi

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

  • chứng chỉ

    ArrayBuffer

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

Giá trị trả về

  • Promise<void>

    Chrome 131 trở lên