browser.platformKeys

คำอธิบาย

ใช้ chrome.platformKeys API เพื่อเข้าถึงใบรับรองไคลเอ็นต์ที่จัดการโดยแพลตฟอร์ม หากผู้ใช้หรือนโยบายให้สิทธิ์ ส่วนขยายจะใช้ใบรับรองดังกล่าวในโปรโตคอลการตรวจสอบสิทธิ์ที่กำหนดเองได้ เช่น การตั้งค่านี้จะอนุญาตให้ใช้ใบรับรองที่จัดการโดยแพลตฟอร์มใน VPN ของบุคคลที่สาม (ดู chrome.vpnProvider)

สิทธิ์

platformKeys

ความพร้อมใช้งาน

Chrome 45 ขึ้นไป browser.* ตั้งแต่ Chrome 148 ChromeOS เท่านั้น

ประเภท

ClientCertificateRequest

พร็อพเพอร์ตี้

  • certificateAuthorities

    ArrayBuffer[]

    รายการชื่อเฉพาะของผู้ออกใบรับรองที่เซิร์ฟเวอร์อนุญาต แต่ละรายการต้องเป็น DistinguishedName ของ X.509 ที่เข้ารหัส DER

  • certificateTypes

    ฟิลด์นี้เป็นรายการประเภทของใบรับรองที่ขอ โดยจัดเรียงตามลำดับความต้องการของเซิร์ฟเวอร์ ระบบจะดึงเฉพาะใบรับรองประเภทที่อยู่ในรายการนี้เท่านั้น อย่างไรก็ตาม หาก certificateTypes เป็นรายการว่าง ระบบจะแสดงผลใบรับรองทุกประเภท

ClientCertificateType

ค่าแจกแจง

"rsaSign"

"ecdsaSign"

Match

พร็อพเพอร์ตี้

  • ใบรับรอง

    ArrayBuffer

    การเข้ารหัส DER ของใบรับรอง X.509

  • keyAlgorithm

    ออบเจ็กต์

    KeyAlgorithm ของคีย์ที่ได้รับการรับรอง ซึ่งมีพารามิเตอร์อัลกอริทึมที่ติดมากับคีย์ของใบรับรอง (เช่น ความยาวคีย์) แต่จะไม่รวมพารามิเตอร์อื่นๆ เช่น ฟังก์ชันแฮชที่ใช้โดยฟังก์ชัน Sign

SelectDetails

พร็อพเพอร์ตี้

  • clientCerts

    ArrayBuffer[] ไม่บังคับ

    หากระบุ selectClientCertificates จะดำเนินการกับรายการนี้ ไม่เช่นนั้น ระบบจะรับรายการใบรับรองทั้งหมดจากที่เก็บใบรับรองของแพลตฟอร์มที่ส่วนขยายนี้ใช้ได้ ระบบจะนำรายการที่ส่วนขยายไม่มีสิทธิ์หรือรายการที่ไม่ตรงกับคำขอออก

  • อินเทอร์แอกทีฟ

    บูลีน

    หากเป็น "จริง" ระบบจะแสดงรายการที่กรองแล้วให้ผู้ใช้เลือกใบรับรองด้วยตนเอง ซึ่งจะเป็นการให้สิทธิ์เข้าถึงใบรับรองและคีย์แก่ส่วนขยาย ระบบจะแสดงเฉพาะใบรับรองที่เลือกเท่านั้น หากเป็นเท็จ รายการจะลดลงเหลือเฉพาะใบรับรองทั้งหมดที่ส่วนขยายได้รับสิทธิ์เข้าถึง (โดยอัตโนมัติหรือด้วยตนเอง)

  • ส่งคำขอ

    ระบบจะแสดงเฉพาะใบรับรองที่ตรงกับคำขอนี้เท่านั้น

VerificationDetails

พร็อพเพอร์ตี้

  • hostname

    สตริง

    ชื่อโฮสต์ของเซิร์ฟเวอร์ที่จะยืนยันใบรับรอง เช่น เซิร์ฟเวอร์ที่แสดง serverCertificateChain

  • serverCertificateChain

    ArrayBuffer[]

    รายการเชนแต่ละรายการต้องเป็นการเข้ารหัส DER ของใบรับรอง X.509 โดยรายการแรกต้องเป็นใบรับรองเซิร์ฟเวอร์ และแต่ละรายการต้องรับรองรายการที่อยู่ก่อนหน้า

VerificationResult

พร็อพเพอร์ตี้

  • debug_errors

    string[]

    หากการยืนยันความน่าเชื่อถือไม่สำเร็จ อาร์เรย์นี้จะมีข้อผิดพลาดที่รายงานโดยเลเยอร์เครือข่ายที่เกี่ยวข้อง ไม่เช่นนั้น อาร์เรย์นี้จะว่างเปล่า

    หมายเหตุ: รายการนี้มีไว้สำหรับการแก้ไขข้อบกพร่องเท่านั้น และอาจไม่มีข้อผิดพลาดที่เกี่ยวข้องทั้งหมด ข้อผิดพลาดที่แสดงผลอาจมีการเปลี่ยนแปลงในการแก้ไข API นี้ในอนาคต และไม่รับประกันว่าจะเข้ากันได้แบบย้อนหลังหรือแบบส่งต่อ

  • เชื่อถือได้

    บูลีน

    ผลลัพธ์ของการยืนยันความน่าเชื่อถือ: เป็นจริงหากสามารถสร้างความน่าเชื่อถือสำหรับรายละเอียดการยืนยันที่ระบุได้ และเป็นเท็จหากความน่าเชื่อถือถูกปฏิเสธไม่ว่าด้วยเหตุผลใดก็ตาม

เมธอด

getKeyPair()

browser.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 85 ขึ้นไป browser.* ตั้งแต่ Chrome 148
browser.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()

browser.platformKeys.selectClientCertificates(
  details: SelectDetails,
)
: Promise<Match[]>

วิธีนี้จะกรองจากรายการใบรับรองไคลเอ็นต์ที่แพลตฟอร์มรู้จัก ตรงกับ request และส่วนขยายมีสิทธิ์เข้าถึงใบรับรองและคีย์ส่วนตัว หาก interactive เป็น "จริง" ระบบจะแสดงกล่องโต้ตอบที่ผู้ใช้สามารถเลือกจากใบรับรองที่ตรงกันและให้สิทธิ์เข้าถึงใบรับรองแก่ส่วนขยายได้ ระบบจะส่งใบรับรองไคลเอ็นต์ที่เลือก/กรองไปยัง callback

พารามิเตอร์

การคืนสินค้า

  • Promise<Match[]>

    Chrome 121 ขึ้นไป browser.* ตั้งแต่ Chrome 148

subtleCrypto()

browser.platformKeys.subtleCrypto(): object | undefined

การใช้งาน SubtleCrypto ของ WebCrypto ที่อนุญาตให้ดำเนินการเข้ารหัสในคีย์ของใบรับรองไคลเอ็นต์ที่ใช้ได้กับส่วนขยายนี้

การคืนสินค้า

  • object | undefined

verifyTLSServerCertificate()

browser.platformKeys.verifyTLSServerCertificate(
  details: VerificationDetails,
)
: Promise<VerificationResult>

ตรวจสอบว่า details.serverCertificateChain เชื่อถือได้สำหรับ details.hostname หรือไม่ตามการตั้งค่าความน่าเชื่อถือของแพลตฟอร์ม หมายเหตุ: ลักษณะการทำงานจริงของการยืนยันความน่าเชื่อถือไม่ได้ระบุไว้อย่างสมบูรณ์และอาจมีการเปลี่ยนแปลงในอนาคต การติดตั้งใช้งาน API จะยืนยันการหมดอายุของใบรับรอง ตรวจสอบเส้นทางการรับรอง และตรวจสอบความน่าเชื่อถือโดย CA ที่รู้จัก การติดตั้งใช้งานควรเป็นไปตาม EKU serverAuth และรองรับชื่อสำรองของหัวเรื่อง

พารามิเตอร์

การคืนสินค้า

  • Chrome 121 ขึ้นไป browser.* ตั้งแต่ Chrome 148