дата обновления: 2026-09-25 robots: noindex
Описание
Используйте API chrome.platformKeys для доступа к клиентским сертификатам, управляемым платформой. Если пользователь или политика предоставляют разрешение, расширение может использовать такой сертификат в своем пользовательском протоколе аутентификации. Например, это позволяет использовать сертификаты, управляемые платформой, в VPN-сервисах третьих сторон (см. chrome.vpnProvider ).
Разрешения
platformKeysДоступность
Типы
ClientCertificateRequest
Характеристики
- центры сертификации
ArrayBuffer[]
Список отличительных имен центров сертификации, разрешенных сервером. Каждая запись должна представлять собой отличительное имя X.509 в кодировке DER.
- certificateTypes
В этом поле представлен список типов запрошенных сертификатов, отсортированных в порядке предпочтения сервера. Будут получены только сертификаты того типа, который содержится в этом списке. Однако если список
certificateTypesпуст, будут возвращены сертификаты любого типа.
ClientCertificateType
Перечисление
"rsaSign" "ecdsaSign"
Match
Характеристики
- сертификат
ArrayBuffer
Кодировка DER сертификата X.509.
- ключевой алгоритм
объект
Алгоритм ключа (KeyAlgorithm ) сертифицированного сертификата. Он содержит параметры алгоритма, присущие ключу сертификата (например, длина ключа). Другие параметры, такие как хеш-функция, используемая функцией подписи, не включены.
SelectDetails
Характеристики
- клиентские сертификаты
ArrayBuffer[] необязательный
Если параметр
selectClientCertificatesуказан, он работает с этим списком. В противном случае, он получает список всех сертификатов из хранилищ сертификатов платформы, доступных для данного расширения. Записи, к которым расширение не имеет доступа или которые не соответствуют запросу, удаляются. - интерактивный
логический
Если значение равно true, отфильтрованный список отображается пользователю для ручного выбора сертификата, что предоставляет расширению доступ к сертификату(ам) и ключу(ам). Будут возвращены только выбранные сертификаты. Если значение равно false, список сокращается до всех сертификатов, к которым расширению предоставлен доступ (автоматически или вручную).
Будут возвращены только сертификаты, соответствующие данному запросу.
VerificationDetails
Характеристики
- имя хоста
нить
Имя хоста сервера, для которого необходимо проверить сертификат, например, сервер, предоставивший
serverCertificateChain. - цепочка сертификатов сервера
ArrayBuffer[]
Каждая запись в цепочке должна представлять собой DER-кодировку сертификата X.509, первая запись должна быть сертификатом сервера, а каждая последующая запись должна подтверждать подлинность предыдущей.
VerificationResult
Характеристики
- debug_errors
нить[]
Если проверка доверия не удалась, этот массив содержит ошибки, сообщенные нижележащим сетевым уровнем. В противном случае этот массив пуст.
Примечание: Этот список предназначен только для отладки и может не содержать всех соответствующих ошибок. Возвращаемые ошибки могут измениться в будущих версиях этого API, и их совместимость с предыдущими или будущими версиями не гарантируется.
- доверенный
логический
Результат проверки доверия: true, если доверие к указанным данным проверки было установлено, и false, если доверие отклонено по какой-либо причине.
Методы
getKeyPair()
chrome.platformKeys.getKeyPair(
certificate: ArrayBuffer,
parameters: object,
callback: function,
): void
Передает пару ключей 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выглядит следующим образом:(publicKey: object, privateKey?: object) => void
- publicKey
объект
- закрытый ключ
объект необязательный
Значение может быть
nullесли данное расширение не имеет к нему доступа.
getKeyPairBySpki()
chrome.platformKeys.getKeyPairBySpki(
publicKeySpkiDer: ArrayBuffer,
parameters: object,
callback: function,
): void
Передает пару ключей, идентифицированную параметром publicKeySpkiDer , для использования с platformKeys.subtleCrypto в callback .
Параметры
- publicKeySpkiDer
ArrayBuffer
Закодированная в формате DER информация о публичном ключе субъекта X.509, полученная, например, путем вызова функции exportKey в WebCrypto с параметром format="spki".
- параметры
объект
Предоставляет параметры подписи и алгоритма хеширования в дополнение к тем, которые заданы самим ключом. Принимаются те же параметры, что и в функции importKey WebCrypto, например,
RsaHashedImportParamsдля ключа RSASSA-PKCS1-v1_5. Для ключей RSASSA-PKCS1-v1_5 необходимо также передать параметр "hash"{ "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выглядит следующим образом:(publicKey: object, privateKey?: object) => void
- publicKey
объект
- закрытый ключ
объект необязательный
Значение может быть
nullесли данное расширение не имеет к нему доступа.
selectClientCertificates()
chrome.platformKeys.selectClientCertificates(
details: SelectDetails,
callback?: function,
): Promise<Match[]>
Этот метод фильтрует из списка клиентских сертификатов те, которые известны платформе, соответствуют request и к которым расширение имеет разрешение на доступ, а также к их закрытому ключу. Если interactive имеет значение true, пользователю отображается диалоговое окно, где он может выбрать из соответствующих сертификатов и предоставить расширению доступ к сертификату. Выбранные/отфильтрованные клиентские сертификаты будут переданы в callback .
Параметры
- подробности
- перезвонить
функция необязательна
Параметр
callbackвыглядит следующим образом:(matches: Match[]) => void
- матчи
Список сертификатов, соответствующих запросу, на которые расширение имеет разрешение и, если
interactiveимеет значение true, которые были выбраны пользователем.
Возвраты
Обещание< Совпадение []>
Chrome 121+Поддержка промисов доступна только для Manifest V3 и более поздних версий; для других платформ необходимо использовать колбэки.
subtleCrypto()
chrome.platformKeys.subtleCrypto(): object | undefined
Реализация SubtleCrypto от WebCrypto, позволяющая выполнять криптографические операции с ключами клиентских сертификатов, доступных для этого расширения.
Возвраты
объект | неопределено
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
callback?: function,
): Promise<VerificationResult>
Проверяет, можно ли доверять details.serverCertificateChain для details.hostname в соответствии с настройками доверия платформы. Примечание: фактическое поведение проверки доверия не полностью определено и может измениться в будущем. Реализация API проверяет срок действия сертификата, подтверждает путь сертификации и проверяет доверие со стороны известного центра сертификации. Предполагается, что реализация учитывает serverAuth EKU и поддерживает альтернативные имена субъекта.
Параметры
- подробности
- перезвонить
функция необязательна
Параметр
callbackвыглядит следующим образом:(result: VerificationResult) => void
- результат
Возвраты
Promise< VerificationResult >
Chrome 121+Поддержка промисов доступна только для Manifest V3 и более поздних версий; для других платформ необходимо использовать колбэки.