chrome.platformKeys

คำอธิบาย

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

สิทธิ์

platformKeys

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

Chrome 45 ขึ้นไป ChromeOS เท่านั้น

ประเภท

ClientCertificateRequest

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

  • certificateAuthorities

    ArrayBuffer[]

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

  • certificateTypes

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

ClientCertificateType

ค่าแจกแจง

"rsaSign"

"ecdsaSign"

Match

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

  • ใบรับรอง

    อาร์เรย์บัฟเฟอร์

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

  • keyAlgorithm

    ออบเจ็กต์

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

SelectDetails

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

  • clientCerts

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

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

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

    boolean

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

  • ส่งคำขอ

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

VerificationDetails

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

  • hostname

    สตริง

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

  • serverCertificateChain

    ArrayBuffer[]

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

VerificationResult

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

  • debug_errors

    สตริง[]

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

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

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

    boolean

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

เมธอด

getKeyPair()

chrome.platformKeys.getKeyPair(
  certificate: ArrayBuffer,
  parameters: object,
  callback: function,
)

ส่งต่อคู่คีย์ของ certificate เพื่อใช้กับ platformKeys.subtleCrypto ไปยัง callback

พารามิเตอร์

  • ใบรับรอง

    อาร์เรย์บัฟเฟอร์

    ใบรับรองของ 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 เวอร์ชัน 85 ขึ้นไป
chrome.platformKeys.getKeyPairBySpki(
  publicKeySpkiDer: ArrayBuffer,
  parameters: object,
  callback: function,
)

ส่งคู่คีย์ที่ระบุโดย publicKeySpkiDer เพื่อใช้กับ platformKeys.subtleCrypto ไปยัง callback

พารามิเตอร์

  • publicKeySpkiDer

    อาร์เรย์บัฟเฟอร์

    ได้รับ 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" อัลกอริทึมที่มีชื่อโค้ง 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

พารามิเตอร์

  • รายละเอียด
  • Callback

    ไม่บังคับ

    พารามิเตอร์ callback มีลักษณะดังนี้

    (matches: Match[]) => void

    • ตรงกับ

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

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

  • สัญญา<การจับคู่[]>

    Chrome 121 ขึ้นไป

    รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback

subtleCrypto()

chrome.platformKeys.subtleCrypto()

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

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

  • object | ไม่ได้กำหนด

verifyTLSServerCertificate()

สัญญา
chrome.platformKeys.verifyTLSServerCertificate(
  details: VerificationDetails,
  callback?: function,
)

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

พารามิเตอร์

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

  • Promise&lt;VerificationResult&gt;

    Chrome 121 ขึ้นไป

    รองรับคำสัญญาในไฟล์ Manifest V3 ขึ้นไป แต่จะมี Callback สำหรับ ความเข้ากันได้แบบย้อนหลัง คุณไม่สามารถใช้ทั้ง 2 อย่างในการเรียกใช้ฟังก์ชันเดียวกันได้ จะมีการแก้ไขด้วยประเภทเดียวกันที่ส่งไปยัง Callback