chrome.platformKeys

更新日: 2026-09-25 robots: noindex

説明

chrome.platformKeys API を使用して、プラットフォームで管理されているクライアント証明書にアクセスします。ユーザーまたはポリシーによって権限が付与されると、拡張機能はカスタム認証プロトコルでその証明書を使用できるようになります。たとえば、サードパーティの VPN でプラットフォーム管理の証明書を使用できます(chrome.vpnProvider を参照)。

権限

platformKeys

対象

Chrome 45 以降 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

プロパティ

  • hostname

    文字列

    証明書を検証するサーバーのホスト名(serverCertificateChain を提示したサーバーなど)。

  • serverCertificateChain

    ArrayBuffer[]

    各チェーン エントリは X.509 証明書の DER エンコードである必要があります。最初のエントリはサーバー証明書で、各エントリはその前のエントリを証明する必要があります。

VerificationResult

プロパティ

  • debug_errors

    string[]

    信頼検証が失敗した場合、この配列には、基盤となるネットワーク層によって報告されたエラーが含まれます。それ以外の場合、この配列は空です。

    注: このリストはデバッグ専用であり、関連するすべてのエラーが含まれているとは限りません。返されるエラーは、この API の今後のリビジョンで変更される可能性があり、上位互換性または下位互換性は保証されません。

  • 信頼できる

    ブール値

    信頼検証の結果。指定された検証の詳細に対する信頼を確立できる場合は true、何らかの理由で信頼が拒否された場合は false。

メソッド

getKeyPair()

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

platformKeys.subtleCrypto で使用する certificate の鍵ペアを callback に渡します。

パラメータ

  • 証明書

    ArrayBuffer

    selectClientCertificates によって返される Match の証明書。

  • パラメータ

    オブジェクト

    鍵自体によって固定されたパラメータに加えて、署名 / ハッシュ アルゴリズムのパラメータを決定します。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.platformKeys.getKeyPairBySpki(
  publicKeySpkiDer: ArrayBuffer,
  parameters: object,
  callback: function,
)
: void

publicKeySpkiDer で識別される鍵ペアを platformKeys.subtleCrypto で使用するために callback に渡します。

パラメータ

  • publicKeySpkiDer

    ArrayBuffer

    DER でエンコードされた X.509 SubjectPublicKeyInfo。たとえば、format="spki" を指定して WebCrypto の exportKey 関数を呼び出すことで取得されます。

  • パラメータ

    オブジェクト

    鍵自体によって固定されたパラメータに加えて、署名とハッシュ アルゴリズムのパラメータを提供します。WebCrypto の importKey 関数と同じパラメータ(RSASSA-PKCS1-v1_5 鍵の場合は RsaHashedImportParams など)が受け入れられます。RSASSA-PKCS1-v1_5 鍵の場合は、「hash」パラメータ { "hash": { "name": string } } も渡す必要があります。「hash」パラメータは、署名前にダイジェスト オペレーションで使用されるハッシュ アルゴリズムの名前を表します。ハッシュ名として「none」を渡すこともできます。この場合、sign 関数は PKCS#1 v1.5 パディングを適用しますが、指定されたデータはハッシュしません。

    現在、このメソッドは、名前付き曲線 P-256 を使用する「ECDSA」アルゴリズムと、ハッシュ アルゴリズム「none」、「SHA-1」、「SHA-256」、「SHA-384」、「SHA-512」のいずれかを使用する「RSASSA-PKCS1-v1_5」アルゴリズムをサポートしています。

  • callback

    関数

    callback パラメータは次のようになります。

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

    • publicKey

      オブジェクト

    • privateKey

      オブジェクト(省略可)

      この拡張機能にアクセス権がない場合は null になる可能性があります。

selectClientCertificates()

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

このメソッドは、クライアント証明書のリストから、プラットフォームに認識され、request と一致し、拡張機能に証明書と秘密鍵へのアクセス権があるものをフィルタします。interactive が true の場合、一致する証明書を選択して拡張機能に証明書へのアクセスを許可できるダイアログがユーザーに表示されます。選択またはフィルタされたクライアント証明書が callback に渡されます。

パラメータ

  • 詳細
  • callback

    function 省略可

    callback パラメータは次のようになります。

    (matches: Match[]) => void

    • 一致

      リクエストに一致する証明書のリスト。拡張機能に権限があり、interactive が true の場合は、ユーザーによって選択された証明書。

戻り値

  • Promise<Match[]>

    Chrome 121 以降

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。

subtleCrypto()

chrome.platformKeys.subtleCrypto(): object | undefined

WebCrypto の SubtleCrypto の実装。この拡張機能で使用可能なクライアント証明書の鍵に対して暗号オペレーションを実行できます。

戻り値

  • object | undefined

verifyTLSServerCertificate()

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

プラットフォームの信頼設定に従って、details.hostname に対して details.serverCertificateChain を信頼できるかどうかを確認します。注: 信頼検証の実際の動作は完全には指定されておらず、今後変更される可能性があります。API 実装は、証明書の有効期限を検証し、証明書パスを検証して、既知の CA による信頼性を確認します。実装では、EKU serverAuth を尊重し、サブジェクト代替名をサポートする必要があります。

パラメータ

戻り値

  • Chrome 121 以降

    Promise は Manifest V3 以降でのみサポートされています。他のプラットフォームではコールバックを使用する必要があります。