chrome.platformKeys

설명

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

    문자열[]

    신뢰 확인이 실패한 경우 이 배열에는 기본 네트워크 레이어에서 보고한 오류가 포함됩니다. 그렇지 않으면 이 배열은 비어 있습니다.

    참고: 이 목록은 디버깅 용도로만 사용되며 관련 오류가 모두 포함되어 있지 않을 수 있습니다. 반환된 오류는 이 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

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' 매개변수 { "hash": { "name": string } }도 전달해야 합니다. 'hash' 매개변수는 서명 전에 다이제스트 작업에 사용할 해싱 알고리즘의 이름을 나타냅니다. 해시 이름으로 'none'을 전달할 수 있습니다. 이 경우 서명 함수는 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()

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

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

매개변수

반환 값

  • Promise<Match[]>

    Chrome 121 이상

subtleCrypto()

chrome.platformKeys.subtleCrypto(): object | undefined

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

반환 값

  • object | undefined

verifyTLSServerCertificate()

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

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

매개변수

반환 값