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