คำอธิบาย
ใช้ chrome.enterprise.platformKeys
API เพื่อสร้างคีย์และติดตั้งใบรับรองสําหรับคีย์เหล่านี้ แพลตฟอร์มจะจัดการใบรับรองดังกล่าวและสามารถใช้สำหรับการตรวจสอบสิทธิ์ TLS, การเข้าถึงเครือข่าย หรือโดยส่วนขยายอื่นๆ ผ่าน chrome.platformKeys
สิทธิ์
enterprise.platformKeys
ความพร้อมใช้งาน
แนวคิดและการใช้งาน
การใช้งานทั่วไปของ API นี้เพื่อลงทะเบียนใบรับรองไคลเอ็นต์จะทําตามขั้นตอนต่อไปนี้
รับโทเค็นที่ใช้ได้ทั้งหมดโดยใช้
enterprise.platformKeys.getTokens()
ค้นหาโทเค็นที่มี
id
เท่ากับ"user"
ใช้โทเค็นนี้ในภายหลังสร้างคู่คีย์โดยใช้
generateKey()
เมธอดโทเค็น (กำหนดไว้ใน SubtleCrypto) ซึ่งจะแสดงแฮนเดิลของคีย์ส่งออกคีย์สาธารณะโดยใช้
exportKey()
เมธอดโทเค็น (กำหนดไว้ใน SubtleCrypto)สร้างลายเซ็นของข้อมูลคำขอการรับรองโดยใช้เมธอดโทเค็น
sign()
(กำหนดไว้ใน SubtleCrypto)กรอกคําขอการรับรองและส่งไปยังหน่วยงานที่รับรอง
หากได้รับใบรับรอง ให้นําเข้าโดยใช้ [
enterprise.platformKeys.importCertificate()
`[3]
ต่อไปนี้คือตัวอย่างที่แสดงการโต้ตอบหลักของ API ยกเว้นการสร้างและส่งคําขอการรับรอง
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);
ประเภท
Algorithm
ประเภทคีย์ที่จะสร้าง
ค่าแจกแจง
"RSA"
"ECDSA"
ChallengeKeyOptions
พร็อพเพอร์ตี้
-
ชาเลนจ์
ArrayBuffer
ภารกิจที่ Verified Access Web API ส่ง
-
registerKey
RegisterKeyOptions ไม่บังคับ
ลงทะเบียนคีย์ที่ถูกโต้แย้งด้วยโทเค็นของ
scope
ที่ระบุ หากมี จากนั้นจะเชื่อมโยงคีย์กับใบรับรองและใช้คีย์ดังกล่าวได้เหมือนคีย์การรับรองอื่นๆ การเรียกใช้ฟังก์ชันนี้ในภายหลังจะสร้างคีย์ Enterprise ใหม่ในscope
ที่ระบุ -
ขอบเขต
คีย์ขององค์กรที่จะทดสอบ
RegisterKeyOptions
พร็อพเพอร์ตี้
-
อัลกอริทึม
อัลกอริทึมที่คีย์ที่ลงทะเบียนควรใช้
Scope
เลือกใช้คีย์ผู้ใช้ขององค์กรหรือคีย์เครื่องขององค์กร
ค่าแจกแจง
"USER"
"MACHINE"
Token
พร็อพเพอร์ตี้
-
id
สตริง
ระบุ
Token
นี้โดยไม่ซ้ำกันรหัสแบบคงที่คือ
"user"
และ"system"
ซึ่งหมายถึงโทเค็นฮาร์ดแวร์เฉพาะผู้ใช้และทั้งระบบของแพลตฟอร์มตามลำดับenterprise.platformKeys.getTokens
อาจแสดงผลโทเค็นอื่นๆ (ที่มีตัวระบุอื่นๆ) -
softwareBackedSubtleCrypto
SubtleCrypto
Chrome 97 ขึ้นไปใช้อินเทอร์เฟซ SubtleCrypto ของ WebCrypto การดำเนินการเข้ารหัส รวมถึงการสร้างคีย์ ได้รับการสนับสนุนจากซอฟต์แวร์ การป้องกันคีย์และการใช้พร็อพเพอร์ตี้ที่ดึงข้อมูลไม่ได้นั้นทำในซอฟต์แวร์ คีย์จึงได้รับการปกป้องน้อยกว่าคีย์ที่สนับสนุนฮาร์ดแวร์
ระบบจะสร้างได้เฉพาะคีย์ RSASSA-PKCS1-V1_5 ที่ดึงข้อมูลไม่ได้ซึ่งมี
modulusLength
สูงสุด 2048 คีย์แต่ละรายการจะใช้สำหรับการลงนามข้อมูลได้สูงสุด 1 ครั้งคีย์ที่สร้างใน
Token
ที่เฉพาะเจาะจงจะใช้กับโทเค็นอื่นๆ ไม่ได้ และไม่สามารถใช้กับwindow.crypto.subtle
ในทำนองเดียวกัน ออบเจ็กต์Key
ที่สร้างขึ้นด้วยwindow.crypto.subtle
จะใช้กับอินเทอร์เฟซนี้ไม่ได้ -
subtleCrypto
SubtleCrypto
ใช้อินเทอร์เฟซ SubtleCrypto ของ WebCrypto การดำเนินการเข้ารหัส รวมถึงการสร้างคีย์จะรองรับฮาร์ดแวร์
สามารถสร้างได้เฉพาะคีย์ RSASSA-PKCS1-V1_5 ที่ดึงข้อมูลไม่ได้ซึ่งมี
modulusLength
สูงสุด 2048 และ ECDSA ที่มีnamedCurve
P-256 คีย์แต่ละรายการจะใช้สำหรับการลงนามข้อมูลได้สูงสุด 1 ครั้งคีย์ที่สร้างใน
Token
ที่เฉพาะเจาะจงจะใช้กับโทเค็นอื่นๆ ไม่ได้ และไม่สามารถใช้กับwindow.crypto.subtle
ในทำนองเดียวกัน ออบเจ็กต์Key
ที่สร้างขึ้นด้วยwindow.crypto.subtle
จะใช้กับอินเทอร์เฟซนี้ไม่ได้
เมธอด
challengeKey()
chrome.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
callback?: function,
)
คล้ายกับ challengeMachineKey
และ challengeUserKey
แต่อนุญาตให้ระบุอัลกอริทึมของคีย์ที่ลงทะเบียน ตรวจสอบคีย์เครื่องขององค์กรที่สนับสนุนฮาร์ดแวร์และส่งคำตอบเป็นส่วนหนึ่งของโปรโตคอลการรับรองจากระยะไกล มีประโยชน์เฉพาะใน ChromeOS และร่วมกับ Verified Access Web API ซึ่งทั้งออกคำขอยืนยันและยืนยันคำตอบ
การยืนยันที่สำเร็จโดย Verified Access Web API เป็นสัญญาณที่ชัดเจนว่าอุปกรณ์ปัจจุบันเป็นอุปกรณ์ ChromeOS ที่ถูกต้อง อุปกรณ์ปัจจุบันได้รับการจัดการโดยโดเมนที่ระบุระหว่างการยืนยัน ผู้ใช้ที่ลงชื่อเข้าใช้อยู่ในปัจจุบันได้รับการจัดการโดยโดเมนที่ระบุระหว่างการยืนยัน และสถานะปัจจุบันของอุปกรณ์เป็นไปตามนโยบายอุปกรณ์ขององค์กร เช่น นโยบายอาจระบุว่าอุปกรณ์ต้องไม่อยู่ในโหมดนักพัฒนาซอฟต์แวร์ ข้อมูลระบุตัวตนของอุปกรณ์ที่เกิดจากการยืนยันจะเชื่อมโยงกับฮาร์ดแวร์ของอุปกรณ์ปัจจุบันอย่างแน่นหนา หากระบุขอบเขต "user"
ข้อมูลประจำตัวจะเชื่อมโยงกับผู้ใช้ที่ลงชื่อเข้าใช้อยู่ในปัจจุบันอย่างแน่นหนาด้วย
ฟังก์ชันนี้มีข้อจำกัดสูงและจะดำเนินการไม่สำเร็จหากอุปกรณ์ปัจจุบันไม่มีการจัดการ ผู้ใช้ปัจจุบันไม่มีการจัดการ หรือหากนโยบายอุปกรณ์ขององค์กรไม่ได้เปิดใช้การดำเนินการนี้อย่างชัดเจนสำหรับผู้เรียก คีย์ที่ถูกโต้แย้งไม่ได้อยู่ในโทเค็น "system"
หรือ "user"
และ API อื่นๆ ไม่สามารถเข้าถึงได้
พารามิเตอร์
-
ตัวเลือก
ออบเจ็กต์ที่มีฟิลด์ที่กําหนดไว้ใน
ChallengeKeyOptions
-
Callback
ฟังก์ชัน ไม่บังคับ
พารามิเตอร์
callback
จะมีลักษณะดังนี้(response: ArrayBuffer) => void
-
การตอบกลับ
ArrayBuffer
การตอบกลับคำขอ
-
การคืนสินค้า
-
Promise<ArrayBuffer>
Chrome 131 ขึ้นไปไฟล์ Manifest เวอร์ชัน 3 ขึ้นไปรองรับ Promise แต่ก็มีคอลแบ็กไว้เพื่อให้ใช้กับเวอร์ชันก่อนหน้าได้ คุณใช้ทั้ง 2 รูปแบบในการเรียกใช้ฟังก์ชันเดียวกันไม่ได้ พรอมต์จะได้รับการแก้ไขด้วยประเภทเดียวกันกับที่ส่งไปยังการเรียกกลับ
challengeMachineKey()
chrome.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
callback?: function,
)
ให้ใช้ challengeKey
แทน
ตรวจสอบคีย์เครื่องขององค์กรที่สนับสนุนฮาร์ดแวร์และส่งคำตอบเป็นส่วนหนึ่งของโปรโตคอลการรับรองจากระยะไกล มีประโยชน์เฉพาะใน ChromeOS และร่วมกับ Verified Access Web API ซึ่งทั้งออกคำขอยืนยันและยืนยันคำตอบ การยืนยันที่สำเร็จโดย Verified Access Web API เป็นสัญญาณที่ชัดเจนว่าอุปกรณ์ปัจจุบันเป็นอุปกรณ์ ChromeOS ที่ถูกต้อง * อุปกรณ์ปัจจุบันจะได้รับการจัดการโดยโดเมนที่ระบุระหว่างการยืนยัน * ผู้ใช้ที่ลงชื่อเข้าใช้อยู่ในปัจจุบันจะได้รับการจัดการโดยโดเมนที่ระบุระหว่างการยืนยัน * สถานะปัจจุบันของอุปกรณ์เป็นไปตามนโยบายด้านอุปกรณ์ขององค์กร เช่น นโยบายอาจระบุว่าอุปกรณ์ต้องไม่อยู่ในโหมดนักพัฒนาซอฟต์แวร์ * ข้อมูลระบุตัวตนของอุปกรณ์ที่เกิดจากการยืนยันจะเชื่อมโยงกับฮาร์ดแวร์ของอุปกรณ์ปัจจุบันอย่างแน่นหนา ฟังก์ชันนี้มีข้อจำกัดสูงและจะดำเนินการไม่สำเร็จหากอุปกรณ์ปัจจุบันไม่มีการจัดการ ผู้ใช้ปัจจุบันไม่มีการจัดการ หรือหากนโยบายอุปกรณ์ขององค์กรไม่ได้เปิดใช้การดำเนินการนี้อย่างชัดเจนสำหรับผู้เรียก คีย์เครื่องของ Enterprise ไม่ได้อยู่ในโทเค็น "system"
และ API อื่นๆ ไม่สามารถเข้าถึงได้
พารามิเตอร์
-
ชาเลนจ์
ArrayBuffer
ภารกิจที่ Verified Access Web API ส่ง
-
registerKey
บูลีน ไม่บังคับ
Chrome 59 ขึ้นไปหากตั้งค่าไว้ ระบบจะลงทะเบียนคีย์เครื่องขององค์กรปัจจุบันด้วยโทเค็น
"system"
และยกบทบาทคีย์เครื่องขององค์กร จากนั้นจะเชื่อมโยงคีย์กับใบรับรองและใช้คีย์ดังกล่าวได้เหมือนคีย์การรับรองอื่นๆ คีย์นี้เป็น RSA 2048 บิต การเรียกใช้ฟังก์ชันนี้ในภายหลังจะสร้างคีย์เครื่องขององค์กรใหม่ -
Callback
ฟังก์ชัน ไม่บังคับ
พารามิเตอร์
callback
จะมีลักษณะดังนี้(response: ArrayBuffer) => void
-
การตอบกลับ
ArrayBuffer
การตอบกลับคำขอ
-
การคืนสินค้า
-
Promise<ArrayBuffer>
Chrome 131 ขึ้นไปไฟล์ Manifest เวอร์ชัน 3 ขึ้นไปรองรับ Promise แต่ก็มีคอลแบ็กไว้เพื่อให้ใช้กับเวอร์ชันก่อนหน้าได้ คุณใช้ทั้ง 2 รูปแบบในการเรียกใช้ฟังก์ชันเดียวกันไม่ได้ พรอมต์จะได้รับการแก้ไขด้วยประเภทเดียวกันกับที่ส่งไปยังการเรียกกลับ
challengeUserKey()
chrome.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
callback?: function,
)
ให้ใช้ challengeKey
แทน
ตรวจสอบคีย์ผู้ใช้ Enterprise ที่เก็บไว้ในฮาร์ดแวร์และส่งคำตอบเป็นส่วนหนึ่งของโปรโตคอลการรับรองจากระยะไกล มีประโยชน์เฉพาะใน ChromeOS และร่วมกับ Verified Access Web API ซึ่งทั้งออกคำขอยืนยันและยืนยันคำตอบ การยืนยันที่สำเร็จโดย Verified Access Web API เป็นสัญญาณที่ชัดเจนว่าอุปกรณ์ปัจจุบันเป็นอุปกรณ์ ChromeOS ที่ถูกต้อง * อุปกรณ์ปัจจุบันจะได้รับการจัดการโดยโดเมนที่ระบุระหว่างการยืนยัน * ผู้ใช้ที่ลงชื่อเข้าใช้อยู่ในปัจจุบันจะได้รับการจัดการโดยโดเมนที่ระบุระหว่างการยืนยัน * สถานะปัจจุบันของอุปกรณ์เป็นไปตามนโยบายผู้ใช้ระดับองค์กร เช่น นโยบายอาจระบุว่าอุปกรณ์ต้องไม่อยู่ในโหมดนักพัฒนาซอฟต์แวร์ * คีย์สาธารณะที่เกิดจากการยืนยันจะเชื่อมโยงกับฮาร์ดแวร์ของอุปกรณ์ปัจจุบันและผู้ใช้ที่ลงชื่อเข้าใช้อยู่ในปัจจุบันอย่างแน่นหนา ฟังก์ชันนี้มีข้อจำกัดสูงและจะดำเนินการไม่สำเร็จหากอุปกรณ์ปัจจุบันไม่มีการจัดการ ผู้ใช้ปัจจุบันไม่มีการจัดการ หรือหากนโยบายผู้ใช้ขององค์กรไม่ได้เปิดใช้การดำเนินการนี้อย่างชัดเจนสำหรับผู้เรียก คีย์ผู้ใช้ Enterprise ไม่ได้อยู่ในโทเค็น "user"
และ API อื่นๆ ไม่สามารถเข้าถึงได้
พารามิเตอร์
-
ชาเลนจ์
ArrayBuffer
ภารกิจที่ Verified Access Web API ส่ง
-
registerKey
บูลีน
หากตั้งค่าไว้ ระบบจะลงทะเบียนคีย์ผู้ใช้ Enterprise ในปัจจุบันด้วยโทเค็น
"user"
และยกเลิกบทบาทคีย์ผู้ใช้ Enterprise จากนั้นจะเชื่อมโยงคีย์กับใบรับรองและใช้คีย์ดังกล่าวได้เหมือนคีย์การรับรองอื่นๆ คีย์นี้เป็น RSA 2048 บิต การเรียกใช้ฟังก์ชันนี้ในภายหลังจะสร้างคีย์ผู้ใช้ Enterprise ใหม่ -
Callback
ฟังก์ชัน ไม่บังคับ
พารามิเตอร์
callback
จะมีลักษณะดังนี้(response: ArrayBuffer) => void
-
การตอบกลับ
ArrayBuffer
การตอบกลับคำขอ
-
การคืนสินค้า
-
Promise<ArrayBuffer>
Chrome 131 ขึ้นไปไฟล์ Manifest เวอร์ชัน 3 ขึ้นไปรองรับ Promise แต่ก็มีคอลแบ็กไว้เพื่อให้ใช้กับเวอร์ชันก่อนหน้าได้ คุณใช้ทั้ง 2 รูปแบบในการเรียกใช้ฟังก์ชันเดียวกันไม่ได้ พรอมต์จะได้รับการแก้ไขด้วยประเภทเดียวกันกับที่ส่งไปยังการเรียกกลับ
getCertificates()
chrome.enterprise.platformKeys.getCertificates(
tokenId: string,
callback?: function,
)
แสดงรายการใบรับรองไคลเอ็นต์ทั้งหมดที่ใช้ได้จากโทเค็นที่ระบุ ใช้ตรวจสอบการมีอยู่และการหมดอายุของใบรับรองไคลเอ็นต์ที่สามารถใช้สำหรับการตรวจสอบสิทธิ์บางอย่างได้
พารามิเตอร์
-
tokenId
สตริง
รหัสของโทเค็นที่
getTokens
แสดงผล -
Callback
ฟังก์ชัน ไม่บังคับ
พารามิเตอร์
callback
จะมีลักษณะดังนี้(certificates: ArrayBuffer[]) => void
-
ใบรับรอง
ArrayBuffer[]
รายการใบรับรอง โดยแต่ละใบรับรองอยู่ในรูปแบบการเข้ารหัส DER ของใบรับรอง X.509
-
การคืนสินค้า
-
Promise<ArrayBuffer[]>
Chrome 131 ขึ้นไปไฟล์ Manifest เวอร์ชัน 3 ขึ้นไปรองรับ Promise แต่ก็มีคอลแบ็กไว้เพื่อให้ใช้กับเวอร์ชันก่อนหน้าได้ คุณใช้ทั้ง 2 รูปแบบในการเรียกใช้ฟังก์ชันเดียวกันไม่ได้ พรอมต์จะได้รับการแก้ไขด้วยประเภทเดียวกันกับที่ส่งไปยังการเรียกกลับ
getTokens()
chrome.enterprise.platformKeys.getTokens(
callback?: function,
)
แสดงโทเค็นที่ใช้ได้ ในเซสชันของผู้ใช้ทั่วไป รายการจะมีโทเค็นของผู้ใช้ที่มี id
"user"
เสมอ หากมีโทเค็น TPM ระดับระบบ รายการที่แสดงผลจะมีโทเค็นระดับระบบที่มี id
"system"
ด้วย โทเค็นทั้งระบบจะเหมือนกันสำหรับเซสชันทั้งหมดในอุปกรณ์นี้ (อุปกรณ์ในที่นี้หมายถึงอุปกรณ์อย่าง Chromebook)
พารามิเตอร์
การคืนสินค้า
-
Promise<Token[]>
Chrome 131 ขึ้นไปไฟล์ Manifest เวอร์ชัน 3 ขึ้นไปรองรับ Promise แต่ก็มีคอลแบ็กไว้เพื่อให้ใช้กับเวอร์ชันก่อนหน้าได้ คุณใช้ทั้ง 2 รูปแบบในการเรียกใช้ฟังก์ชันเดียวกันไม่ได้ พรอมต์จะได้รับการแก้ไขด้วยประเภทเดียวกันกับที่ส่งไปยังการเรียกกลับ
importCertificate()
chrome.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
)
นําเข้า certificate
ไปยังโทเค็นที่ระบุหากมีการจัดเก็บคีย์ที่ผ่านการรับรองไว้ในโทเค็นนี้แล้ว หลังจากส่งคำขอการรับรองเรียบร้อยแล้ว คุณควรใช้ฟังก์ชันนี้เพื่อจัดเก็บใบรับรองที่ได้รับและทำให้ระบบปฏิบัติการและเบราว์เซอร์พร้อมใช้งานเพื่อการตรวจสอบสิทธิ์
พารามิเตอร์
-
tokenId
สตริง
รหัสของโทเค็นที่
getTokens
แสดงผล -
ใบรับรอง
ArrayBuffer
การโค้ด DER ของใบรับรอง X.509
-
Callback
ฟังก์ชัน ไม่บังคับ
พารามิเตอร์
callback
จะมีลักษณะดังนี้() => void
การคืนสินค้า
-
Promise<void>
Chrome 131 ขึ้นไปไฟล์ Manifest เวอร์ชัน 3 ขึ้นไปรองรับ Promise แต่ก็มีคอลแบ็กไว้เพื่อให้ใช้กับเวอร์ชันก่อนหน้าได้ คุณใช้ทั้ง 2 รูปแบบในการเรียกใช้ฟังก์ชันเดียวกันไม่ได้ พรอมต์จะได้รับการแก้ไขด้วยประเภทเดียวกันกับที่ส่งไปยังการเรียกกลับ
removeCertificate()
chrome.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
)
นำ certificate
ออกจากโทเค็นที่ระบุ หากมี ควรใช้เพื่อนำใบรับรองที่ล้าสมัยออกเพื่อไม่ให้ระบบพิจารณาใบรับรองดังกล่าวระหว่างการตรวจสอบสิทธิ์และเพื่อไม่ให้ตัวเลือกใบรับรองรก ควรใช้เพื่อเพิ่มพื้นที่เก็บข้อมูลใน Store ใบรับรอง
พารามิเตอร์
-
tokenId
สตริง
รหัสของโทเค็นที่
getTokens
แสดงผล -
ใบรับรอง
ArrayBuffer
การโค้ด DER ของใบรับรอง X.509
-
Callback
ฟังก์ชัน ไม่บังคับ
พารามิเตอร์
callback
จะมีลักษณะดังนี้() => void
การคืนสินค้า
-
Promise<void>
Chrome 131 ขึ้นไปไฟล์ Manifest เวอร์ชัน 3 ขึ้นไปรองรับ Promise แต่ก็มีคอลแบ็กไว้เพื่อให้ใช้กับเวอร์ชันก่อนหน้าได้ คุณใช้ทั้ง 2 รูปแบบในการเรียกใช้ฟังก์ชันเดียวกันไม่ได้ พรอมต์จะได้รับการแก้ไขด้วยประเภทเดียวกันกับที่ส่งไปยังการเรียกกลับ