chrome.platformKeys

คำอธิบาย

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

สิทธิ์

platformKeys

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

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

ประเภท

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 เวอร์ชัน 85 ขึ้นไป
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

พารามิเตอร์

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

    ฟังก์ชัน ไม่บังคับ

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

    (matches: Match[])=>void

    • ตรงกัน

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

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

  • 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

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

  • Chrome 121 ขึ้นไป

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