chrome.platformKeys

refresh date: 2026-09-25 robots: noindex

Mô tả

Sử dụng API chrome.platformKeys để truy cập vào chứng chỉ ứng dụng do nền tảng quản lý. Nếu người dùng hoặc chính sách cấp quyền, thì tiện ích có thể sử dụng chứng chỉ đó trong giao thức xác thực tuỳ chỉnh. Ví dụ: chế độ này cho phép sử dụng chứng chỉ do nền tảng quản lý trong VPN của bên thứ ba (xem chrome.vpnProvider).

Quyền

platformKeys

Phạm vi cung cấp

Chrome 45 trở lên Chỉ ChromeOS

Loại

ClientCertificateRequest

Thuộc tính

  • certificateAuthorities

    ArrayBuffer[]

    Danh sách tên riêng biệt của các tổ chức phát hành chứng chỉ được máy chủ cho phép. Mỗi mục nhập phải là một DistinguishedName X.509 được mã hoá DER.

  • certificateTypes

    Trường này là danh sách các loại chứng chỉ được yêu cầu, được sắp xếp theo thứ tự ưu tiên của máy chủ. Chỉ những chứng chỉ thuộc loại có trong danh sách này mới được truy xuất. Tuy nhiên, nếu certificateTypes là danh sách trống, thì chứng chỉ thuộc bất kỳ loại nào cũng sẽ được trả về.

ClientCertificateType

Enum

"rsaSign"

"ecdsaSign"

Match

Thuộc tính

  • chứng chỉ

    ArrayBuffer

    Mã hoá DER của chứng chỉ X.509.

  • keyAlgorithm

    đối tượng

    KeyAlgorithm của khoá được chứng nhận. Thuộc tính này chứa các tham số thuật toán vốn có trong khoá của chứng chỉ (ví dụ: độ dài khoá). Các tham số khác như hàm băm mà hàm ký sử dụng không được đưa vào.

SelectDetails

Thuộc tính

  • clientCerts

    ArrayBuffer[] không bắt buộc

    Nếu được cung cấp, selectClientCertificates sẽ hoạt động trên danh sách này. Nếu không, hãy lấy danh sách tất cả chứng chỉ từ kho chứng chỉ của nền tảng mà tiện ích này có thể sử dụng. Các mục mà tiện ích không có quyền truy cập hoặc không khớp với yêu cầu sẽ bị xoá.

  • tương tác

    boolean

    Nếu đúng, danh sách đã lọc sẽ được hiển thị cho người dùng để chọn chứng chỉ theo cách thủ công, từ đó cấp cho tiện ích quyền truy cập vào(các) chứng chỉ và(các) khoá. Chỉ(các) chứng chỉ đã chọn mới được trả về. Nếu là false, danh sách sẽ được giảm xuống còn tất cả chứng chỉ mà tiện ích đã được cấp quyền truy cập (tự động hoặc thủ công).

  • Chỉ những chứng chỉ khớp với yêu cầu này mới được trả về.

VerificationDetails

Thuộc tính

  • hostname

    chuỗi

    Tên máy chủ của máy chủ để xác minh chứng chỉ, ví dụ: máy chủ đã cung cấp serverCertificateChain.

  • serverCertificateChain

    ArrayBuffer[]

    Mỗi mục nhập chuỗi phải là mã hoá DER của chứng chỉ X.509, mục nhập đầu tiên phải là chứng chỉ máy chủ và mỗi mục nhập phải chứng nhận mục nhập trước đó.

VerificationResult

Thuộc tính

  • debug_errors

    string[]

    Nếu quá trình xác minh độ tin cậy không thành công, thì mảng này sẽ chứa các lỗi do lớp mạng cơ bản báo cáo. Nếu không, mảng này sẽ trống.

    Lưu ý: Danh sách này chỉ dùng để gỡ lỗi và có thể không chứa tất cả các lỗi liên quan. Các lỗi được trả về có thể thay đổi trong các bản sửa đổi sau này của API này và không được đảm bảo là tương thích xuôi hoặc tương thích ngược.

  • đáng tin cậy

    boolean

    Kết quả của quy trình xác minh độ tin cậy: true nếu có thể thiết lập độ tin cậy cho thông tin xác minh đã cho và false nếu độ tin cậy bị từ chối vì bất kỳ lý do nào.

Phương thức

getKeyPair()

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

Chuyển cặp khoá của certificate để sử dụng với platformKeys.subtleCrypto cho callback.

Thông số

  • chứng chỉ

    ArrayBuffer

    Chứng chỉ của Match do selectClientCertificates trả về.

  • tham số

    đối tượng

    Xác định các tham số thuật toán chữ ký/băm ngoài các tham số do chính khoá đó cố định. Các tham số được chấp nhận giống như hàm importKey của WebCrypto, ví dụ: RsaHashedImportParams cho khoá RSASSA-PKCS1-v1_5 và EcKeyImportParams cho khoá EC. Ngoài ra, đối với khoá RSASSA-PKCS1-v1_5, bạn có thể chỉ định tham số tên thuật toán băm bằng một trong các giá trị sau: "none", "SHA-1", "SHA-256", "SHA-384" hoặc "SHA-512", ví dụ: {"hash": { "name": "none" } }. Sau đó, hàm ký sẽ áp dụng khoảng đệm PKCS#1 phiên bản 1.5 nhưng không băm dữ liệu đã cho.

    Hiện tại, phương thức này chỉ hỗ trợ các thuật toán "RSASSA-PKCS1-v1_5" và "ECDSA".

  • callback

    hàm

    Tham số callback có dạng như sau:

    (publicKey: object, privateKey?: object) => void

    • publicKey

      đối tượng

    • privateKey

      object không bắt buộc

      Có thể là null nếu tiện ích này không có quyền truy cập vào tiện ích đó.

getKeyPairBySpki()

Chrome 85 trở lên
chrome.platformKeys.getKeyPairBySpki(
  publicKeySpkiDer: ArrayBuffer,
  parameters: object,
  callback: function,
)
: void

Chuyển cặp khoá được xác định bằng publicKeySpkiDer để sử dụng với platformKeys.subtleCrypto cho callback.

Thông số

  • publicKeySpkiDer

    ArrayBuffer

    SubjectPublicKeyInfo X.509 được mã hoá DER, thu được bằng cách gọi hàm exportKey của WebCrypto với format="spki".

  • tham số

    đối tượng

    Cung cấp các tham số thuật toán băm và chữ ký, ngoài các tham số được cố định bằng chính khoá đó. Các tham số tương tự được chấp nhận như hàm importKey của WebCrypto, ví dụ: RsaHashedImportParams cho khoá RSASSA-PKCS1-v1_5. Đối với khoá RSASSA-PKCS1-v1_5, chúng ta cũng cần truyền tham số "băm" { "hash": { "name": string } }. Tham số "băm" đại diện cho tên của thuật toán băm sẽ được sử dụng trong thao tác tóm tắt trước khi ký. Bạn có thể truyền "none" làm tên hàm băm, trong trường hợp đó, hàm ký sẽ áp dụng khoảng đệm PKCS#1 v1.5 nhưng không băm dữ liệu đã cho.

    Hiện tại, phương thức này hỗ trợ thuật toán "ECDSA" với đường cong có tên P-256 và thuật toán "RSASSA-PKCS1-v1_5" với một trong các thuật toán băm "none", "SHA-1", "SHA-256", "SHA-384" và "SHA-512".

  • callback

    hàm

    Tham số callback có dạng như sau:

    (publicKey: object, privateKey?: object) => void

    • publicKey

      đối tượng

    • privateKey

      object không bắt buộc

      Có thể là null nếu tiện ích này không có quyền truy cập vào tiện ích đó.

selectClientCertificates()

Promise
chrome.platformKeys.selectClientCertificates(
  details: SelectDetails,
  callback?: function,
)
: Promise<Match[]>

Phương thức này lọc ra những chứng chỉ máy khách mà nền tảng biết, khớp với request và tiện ích có quyền truy cập vào chứng chỉ cũng như khoá riêng tư của chứng chỉ đó. Nếu interactive là true, thì người dùng sẽ thấy một hộp thoại để chọn trong số các chứng chỉ phù hợp và cấp cho tiện ích quyền truy cập vào chứng chỉ. Các chứng chỉ máy khách được chọn/lọc sẽ được chuyển đến callback.

Thông số

  • chi tiết
  • callback

    hàm không bắt buộc

    Tham số callback có dạng như sau:

    (matches: Match[]) => void

    • khớp với

      Danh sách chứng chỉ khớp với yêu cầu mà tiện ích có quyền truy cập và được người dùng chọn (nếu interactive là true).

Giá trị trả về

  • Promise<Match[]>

    Chrome 121 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.

subtleCrypto()

chrome.platformKeys.subtleCrypto(): object | undefined

Một cách triển khai SubtleCrypto của WebCrypto cho phép các thao tác mã hoá trên khoá của chứng chỉ ứng dụng khách có sẵn cho tiện ích này.

Giá trị trả về

  • object | undefined

verifyTLSServerCertificate()

Promise
chrome.platformKeys.verifyTLSServerCertificate(
  details: VerificationDetails,
  callback?: function,
)
: Promise<VerificationResult>

Kiểm tra xem details.serverCertificateChain có đáng tin cậy cho details.hostname hay không theo chế độ cài đặt tin cậy của nền tảng. Lưu ý: Hành vi thực tế của quy trình xác minh độ tin cậy không được chỉ định đầy đủ và có thể thay đổi trong tương lai. Quá trình triển khai API sẽ xác minh thời hạn của chứng chỉ, xác thực đường dẫn chứng chỉ và kiểm tra độ tin cậy của một CA đã biết. Quá trình triển khai phải tuân thủ serverAuth EKU và hỗ trợ tên thay thế của chủ thể.

Thông số

Giá trị trả về

  • Chrome 121 trở lên

    Lời hứa chỉ được hỗ trợ cho Manifest V3 trở lên, các nền tảng khác cần sử dụng lệnh gọi lại.