browser.platformKeys

說明

使用 chrome.platformKeys API 存取平台管理的用戶端憑證。如果使用者或政策授予權限,擴充功能就能在自訂驗證通訊協定中使用這類憑證。舉例來說,這可讓第三方 VPN 使用平台管理的憑證 (請參閱 chrome.vpnProvider)。

權限

platformKeys

可用性

Chrome 45 以上版本 Chrome 148 以上版本支援 browser.* 僅適用於 ChromeOS

類型

ClientCertificateRequest

屬性

  • certificateAuthorities

    ArrayBuffer[]

    伺服器允許的憑證授權單位辨別名稱清單。每個項目都必須是 DER 編碼的 X.509 DistinguishedName。

  • certificateTypes

    這個欄位會列出要求的憑證類型,並依伺服器的偏好順序排序。系統只會擷取這份清單中包含的憑證類型。不過,如果 certificateTypes 是空白清單,系統會傳回任何類型的憑證。

ClientCertificateType

列舉

"rsaSign"

"ecdsaSign"

Match

屬性

  • 憑證

    ArrayBuffer

    X.509 憑證的 DER 編碼。

  • keyAlgorithm

    物件

    認證金鑰的 KeyAlgorithm。其中包含憑證金鑰固有的演算法參數 (例如金鑰長度)。其他參數 (例如簽署函式使用的雜湊函式) 則不包含在內。

SelectDetails

屬性

  • clientCerts

    ArrayBuffer[] 選填

    如果提供,selectClientCertificates 會在這個清單上運作。否則,系統會從平台的憑證存放區取得這項擴充功能可用的所有憑證清單。如果擴充功能沒有權限或不符合要求,系統會移除該項目。

  • 互動

    布林值

    如果設為 true,系統會向使用者顯示篩選後的清單,讓使用者手動選取憑證,並授予擴充功能存取憑證和金鑰的權限。系統只會傳回所選憑證。如果為 false,清單會縮減為擴充功能已獲准存取 (自動或手動) 的所有憑證。

  • 系統只會傳回符合這項要求的憑證。

VerificationDetails

屬性

  • 主機名稱

    字串

    要驗證憑證的伺服器主機名稱,例如提供 serverCertificateChain 的伺服器。

  • serverCertificateChain

    ArrayBuffer[]

    每個鏈結項目都必須是 X.509 憑證的 DER 編碼,第一個項目必須是伺服器憑證,且每個項目都必須認證前一個項目。

VerificationResult

屬性

  • debug_errors

    string[]

    如果信任驗證失敗,這個陣列會包含基礎網路層回報的錯誤。否則,這個陣列會是空白。

    注意:這份清單僅供偵錯,可能未列出所有相關錯誤。這項 API 日後修訂時,傳回的錯誤可能會有所變更,且不保證向前或回溯相容。

  • 值得信任

    布林值

    信任驗證結果:如果可以建立指定驗證詳細資料的信任關係,則為 true;如果因任何原因拒絕信任關係,則為 false。

方法

getKeyPair()

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

將 certificate 的金鑰組傳遞給 callback,以便與 platformKeys.subtleCrypto 搭配使用。

參數

  • 憑證

    ArrayBuffer

    selectClientCertificates 傳回的 Match 憑證。

  • parameters

    物件

    除了金鑰本身固定的參數外,還會決定簽章/雜湊演算法參數。接受的參數與 WebCrypto 的 importKey 函式相同,例如 RSASSA-PKCS1-v1_5 金鑰的 RsaHashedImportParams 和 EC 金鑰的 EcKeyImportParams。此外,如果是 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 148 以上版本為 browser.*
browser.platformKeys.getKeyPairBySpki(
  publicKeySpkiDer: ArrayBuffer,
  parameters: object,
  callback: function,
)
: void

將 publicKeySpkiDer 識別的金鑰組傳遞給 callback,以便與 platformKeys.subtleCrypto 搭配使用。

參數

  • publicKeySpkiDer

    ArrayBuffer

    DER 編碼的 X.509 SubjectPublicKeyInfo,例如透過呼叫 WebCrypto 的 exportKey 函式 (format="spki") 取得。

  • parameters

    物件

    提供簽章和雜湊演算法參數,以及金鑰本身固定的參數。接受的參數與 WebCrypto 的 importKey 函式相同,例如 RSASSA-PKCS1-v1_5 金鑰的 RsaHashedImportParams。如果是 RSASSA-PKCS1-v1_5 金鑰,我們也需要傳遞「雜湊」參數 { "hash": { "name": string } }。「hash」參數代表簽署前,摘要作業要使用的雜湊演算法名稱。您可以將「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()

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

這個方法會從用戶端憑證清單中篩選出平台已知的憑證,這些憑證必須符合 request,且擴充功能有權存取憑證及其私密金鑰。如果 interactive 為 True,系統會顯示對話方塊,讓使用者從相符的憑證中選取,並授予擴充功能憑證存取權。系統會將所選/篩選出的用戶端憑證傳送至 callback。

參數

傳回

  • Promise<Match[]>

    Chrome 121 以上版本 Chrome 148 以上版本為 browser.*

subtleCrypto()

browser.platformKeys.subtleCrypto(): object | undefined

WebCrypto 的 SubtleCrypto 實作,可對這個擴充功能可用的用戶端憑證金鑰執行加密編譯作業。

傳回

  • object | undefined

verifyTLSServerCertificate()

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

根據平台的信任設定,檢查 details.serverCertificateChain 是否可信任 details.hostname。注意:信任驗證的實際行為並未完全指定,日後可能會有變動。API 實作會驗證憑證到期日、驗證憑證路徑,並檢查已知 CA 的信任。實作時應遵循 EKU serverAuth,並支援主體別名。

參數

傳回

  • Chrome 121 以上版本 Chrome 148 以上版本為 browser.*