설명
chrome.platformKeys
API를 사용하여 플랫폼에서 관리하는 클라이언트 인증서에 액세스합니다. 사용자 또는 정책에서 권한을 부여하면 확장 프로그램이 맞춤 인증 프로토콜에서 이러한 인증서를 사용할 수 있습니다. 예를 들어 이를 통해 서드 파티 VPN에서 플랫폼 관리 인증서를 사용할 수 있습니다 (chrome.vpnProvider 참고).
권한
platformKeys
가용성
유형
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.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.serverCertificateChain
을 details.hostname
에 대해 신뢰할 수 있는지 확인합니다. 참고: 신뢰 확인의 실제 동작은 완전히 지정되지 않았으며 향후 변경될 수 있습니다. API 구현은 인증서 만료를 확인하고, 인증 경로를 검증하고, 알려진 CA의 신뢰를 확인합니다. 구현은 EKU serverAuth를 준수하고 주체 대체 이름을 지원해야 합니다.
매개변수
- 세부정보
반환 값
-
Promise<VerificationResult>
Chrome 121 이상