chrome.platformKeys

Mô tả

Sử dụng API chrome.platformKeys để truy cập vào các chứng chỉ máy khách 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 một chứng chỉ đó trong giao thức xác thực tuỳ chỉnh. Ví dụ: điều 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 phân biệt của 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 X.509 analyzeedName được mã hoá theo 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ự lựa chọn ưu tiên của máy chủ. Chỉ các 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ì hệ thống sẽ trả về chứng chỉ thuộc bất kỳ loại nào.

ClientCertificateType

Enum

"rsaSign"

"ecdsaSign"

Match

Thuộc tính

  • chứng nhận

    ArrayBuffer

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

  • keyAlgorithm

    đối tượng

    KeyAlgorithm của khoá được chứng nhận. Đối tượng này chứa các tham số thuật toán vốn có của 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 bao gồm.

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, lấy danh sách tất cả chứng chỉ từ kho lưu trữ chứng chỉ của nền tảng có sẵn cho tiện ích này. Các mục nhập mà tiện ích không có quyền hoặc không phù hợp với yêu cầu sẽ bị xoá.

  • tương tác

    boolean

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

  • Hệ thống chỉ trả về các chứng chỉ khớp với yêu cầu này.

VerificationDetails

Thuộc tính

  • hostname

    string

    Tên máy chủ của máy chủ cần xác minh chứng chỉ, ví dụ: máy chủ hiển thị 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

    chuỗi[]

    Nếu quá trình xác minh tin cậy không thành công, mảng này sẽ chứa các lỗi được 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ả lỗi có liên quan. 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 chuyển tiếp hay tương thích ngược.

  • đáng tin cậy

    boolean

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

Phương thức

getKeyPair()

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

Truyền cặp khoá certificate để sử dụng với platformKeys.subtleCrypto đến callback.

Tham số

  • chứng nhận

    ArrayBuffer

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

  • thông số

    đối tượng

    Xác định tham số thuật toán chữ ký/băm bổ sung cho các tham số do chính khoá cố định. Các tham số giống như các tham số được hàm importKey của WebCrypto chấp nhận, 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 v1.5 nhưng không băm dữ liệu đã cho.

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

  • số gọi lại

    hàm

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

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

    • publicKey

      đối tượng

    • privateKey

      đối tượng 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.

getKeyPairBySpki()

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

Truyền cặp khoá do publicKeySpkiDer xác định để sử dụng với platformKeys.subtleCrypto sang callback.

Tham số

  • publicKeySpkiDer

    ArrayBuffer

    X.509 SubjectPublicKeyInfo được mã hoá theo DER, thu được, ví dụ: bằng cách gọi hàm exportKey của WebCrypto với định dạng="spki".

  • thông số

    đối tượng

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

    Hiện tại, phương thức này hỗ trợ "ECDSA" thuật toán với đường cong được đặt tên P-256 và "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".

  • số gọi lại

    hàm

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

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

    • publicKey

      đối tượng

    • privateKey

      đối tượng 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.

selectClientCertificates()

Lời hứa
chrome.platformKeys.selectClientCertificates(
  details: SelectDetails,
  callback?: function,
)

Phương thức này lọc khỏi danh sách chứng chỉ ứng dụng (các chứng chỉ ứng dụng được nền tảng biết đến), so khớp request và tiện ích có quyền truy cập vào chứng chỉ và khoá riêng tư của chứng chỉ đó. Nếu interactive đúng, người dùng sẽ thấy một hộp thoại trong đó họ có thể 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ỉ này. Các chứng chỉ ứng dụng đã chọn/được lọc sẽ được chuyển tới callback.

Tham số

  • chi tiết
  • số gọi lại

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

    Tham số callback sẽ 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 và nếu interactive là true, thì tiện ích cũng đã chọn quyền.

Giá trị trả về

  • Cam kết<Match[]>

    Chrome 121 trở lên

    Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.

subtleCrypto()

chrome.platformKeys.subtleCrypto()

Việc triển khai SubtleCrypto của WebCrypto, cho phép các hoạt động mã hoá trên các 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 | chưa xác định

verifyTLSServerCertificate()

Lời hứa
chrome.platformKeys.verifyTLSServerCertificate(
  details: VerificationDetails,
  callback?: function,
)

Kiểm tra xem details.serverCertificateChain có thể là đá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 quá trình xác minh tin cậy chưa được chỉ định đầy đủ và có thể thay đổi trong tương lai. Quy trình triển khai API xác minh thời hạn của chứng chỉ, xác thực đường dẫn chứng nhận và kiểm tra độ tin cậy của một CA đã biết. Quá trình triển khai cần tuân thủ EKU serverAuth và hỗ trợ các tên thay thế của chủ đề.

Tham số

Giá trị trả về

  • Promise&lt;VerificationResult&gt;

    Chrome 121 trở lên

    Lời hứa được hỗ trợ trong Manifest V3 trở lên nhưng lệnh gọi lại được cung cấp cho khả năng tương thích ngược. Bạn không thể sử dụng cả hai trong cùng một lệnh gọi hàm. Chiến lược phát hành đĩa đơn Promise phân giải cùng loại được truyền đến lệnh gọi lại.