คำอธิบาย
ใช้ chrome.platformKeys
API เพื่อเข้าถึงใบรับรองไคลเอ็นต์ที่แพลตฟอร์มจัดการ หากผู้ใช้หรือนโยบายให้สิทธิ์ ส่วนขยายจะใช้ใบรับรองดังกล่าวในโปรโตคอลการตรวจสอบสิทธิ์ที่กำหนดเองได้ เช่น การดำเนินการนี้จะอนุญาตให้ใช้ใบรับรองที่แพลตฟอร์มจัดการใน VPN ของบุคคลที่สาม (ดู chrome.vpnProvider)
สิทธิ์
platformKeys
ความพร้อมใช้งาน
ประเภท
ClientCertificateRequest
พร็อพเพอร์ตี้
- certificateAuthorities
ArrayBuffer[]
รายการชื่อเฉพาะของผู้ออกใบรับรองที่เซิร์ฟเวอร์อนุญาต แต่ละรายการต้องเป็น X.509 DistinguishedName ที่เข้ารหัส DER
- certificateTypes
ฟิลด์นี้คือรายการประเภทใบรับรองที่ขอ โดยเรียงตามลำดับที่เซิร์ฟเวอร์ต้องการ ระบบจะดึงเฉพาะใบรับรองประเภทที่อยู่ในรายการนี้ แต่หาก
certificateTypes
เป็นรายการว่าง ระบบจะแสดงผลใบรับรองทุกประเภท
ClientCertificateType
ค่าแจกแจง
"rsaSign"
"ecdsaSign"
Match
พร็อพเพอร์ตี้
- ใบรับรอง
ArrayBuffer
การเข้ารหัส DER ของใบรับรอง X.509
- keyAlgorithm
ออบเจ็กต์
KeyAlgorithm ของคีย์ที่ได้รับการรับรอง ซึ่งมีพารามิเตอร์ของอัลกอริทึมที่อยู่ในคีย์ของใบรับรอง (เช่น ความยาวของคีย์) ระบบจะไม่รวมพารามิเตอร์อื่นๆ เช่น ฟังก์ชันแฮชที่ฟังก์ชันการลงนามใช้
SelectDetails
พร็อพเพอร์ตี้
- clientCerts
ArrayBuffer[] ไม่บังคับ
หากระบุไว้
selectClientCertificates
จะทำงานในรายการนี้ หรือรับรายการใบรับรองทั้งหมดจากที่เก็บใบรับรองของแพลตฟอร์มที่ส่วนขยายนี้เข้าถึงได้ ระบบจะนำรายการที่ส่วนขยายไม่มีสิทธิ์หรือรายการที่ไม่ตรงกับคำขอออก - อินเทอร์แอกทีฟ
บูลีน
หากเป็นจริง ระบบจะแสดงรายการที่กรองแล้วต่อผู้ใช้เพื่อให้เลือกใบรับรองด้วยตนเอง ซึ่งจะเป็นการให้สิทธิ์ส่วนขยายเข้าถึงใบรับรองและคีย์ ระบบจะแสดงเฉพาะใบรับรองที่เลือก หากเป็นเท็จ ระบบจะลดรายการให้เหลือเฉพาะใบรับรองทั้งหมดที่ส่วนขยายได้รับสิทธิ์เข้าถึง (โดยอัตโนมัติหรือด้วยตนเอง)
- ส่งคำขอ
ระบบจะแสดงเฉพาะใบรับรองที่ตรงกับคำขอนี้
VerificationDetails
พร็อพเพอร์ตี้
- hostname
สตริง
ชื่อโฮสต์ของเซิร์ฟเวอร์ที่จะยืนยันใบรับรอง เช่น เซิร์ฟเวอร์ที่แสดง
serverCertificateChain
- serverCertificateChain
ArrayBuffer[]
รายการแต่ละรายการในเชนต้องเป็นการเข้ารหัส DER ของใบรับรอง X.509 รายการแรกต้องเป็นใบรับรองเซิร์ฟเวอร์ และแต่ละรายการต้องรับรองรายการก่อนหน้า
VerificationResult
พร็อพเพอร์ตี้
- debug_errors
string[]
หากการยืนยันความน่าเชื่อถือไม่สำเร็จ อาร์เรย์นี้จะมีข้อผิดพลาดที่เลเยอร์เครือข่ายพื้นฐานรายงาน ไม่เช่นนั้น อาร์เรย์นี้จะว่างเปล่า
หมายเหตุ: รายการนี้มีไว้สำหรับการแก้ไขข้อบกพร่องเท่านั้น และอาจไม่มีข้อผิดพลาดที่เกี่ยวข้องทั้งหมด ข้อผิดพลาดที่แสดงอาจมีการเปลี่ยนแปลงในการแก้ไข API นี้ในอนาคต และเราไม่รับประกันว่าข้อผิดพลาดดังกล่าวจะเข้ากันได้กับเวอร์ชันก่อนหน้าหรือเวอร์ชันต่อๆ ไป
- เชื่อถือได้
บูลีน
ผลลัพธ์ของการยืนยันความน่าเชื่อถือ: จริงหากสร้างความน่าเชื่อถือสำหรับรายละเอียดการยืนยันที่ระบุได้ และเท็จหากปฏิเสธความน่าเชื่อถือไม่ว่าด้วยเหตุผลใดก็ตาม
เมธอด
getKeyPair()
chrome.platformKeys.getKeyPair(
certificate: ArrayBuffer,
parameters: object,
callback: function,
): void
ส่งคู่คีย์ของ certificate
เพื่อใช้กับ platformKeys.subtleCrypto
ไปยัง callback
พารามิเตอร์
- ใบรับรอง
ArrayBuffer
ใบรับรองของ
Match
ที่selectClientCertificates
ส่งคืน - พารามิเตอร์
ออบเจ็กต์
กำหนดพารามิเตอร์อัลกอริทึมลายเซ็น/แฮชเพิ่มเติมจากพารามิเตอร์ที่คีย์กำหนดไว้ ระบบยอมรับพารามิเตอร์เดียวกันกับฟังก์ชัน importKey ของ WebCrypto เช่น
RsaHashedImportParams
สำหรับคีย์ RSASSA-PKCS1-v1_5 และEcKeyImportParams
สำหรับคีย์ EC นอกจากนี้ สำหรับคีย์ RSASSA-PKCS1-v1_5 คุณสามารถระบุพารามิเตอร์ชื่ออัลกอริทึมการแฮชด้วยค่าใดค่าหนึ่งต่อไปนี้ "none", "SHA-1", "SHA-256", "SHA-384" หรือ "SHA-512" เช่น{"hash": { "name": "none" } }
จากนั้นฟังก์ชันการลงนามจะใช้การเพิ่ม PKCS#1 v1.5 แต่จะไม่แฮชข้อมูลที่ระบุปัจจุบันวิธีนี้รองรับเฉพาะอัลกอริทึม "RSASSA-PKCS1-v1_5" และ "ECDSA"
- callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(publicKey: object, privateKey?: object) => void
- publicKey
ออบเจ็กต์
- privateKey
object ไม่บังคับ
อาจเป็น
null
หากส่วนขยายนี้ไม่มีสิทธิ์เข้าถึง
-
getKeyPairBySpki()
chrome.platformKeys.getKeyPairBySpki(
publicKeySpkiDer: ArrayBuffer,
parameters: object,
callback: function,
): void
ส่งคู่คีย์ที่ระบุโดย publicKeySpkiDer
เพื่อใช้กับ platformKeys.subtleCrypto
ไปยัง callback
พารามิเตอร์
- publicKeySpkiDer
ArrayBuffer
SubjectPublicKeyInfo ของ X.509 ที่เข้ารหัส DER ซึ่งได้มาจากการเรียกใช้ฟังก์ชัน exportKey ของ WebCrypto ด้วย format="spki" เป็นต้น
- พารามิเตอร์
ออบเจ็กต์
ระบุพารามิเตอร์ลายเซ็นและอัลกอริทึมแฮช นอกเหนือจากพารามิเตอร์ที่คีย์กำหนดไว้ ระบบจะยอมรับพารามิเตอร์เดียวกันกับฟังก์ชัน importKey ของ WebCrypto เช่น
RsaHashedImportParams
สำหรับคีย์ RSASSA-PKCS1-v1_5 สำหรับคีย์ RSASSA-PKCS1-v1_5 เราต้องส่งพารามิเตอร์ "hash"{ "hash": { "name": string } }
ด้วย พารามิเตอร์ "hash" แสดงชื่อของอัลกอริทึมการแฮชที่จะใช้ในการดำเนินการไดเจสต์ก่อนเครื่องหมาย คุณสามารถส่ง "none" เป็นชื่อแฮชได้ ในกรณีนี้ ฟังก์ชันการลงนามจะใช้การเพิ่มแพดดิ้ง PKCS#1 v1.5 แต่จะไม่แฮชข้อมูลที่ระบุปัจจุบันวิธีนี้รองรับอัลกอริทึม "ECDSA" ที่มีเส้นโค้งชื่อ P-256 และอัลกอริทึม "RSASSA-PKCS1-v1_5" ที่มีอัลกอริทึมการแฮชอย่างใดอย่างหนึ่งต่อไปนี้ "none", "SHA-1", "SHA-256", "SHA-384" และ "SHA-512"
- callback
ฟังก์ชัน
พารามิเตอร์
callback
มีลักษณะดังนี้(publicKey: object, privateKey?: object) => void
- publicKey
ออบเจ็กต์
- privateKey
object ไม่บังคับ
อาจเป็น
null
หากส่วนขยายนี้ไม่มีสิทธิ์เข้าถึง
-
selectClientCertificates()
chrome.platformKeys.selectClientCertificates(
details: SelectDetails,
): Promise<Match[]>
วิธีนี้จะกรองใบรับรองไคลเอ็นต์จากรายการใบรับรองที่แพลตฟอร์มรู้จัก ซึ่งตรงกับ request
และส่วนขยายมีสิทธิ์เข้าถึงใบรับรองและคีย์ส่วนตัว หาก interactive
เป็นจริง ระบบจะแสดงกล่องโต้ตอบให้ผู้ใช้เลือกจากใบรับรองที่ตรงกันและให้สิทธิ์ส่วนขยายในการเข้าถึงใบรับรอง ระบบจะส่งใบรับรองไคลเอ็นต์ที่เลือก/กรองแล้วไปยัง callback
พารามิเตอร์
- รายละเอียด
การคืนสินค้า
-
Promise<Match[]>
Chrome 121 ขึ้นไป
subtleCrypto()
chrome.platformKeys.subtleCrypto(): object | undefined
การใช้งาน SubtleCrypto ของ WebCrypto ที่อนุญาตให้ดำเนินการเข้ารหัสลับในคีย์ของใบรับรองไคลเอ็นต์ที่ส่วนขยายนี้ใช้ได้
การคืนสินค้า
-
object | undefined
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
): Promise<VerificationResult>
ตรวจสอบว่า details.serverCertificateChain
เชื่อถือได้สำหรับ details.hostname
ตามการตั้งค่าความน่าเชื่อถือของแพลตฟอร์มหรือไม่ หมายเหตุ: ลักษณะการทำงานที่แท้จริงของการยืนยันความน่าเชื่อถือไม่ได้ระบุไว้อย่างครบถ้วนและอาจเปลี่ยนแปลงได้ในอนาคต การติดตั้งใช้งาน API จะตรวจสอบการหมดอายุของใบรับรอง ตรวจสอบเส้นทางการรับรอง และตรวจสอบความน่าเชื่อถือโดย CA ที่รู้จัก การติดตั้งใช้งานควรเป็นไปตาม EKU serverAuth และรองรับชื่อสำรองของเรื่อง
พารามิเตอร์
- รายละเอียด
การคืนสินค้า
-
Promise<VerificationResult>
Chrome 121 ขึ้นไป