chrome.platformKeys

説明

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

権限

platformKeys

対象

Chrome 45 以降 ChromeOS のみ

ClientCertificateRequest

プロパティ

  • certificateAuthorities

    ArrayBuffer[]

    サーバーによって許可された認証局の識別名のリスト。各エントリは、DER でエンコードされた X.509 DistinguishedName である必要があります。

  • certificateTypes

    このフィールドには、リクエストされた証明書のタイプがサーバーの優先順に並べてリストされます。このリストに含まれているタイプの証明書のみが取得されます。ただし、certificateTypes が空のリストの場合は、任意のタイプの証明書が返されます。

ClientCertificateType

Enum

Match

プロパティ

  • 認定書

    ArrayBuffer

    X.509 証明書の DER エンコード。

  • keyAlgorithm

    オブジェクト

    認定された鍵の KeyAlgorithm。これには、証明書の鍵に固有のアルゴリズム パラメータ(鍵の長さなど)が含まれます。符号関数で使用されるハッシュ関数などの他のパラメータは含まれません。

SelectDetails

プロパティ

  • clientCerts

    ArrayBuffer[] 省略可

    指定すると、selectClientCertificates はこのリストを操作します。それ以外の場合は、この拡張機能で使用できるすべての証明書のリストをプラットフォームの証明書ストアから取得します。拡張機能に権限がないエントリ、またはリクエストと一致しないエントリは削除されます。

  • interactive

    boolean

    true の場合、フィルタされたリストがユーザーに表示されます。ユーザーは証明書を手動で選択し、拡張機能に証明書と鍵へのアクセスを許可します。選択した証明書のみが返されます。false の場合、このリストには、拡張機能が(自動または手動で)アクセスを許可されているすべての証明書が表示されます。

  • このリクエストに一致する証明書のみが返されます。

VerificationDetails

プロパティ

  • hostname

    文字列

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

  • serverCertificateChain

    ArrayBuffer[]

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

VerificationResult

プロパティ

  • debug_errors

    string[]

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

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

  • 信頼できる

    boolean

    信頼検証の結果: 指定された確認の詳細について信頼を確立できた場合は true、信頼がなんらかの理由で拒否された場合は false です。

Methods

getKeyPair()

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

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" } })。この sign 関数は 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,
)

platformKeys.subtleCrypto で使用できるように、publicKeySpkiDer で識別される鍵ペアを callback に渡します。

パラメータ

  • publicKeySpkiDer

    ArrayBuffer

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

  • パラメータ

    オブジェクト

    鍵自体によって修正されるパラメータに加え、署名とハッシュ アルゴリズムのパラメータを提供します。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」アルゴリズムと、「なし」、「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,
)

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

パラメータ

  • 詳細
  • callback

    関数(省略可)

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

    (matches: Match[])=>void

    • 一致

      リクエストに一致する証明書のリスト。拡張機能に権限が付与されています。interactive が true の場合はユーザーが選択した証明書です。

戻り値

  • Promise<Match[]>

    Chrome 121 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。

subtleCrypto()

chrome.platformKeys.subtleCrypto()

この拡張機能で利用可能なクライアント証明書の鍵で暗号操作を可能にする WebCrypto の SubtleCrypto の実装。

戻り値

  • オブジェクト|未定義

verifyTLSServerCertificate()

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

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

パラメータ

戻り値

  • Chrome 121 以降

    Promise は Manifest V3 以降でサポートされていますが、コールバックは下位互換性のために提供されています。同じ関数呼び出しで両方を使用することはできません。Promise は、コールバックに渡されたのと同じ型で解決されます。