説明
プラットフォームで管理されているクライアント証明書にアクセスするには、chrome.platformKeys
API を使用します。ユーザーまたはポリシーで権限を付与されていれば、拡張機能はカスタム認証プロトコルでそのような証明書を使用できます。たとえば、サードパーティの VPN でプラットフォームが管理する証明書を使用できるようになります(chrome.vpnProvider をご覧ください)。
権限
platformKeys
可用性
型
ClientCertificateRequest
プロパティ
-
certificateAuthorities
ArrayBuffer[]
サーバーによって許可された認証局の識別名のリスト。各エントリは、DER でエンコードされた X.509 DistinguishedName である必要があります。
-
certificateTypes
このフィールドには、リクエストされた証明書のタイプがサーバーの優先順に並べてリストされます。このリストに含まれているタイプの証明書のみが取得されます。ただし、
certificateTypes
が空のリストの場合は、任意のタイプの証明書が返されます。
ClientCertificateType
列挙型
Match
プロパティ
-
認定書
ArrayBuffer
X.509 証明書の DER エンコード。
-
keyAlgorithm
オブジェクト
認定された鍵の KeyAlgorithm。これには、証明書の鍵に固有のアルゴリズム パラメータ(鍵の長さなど)が含まれます。符号関数で使用されるハッシュ関数などの他のパラメータは含まれません。
SelectDetails
プロパティ
-
clientCerts
ArrayBuffer[] 省略可
指定すると、
selectClientCertificates
はこのリストを操作します。それ以外の場合は、この拡張機能で使用できるすべての証明書のリストをプラットフォームの証明書ストアから取得します。拡張機能に権限がないエントリ、またはリクエストと一致しないエントリは削除されます。 -
interactive
boolean
true の場合、フィルタされたリストがユーザーに表示されます。ユーザーは証明書を手動で選択し、拡張機能に証明書と鍵へのアクセスを許可します。選択した証明書のみが返されます。false の場合、このリストには、拡張機能が(自動または手動で)アクセスを許可されているすべての証明書が表示されます。
-
request
このリクエストに一致する証明書のみが返されます。
VerificationDetails
プロパティ
-
hostname
string
証明書を検証するサーバーのホスト名(
serverCertificateChain
を提示したサーバーなど)。 -
serverCertificateChain
ArrayBuffer[]
各チェーン エントリは X.509 証明書の DER エンコードでなければならず、最初のエントリはサーバー証明書である必要があり、各エントリは前のエントリを証明する必要があります。
VerificationResult
プロパティ
-
debug_errors
string[]
信頼検証が失敗した場合、この配列には基盤となるネットワーク レイヤによって報告されたエラーが含まれます。それ以外の場合、この配列は空です。
注: このリストはデバッグのみを目的としており、関連するすべてのエラーが含まれているとは限りません。返されるエラーは、この API の将来のリビジョンで変更される可能性があります。また、上位互換性や下位互換性は保証されません。
-
信頼できる
boolean
信頼検証の結果: 指定された確認の詳細について信頼を確立できた場合は true、信頼がなんらかの理由で拒否された場合は false です。
メソッド
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.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()
chrome.platformKeys.selectClientCertificates(
details: SelectDetails,
callback?: function,
)
このメソッドは、プラットフォームに認識され、request
に一致し、拡張機能が証明書とその秘密鍵にアクセスする権限を持っているクライアント証明書のリストから、クライアント証明書を除外します。interactive
が true の場合、一致する証明書を選択して拡張機能に証明書へのアクセス権を付与できるダイアログがユーザーに表示されます。選択またはフィルタしたクライアント証明書は callback
に渡されます。
パラメータ
戻り値
-
Promise<Match[]>
Chrome 121 以降Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。
subtleCrypto()
chrome.platformKeys.subtleCrypto()
この拡張機能で利用可能なクライアント証明書の鍵で暗号操作を可能にする WebCrypto の SubtleCrypto の実装。
戻り値
-
オブジェクト | 未定義
verifyTLSServerCertificate()
chrome.platformKeys.verifyTLSServerCertificate(
details: VerificationDetails,
callback?: function,
)
プラットフォームの信頼設定に従って、details.serverCertificateChain
を details.hostname
に対して信頼できるかどうかを確認します。注: 信頼性検証の実際の動作は完全には規定されておらず、将来変更される可能性があります。API の実装では、証明書の有効期限を検証し、証明書パスを検証して、既知の CA による信頼を確認します。この実装では、EKU の serverAuth を尊重し、サブジェクト代替名をサポートすることが想定されています。
パラメータ
-
callback
関数(省略可)
callback
パラメータは次のようになります。(result: VerificationResult) => void
-
件の結果
-
戻り値
-
Promise<VerificationResult>
Chrome 121 以降Promise は Manifest V3 以降でのみサポートされます。他のプラットフォームではコールバックを使用する必要があります。