chrome.platformKeys

설명

chrome.platformKeys API를 사용하여 플랫폼에서 관리하는 클라이언트 인증서에 액세스합니다. 사용자 또는 정책이 권한을 부여하면 확장 프로그램이 맞춤 인증 프로토콜에서 이러한 인증서를 사용할 수 있습니다. 예를 들어 서드 파티 VPN에서 플랫폼 관리 인증서를 사용할 수 있습니다 ( chrome.vpnProvider 참고).

권한

platformKeys

지원 대상

Chrome 45 이상 ChromeOS만 해당

유형

ClientCertificateRequest

속성

  • certificateAuthorities

    배열 버퍼[]

    서버에서 허용하는 인증 기관의 고유 이름 목록입니다. 각 항목은 DER로 인코딩된 X.509 DistinguishedName이어야 합니다.

  • certificateTypes

    이 필드는 요청된 인증서 유형 목록으로, 서버의 환경설정순으로 정렬됩니다. 이 목록에 포함된 유형의 인증서만 검색됩니다. 그러나 certificateTypes가 빈 목록인 경우 모든 유형의 인증서가 반환됩니다.

ClientCertificateType

열거형

"rsaSign"

"ecdsaSign"

Match

속성

  • 증명서

    ArrayBuffer

    X.509 인증서의 DER 인코딩입니다.

  • keyAlgorithm

    객체

    인증 키의 KeyAlgorithm입니다. 여기에는 인증서의 키 고유의 알고리즘 매개변수 (예: 키 길이)가 포함됩니다. 서명 함수에서 사용하는 해시 함수와 같은 다른 매개변수는 포함되지 않습니다.

SelectDetails

속성

  • clientCerts

    ArrayBuffer[] 선택사항

    지정된 경우 selectClientCertificates는 이 목록에서 작동합니다. 그렇지 않으면 이 확장 프로그램에 사용할 수 있는 플랫폼의 인증서 저장소에서 모든 인증서 목록을 가져옵니다. 확장 프로그램에 권한이 없거나 요청과 일치하지 않는 항목은 삭제됩니다.

  • 양방향

    boolean

    true인 경우 인증서를 수동으로 선택하고 확장 프로그램에 인증서 및 키에 대한 액세스 권한을 부여하도록 필터링된 목록이 사용자에게 표시됩니다. 선택한 인증서만 반환됩니다. false인 경우 확장 프로그램에 액세스 권한이 부여된 모든 인증서 (자동 또는 수동)로 목록이 축소됩니다.

  • 이 요청과 일치하는 인증서만 반환됩니다.

VerificationDetails

속성

  • hostname

    string

    인증서를 확인할 서버의 호스트 이름입니다(예: serverCertificateChain를 제공한 서버).

  • serverCertificateChain

    배열 버퍼[]

    각 체인 항목은 X.509 인증서의 DER 인코딩이어야 하고, 첫 번째 항목은 서버 인증서여야 하며, 각 항목은 앞에 오는 항목을 인증해야 합니다.

VerificationResult

속성

  • debug_errors

    문자열[]

    트러스트 확인에 실패하면 이 배열에는 기본 네트워크 계층에서 보고된 오류가 포함됩니다. 그렇지 않으면 이 배열은 비어 있습니다.

    참고: 이 목록은 디버깅용이며 일부 관련 오류가 포함되지 않을 수 있습니다. 반환된 오류는 이 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" } }) 값 중 하나로 지정할 수 있습니다. 그러면 서명 함수가 PKCS#1 v1.5 패딩을 적용하지만 주어진 데이터를 해싱하지 않습니다.

    현재 이 방법은 'RSASSA-PKCS1-v1_5' 및 'ECDSA' 알고리즘만 지원합니다.

  • 콜백

    기능

    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입니다. 예를 들어 format="spki"를 사용하여 WebCrypto의 exportKey 함수를 호출하여 얻게 됩니다.

  • 매개변수

    객체

    키 자체로 수정된 매개변수 외에 서명 및 해시 알고리즘 매개변수를 제공합니다. WebCrypto의 importKey 함수와 동일한 매개변수(예: RSASSA-PKCS1-v1_5 키의 경우 RsaHashedImportParams)가 허용됩니다. RSASSA-PKCS1-v1_5 키의 경우 '해시' 매개변수 { "hash": { "name": string } }도 전달해야 합니다. 'hash' 매개변수는 다이제스트 작업에서 부호 앞에 사용할 해싱 알고리즘의 이름을 나타냅니다. 'none'을 해시 이름으로 전달할 수 있습니다. 이 경우 서명 함수는 PKCS#1 v1.5 패딩을 적용하지만 제공된 데이터는 해싱하지 않습니다.

    현재 이 방법은 해싱 알고리즘 'none', 'SHA-1', 'SHA-256', 'SHA-384' 및 'SHA-512' 중 하나를 사용하는 명명된 곡선 P-256 및 'RSASSA-PKCS1-v1_5' 알고리즘이 포함된 'ECDSA' 알고리즘을 지원합니다.

  • 콜백

    기능

    callback 매개변수는 다음과 같습니다.

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

    • publicKey

      객체

    • privateKey

      객체 선택사항

      이 확장 프로그램에 액세스 권한이 없는 경우 null일 수 있습니다.

selectClientCertificates()

프로미스
chrome.platformKeys.selectClientCertificates(
  details: SelectDetails,
  callback?: function,
)

이 메서드는 클라이언트 인증서 목록에서 플랫폼에 알려져 있고 request와 일치하며 확장 프로그램에 인증서 및 비공개 키에 대한 액세스 권한이 있는 인증서를 필터링합니다. interactive이 true인 경우 일치하는 인증서 중에서 선택하고 확장 프로그램에 인증서에 대한 액세스 권한을 부여할 수 있는 대화상자가 사용자에게 표시됩니다. 선택/필터링된 클라이언트 인증서가 callback에 전달됩니다.

매개변수

  • 세부정보
  • 콜백

    함수 선택사항

    callback 매개변수는 다음과 같습니다.

    (matches: Match[])=>void

    • 일치

      확장 프로그램에 대한 권한이 있고 interactive가 true인 경우 사용자가 선택한 요청과 일치하는 인증서 목록입니다.

반환 값

  • Promise<Match[]>

    Chrome 121 이상

    프로미스는 Manifest V3 이상에서 지원되지만 콜백은 이전 버전과의 호환성을 위해 제공됩니다. 동일한 함수 호출에 둘 다 사용할 수는 없습니다. 프로미스는 콜백에 전달된 것과 동일한 유형으로 확인됩니다.

subtleCrypto()

chrome.platformKeys.subtleCrypto()

이 확장 프로그램에서 사용할 수 있는 클라이언트 인증서 키에 대한 암호화 작업을 허용하는 WebCrypto의 SubtleCrypto 구현입니다.

반환 값

  • 객체|정의되지 않음

verifyTLSServerCertificate()

프로미스
chrome.platformKeys.verifyTLSServerCertificate(
  details: VerificationDetails,
  callback?: function,
)

플랫폼의 신뢰 설정에 따라 details.hostname에서 details.serverCertificateChain를 신뢰할 수 있는지 확인합니다. 참고: 트러스트 확인의 실제 동작은 완전히 지정되지 않았으며 향후 변경될 수 있습니다. API 구현은 인증서 만료를 확인하고, 인증 경로의 유효성을 검사하고, 알려진 CA에 의한 신뢰를 확인합니다. 구현은 EKU serverAuth를 준수하고 주체 대체 이름을 지원해야 합니다.

매개변수

반환 값

  • Chrome 121 이상

    프로미스는 Manifest V3 이상에서 지원되지만 콜백은 이전 버전과의 호환성을 위해 제공됩니다. 동일한 함수 호출에 둘 다 사용할 수는 없습니다. 프로미스는 콜백에 전달된 것과 동일한 유형으로 확인됩니다.