Mô tả
Sử dụng API chrome.enterprise.platformKeys
để tạo khoá và cài đặt chứng chỉ cho những khoá này. Các chứng chỉ này sẽ do nền tảng quản lý và có thể 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
Khái niệm và cách sử dụng
Thông thường, cách sử dụng API này để đăng ký chứng chỉ ứng dụng khách tuân theo các bước sau:
Lấy tất cả mã thông báo hiện có bằng cách dù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ề tên người dùng cho khoá.Xuất khoá công khai bằng phương thức Mã thông báo
exportKey()
(được định nghĩa trong SubtleCrypto).Tạo chữ ký của dữ liệu của yêu cầu chứng nhận bằ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 đế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 cách sử dụ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
Loại khoá để tạo.
Enum
"RSA"
"ECDSA"
ChallengeKeyOptions
Thuộc tính
-
thử thách
ArrayBuffer
Một thử thách do API truy cập web xác minh đưa 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 của
scope
đã chỉ định. Sau đó, khoá này có thể được liên kết với một chứng chỉ và được 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 trongscope
được chỉ định. -
phạm vi
Loại chìa khoá doanh nghiệp cần thách thức.
RegisterKeyOptions
Thuộc tính
-
thuật toán
Thuật toán mà khoá đã đăng ký nên sử dụng.
Scope
Liệu nên sử dụng Khoá người dùng dành cho doanh nghiệp hay Khoá máy dành cho doanh nghiệp.
Enum
"NGƯỜI DÙNG"
"MÁY"
Token
Thuộc tính
-
id
string
Xác định duy nhất
Token
này.Mã tĩnh là
"user"
và"system"
tương ứng với 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.enterprise.platformKeys.getTokens
có thể trả về mã thông báo khác (có giá trị nhận dạng khác). -
softwareBackedSubtleCrypto
SubtleCrypto
Chrome 97 trở lênTriể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 hỗ trợ bằng phần mềm. Việc bảo vệ khoá, đồng thời 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, khoá ít được bảo vệ hơn so với khoá dựa trên phần cứng.
Bạn chỉ có thể tạo các khoá RSASSA-PKCS1-V1_5 không giải nén có
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 vớiwindow.crypto.subtle
. Tương tự, bạn không thể sử dụng các đối tượngKey
được tạo bằngwindow.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ả việc tạo khoá, đều dựa trên phần cứng.
Bạn chỉ có thể tạo các khoá RSASSA-PKCS1-V1_5 không thể trích xuất với
modulusLength
cho đến 2048 và ECDSA vớinamedCurve
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 vớiwindow.crypto.subtle
. Tương tự, bạn không thể sử dụng các đối tượngKey
được tạo bằngwindow.crypto.subtle
với giao diện này.
Phương thức
challengeKey()
chrome.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
callback: function,
)
Tương tự như challengeMachineKey
và challengeUserKey
, nhưng cho phép chỉ định thuật toán của khoá đã đăng ký. Thử thách Khoá máy dành cho doanh nghiệp dựa trên phần cứng và phát phản hồi dưới dạng 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. API này vừa đưa ra thử thách vừa xác minh phản hồi.
Xác minh thành công bằng API Web truy cập đã xác minh là tín hiệu mạnh mẽ cho thấy thiết bị hiện tại là thiết bị Chrome OS 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 tại đã đăng nhập được quản lý theo miền được chỉ định trong quá trình xác minh và 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 không được đặt thiết bị ở chế độ nhà phát triển. Mọi thông tin nhận dạng thiết bị do quy 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"
, 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ế cao 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 thao tác này chưa được bật một cách rõ ràng cho phương thức gọi theo chính sách thiết bị của doanh nghiệp. Khoá được thử thách không nằm trong mã thông báo "system"
hoặc "user"
và không API nào khác cũng không thể 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
Câu trả lời cho thử thách.
-
challengeMachineKey()
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 dành cho doanh nghiệp dựa trên phần cứng và phát phản hồi dưới dạng 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. API này vừa đưa ra thử thách vừa xác minh phản hồi. Việc xác minh thành công bằng API Web truy cập đã xác minh là tín hiệu mạnh mẽ thể hiện 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 đ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 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 không được đặt thiết bị ở chế độ nhà phát triển. * Mọi thông tin nhận dạng thiết bị do quy 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ế cao 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 thao tác này chưa được bật một cách rõ ràng cho phương thức gọi theo chính sách thiết bị của doanh nghiệp. Khoá máy dành cho doanh nghiệp không nằm trong mã thông báo "system"
và bất kỳ API nào khác không thể truy cập được.
Tham số
-
thử thách
ArrayBuffer
Một thử thách do API truy cập web xác minh đưa ra.
-
registerKey
boolean không bắt buộc
Chrome 59 trở lênNếu được đặt, Khoá máy dành cho 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 dành cho doanh nghiệp. Sau đó, khoá này có thể được liên kết với một chứng chỉ và được sử dụng như mọi khoá ký khác. Khoá này là RSA 2048 bit. Các lệnh gọi tiếp theo đến hàm này sẽ tạo một Khoá máy dành cho 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
Câu trả lời cho thử thách.
-
challengeUserKey()
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 phản hồi dưới dạng 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. API này vừa đưa ra thử thách vừa xác minh phản hồi. Việc xác minh thành công bằng API Web truy cập đã xác minh là tín hiệu mạnh mẽ thể hiện 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 đ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 không được đặt thiết bị ở chế độ nhà phát triển. * Khoá công khai do quy trình xác minh cung cấp sẽ đượ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ế cao 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 thao tác này chưa được bật một cách rõ ràng cho phương thức gọi theo chính sách người dùng doanh nghiệp. Khoá người dùng doanh nghiệp không nằm trong mã thông báo "user"
và không API nào khác có thể truy cập được.
Tham số
-
thử thách
ArrayBuffer
Một thử thách do API truy cập web xác minh đưa 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 đó, khoá này có thể được liên kết với một chứng chỉ và được sử dụng như mọi khoá ký 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
Câu trả lời cho 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ó từ mã thông báo đã cho. Có thể được sử dụng để kiểm tra sự tồn tại và thời hạn của các chứng chỉ ứng dụng khách có thể dùng cho một xác thực nhất định.
Tham số
-
tokenId
string
Mã của 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ỉ theo phương thức mã hoá DER của một 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 phiên 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 với id
"user"
. Nếu có mã thông báo TPM trên toàn hệ thống, thì 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ị, ví dụ như Chromebook).
Tham số
-
số gọi lại
hàm
Tham số
callback
sẽ có dạng như sau:(tokens: Token[]) => void
-
mã thông báo
Danh sách các mã thông báo hiện có.
-
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, chức năng này sẽ được sử dụng để 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ã 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 dùng để xoá các chứng chỉ đã lỗi thời để tránh bị xem xét trong quá trình xác thực và tránh làm lộn xộn lựa chọn chứng chỉ. Nên được dùng để giải phóng bộ nhớ trong kho chứng chỉ.
Tham số
-
tokenId
string
Mã của 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