chrome.platformKeys

Mô tả

Sử dụng API chrome.platformKeys để truy cập vào các 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ụ: điều này cho phép sử dụng các 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ỉ dành cho 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ỉ mà máy chủ cho phép. Mỗi mục phải là một X.509 DistinguishedName đượ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ủ. Hệ thống sẽ chỉ truy xuất những chứng chỉ thuộc loại có trong danh sách này. Tuy nhiên, nếu certificateTypes là danh sách trống, thì hệ thống sẽ trả về các chứng chỉ thuộc mọi loại.

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. Thông tin 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 sẽ 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ả các chứng chỉ từ các kho lưu trữ chứng chỉ của nền tảng có sẵn cho tiện ích này. Những 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 trình bày cho người dùng để chọn chứng chỉ theo cách thủ công, nhờ đó 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ẽ 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 (tự động hoặc theo cách thủ công).

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

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ủ đã trình bày 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, 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ành cho mục đích gỡ lỗi và có thể không chứa tất cả các lỗi có liên quan. Các lỗi được trả về có thể thay đổi trong các bản sửa đổi trong tương lai của API này và không đảm bảo khả năng tương thích tiến 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: đúng nếu có thể xác lập độ tin cậy cho thông tin xác minh đã cho và sai 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

Truyền cặp khoá của certificate để sử dụng với platformKeys.subtleCrypto đến 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ý/hàm băm ngoài các tham số do chính khoá cố định. 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 và EcKeyImportParams cho khoá EC. Ngoài ra, đối với các 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

      đố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 vào thông tin đó.

getKeyPairBySpki()

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

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

Thông số

  • publicKeySpkiDer

    ArrayBuffer

    SubjectPublicKeyInfo X.509 được mã hoá theo DER, chẳng hạn như nhận đượ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 những tham số được cố định theo 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 các khoá RSASSA-PKCS1-v1_5, chúng ta cũng cần truyền tham số "hash" { "hash": { "name": string } }. Tham số "hash" biểu thị tên của thuật toán băm sẽ được dùng trong thao tác chuỗi đại diện trước khi ký. Bạn có thể truyền "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 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 hỗ trợ thuật toán "ECDSA" có đường cong được đặt tên là P-256 và thuật toán "RSASSA-PKCS1-v1_5" có 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

      đố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 vào thông tin đó.

selectClientCertificates()

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

Phương thức này lọc từ danh sách chứng chỉ máy khách những chứng 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ỉ và khoá riêng tư của chứng chỉ. Nếu interactive là true, người dùng sẽ thấy một hộp thoại nơi 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ỉ. Các chứng chỉ máy khách đã chọn/được lọc sẽ được chuyển đến callback.

Thông số

Giá trị trả về

  • Promise<Match[]>

    Chrome 121 trở lên

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ỉ máy khách mà tiện ích này có thể truy cập.

Giá trị trả về

  • đối tượng | không xác định

verifyTLSServerCertificate()

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

Kiểm tra xem details.serverCertificateChain có thể được 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 chưa được chỉ định đầy đủ và có thể thay đổi trong tương lai. Việc 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 nhận và kiểm tra độ tin cậy của một CA đã biết. Quá trình triển khai này phải tuân thủ EKU serverAuth và hỗ trợ tên thay thế của chủ đề.

Thông số

Giá trị trả về