refresh date: 2026-09-25 robots: noindex
Описание
Используйте API chrome.platformKeys, чтобы получить доступ к сертификатам клиента, управляемым платформой. Если пользователь или правило предоставляет разрешение, расширение может использовать такой сертификат в своем пользовательском протоколе аутентификации. Например, это позволяет использовать управляемые платформой сертификаты в сторонних VPN (см. chrome.vpnProvider).
Разрешения
platformKeysДоступность
Типы
ClientCertificateRequest
Свойства
-
certificateAuthorities
ArrayBuffer[]
Список уникальных имен центров сертификации, разрешенных сервером. Каждая запись должна быть DistinguishedName X.509 в кодировке DER.
-
certificateTypes
Это поле содержит список типов запрашиваемых сертификатов, отсортированных в порядке предпочтения сервера. Будут получены только сертификаты, тип которых указан в этом списке. Если список
certificateTypesпуст, будут возвращены сертификаты всех типов.
ClientCertificateType
Перечисление
"rsaSign"
"ecdsaSign"
Match
Свойства
-
сертификат
ArrayBuffer
Кодировка DER сертификата X.509.
-
keyAlgorithm
Объект
KeyAlgorithm сертифицированного ключа. Содержит параметры алгоритма, присущие ключу сертификата (например, длину ключа). Другие параметры, например хеш-функция, используемая функцией подписи, не включаются.
SelectDetails
Свойства
-
clientCerts
ArrayBuffer[] необязательный
Если он указан,
selectClientCertificatesработает с этим списком. В противном случае расширение получает список всех сертификатов из хранилищ сертификатов платформы, доступных для этого расширения. Записи, на которые у расширения нет разрешения или которые не соответствуют запросу, удаляются. -
интерактивный
Логическое значение
Если задано значение True, пользователю будет показан отфильтрованный список, из которого он сможет вручную выбрать сертификат и тем самым предоставить расширению доступ к сертификатам и ключам. Будут возвращены только выбранные сертификаты. Если задано значение False, в списке остаются только сертификаты, к которым расширению предоставлен доступ (автоматически или вручную).
-
запрос
Будут возвращены только сертификаты, соответствующие этому запросу.
VerificationDetails
Свойства
-
hostname
string
Имя хоста сервера, для которого нужно проверить сертификат, например сервера, предоставившего
serverCertificateChain. -
serverCertificateChain
ArrayBuffer[]
Каждая запись в цепочке должна быть закодирована по стандарту DER сертификата X.509. Первая запись должна быть сертификатом сервера, а каждая последующая запись должна подтверждать предыдущую.
VerificationResult
Свойства
-
debug_errors
string[]
Если проверка доверия не удалась, этот массив содержит ошибки, о которых сообщил базовый сетевой уровень. В противном случае массив будет пустым.
Примечание. Этот список предназначен только для отладки и может не содержать всех ошибок. Возвращаемые ошибки могут измениться в будущих версиях этого 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.
-
обратный вызов
function
Параметр
callbackвыглядит следующим образом:(publicKey: object, privateKey?: object) => void
-
publicKey
Объект
-
privateKey
Объект (необязательно)
Если у расширения нет доступа к URL, значением будет
null.
-
getKeyPairBySpki()
chrome.platformKeys.getKeyPairBySpki(
publicKeySpkiDer: ArrayBuffer,
parameters: object,
callback: function,
): void
Передает пару ключей, идентифицированную publicKeySpkiDer, для использования с platformKeys.subtleCrypto в callback.
Параметры
-
publicKeySpkiDer
ArrayBuffer
Закодированный по правилам DER объект SubjectPublicKeyInfo стандарта 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.
-
обратный вызов
function
Параметр
callbackвыглядит следующим образом:(publicKey: object, privateKey?: object) => void
-
publicKey
Объект
-
privateKey
Объект (необязательно)
Если у расширения нет доступа к URL, значением будет
null.
-
selectClientCertificates()
chrome.platformKeys.selectClientCertificates(
details: SelectDetails,
callback?: function,
): Promise<Match[]>
Этот метод фильтрует из списка сертификатов клиентов те, которые известны платформе, соответствуют request и для которых у расширения есть разрешение на доступ к сертификату и его закрытому ключу. Если для правила interactive задано значение True, пользователю предлагается диалоговое окно, в котором он может выбрать подходящие сертификаты и предоставить расширению доступ к ним. Выбранные или отфильтрованные сертификаты клиентов будут переданы в callback.
Параметры
-
подробные сведения
-
обратный вызов
function необязательно
Параметр
callbackвыглядит следующим образом:(matches: Match[]) => void
-
соответствует
Match[]
Список сертификатов, соответствующих запросу, на которые у расширения есть разрешение и которые были выбраны пользователем (если для параметра
interactiveзадано значение true).
-
Возвраты
-
Promise<Match[]>
Chrome 121 и более поздних версийОбъекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.
subtleCrypto()
chrome.platformKeys.subtleCrypto(): object | undefined
Реализация SubtleCrypto WebCrypto, которая позволяет выполнять криптографические операции с ключами сертификатов клиента, доступных этому расширению.
Возвраты
-
object | undefined
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
callback?: function,
): Promise<VerificationResult>
Проверяет, можно ли доверять details.serverCertificateChain для details.hostname в соответствии с настройками доверия платформы. Примечание. Фактическое поведение проверки доверия не определено полностью и может измениться в будущем. Реализация API проверяет срок действия сертификата, путь сертификации и доверие со стороны известного ЦС. Реализация должна учитывать расширенное использование ключа serverAuth и поддерживать альтернативные имена субъектов.
Параметры
-
подробные сведения
-
обратный вызов
function необязательно
Параметр
callbackвыглядит следующим образом:(result: VerificationResult) => void
-
Результат
-
Возвраты
-
Promise<VerificationResult>
Chrome 121 и более поздних версийОбъекты Promise поддерживаются только в Manifest V3 и более поздних версиях. На других платформах нужно использовать обратные вызовы.