설명
chrome.enterprise.platformKeys
API를 사용하여 키를 생성하고 이러한 키의 인증서를 설치합니다. 인증서는 플랫폼에서 관리하며 TLS 인증, 네트워크 액세스 또는 chrome.platformKeys를 통한 다른 확장 프로그램에서 사용할 수 있습니다.
권한
enterprise.platformKeys
가용성
개념 및 사용
클라이언트 인증서를 등록하기 위해 이 API를 일반적으로 사용하는 단계는 다음과 같습니다.
enterprise.platformKeys.getTokens()
을 사용하여 사용 가능한 모든 토큰을 가져옵니다.id
이"user"
인 토큰을 찾습니다. 이 토큰을 이후에 사용합니다.generateKey()
토큰 메서드 (SubtleCrypto에 정의됨)를 사용하여 키 쌍을 생성합니다. 이렇게 하면 키 핸들이 반환됩니다.exportKey()
토큰 메서드 (SubtleCrypto에 정의됨)를 사용하여 공개 키를 내보냅니다.sign()
토큰 메서드 (SubtleCrypto에 정의됨)를 사용하여 인증 요청 데이터의 서명을 만듭니다.인증 요청을 완료하고 인증 기관에 전송합니다.
인증서를 수신한 경우 [
enterprise.platformKeys.importCertificate()
`[3]을 사용하여 가져옵니다.
다음은 인증 요청의 빌드 및 전송을 제외한 주요 API 상호작용을 보여주는 예입니다.
function getUserToken(callback) { chrome.enterprise.platformKeys.getTokens(function(tokens) { for (var i = 0; i < tokens.length; i++) { if (tokens[i].id == "user") { callback(tokens[i]); return; } } callback(undefined); }); } function generateAndSign(userToken) { var data = new Uint8Array([0, 5, 1, 2, 3, 4, 5, 6]); var algorithm = { name: "RSASSA-PKCS1-v1_5", // RsaHashedKeyGenParams modulusLength: 2048, publicExponent: new Uint8Array([0x01, 0x00, 0x01]), // Equivalent to 65537 hash: { name: "SHA-256", } }; var cachedKeyPair; userToken.subtleCrypto.generateKey(algorithm, false, ["sign"]) .then(function(keyPair) { cachedKeyPair = keyPair; return userToken.subtleCrypto.exportKey("spki", keyPair.publicKey); }, console.log.bind(console)) .then(function(publicKeySpki) { // Build the Certification Request using the public key. return userToken.subtleCrypto.sign( {name : "RSASSA-PKCS1-v1_5"}, cachedKeyPair.privateKey, data); }, console.log.bind(console)) .then(function(signature) { // Complete the Certification Request with |signature|. // Send out the request to the CA, calling back // onClientCertificateReceived. }, console.log.bind(console)); } function onClientCertificateReceived(userToken, certificate) { chrome.enterprise.platformKeys.importCertificate(userToken.id, certificate); } getUserToken(generateAndSign);
유형
Algorithm
생성할 키의 유형입니다.
열거형
"RSA"
"ECDSA"
ChallengeKeyOptions
속성
- 챌린지
ArrayBuffer
Verified Access Web API에서 내보낸 챌린지입니다.
- registerKey
RegisterKeyOptions 선택사항
있는 경우 지정된
scope
의 토큰으로 챌린지된 키를 등록합니다. 그러면 키가 인증서와 연결되고 다른 서명 키와 마찬가지로 사용될 수 있습니다. 이 함수를 후속 호출하면 지정된scope
에 새 엔터프라이즈 키가 생성됩니다. - 범위
챌린지할 엔터프라이즈 키입니다.
RegisterKeyOptions
속성
- 알고리즘
등록된 키가 사용해야 하는 알고리즘입니다.
Scope
엔터프라이즈 사용자 키 또는 엔터프라이즈 머신 키를 사용할지 여부입니다.
열거형
"USER"
'MACHINE'
Token
속성
- id
문자열
이
Token
을 고유하게 식별합니다.정적 ID는
"user"
및"system"
이며, 각각 플랫폼의 사용자별 하드웨어 토큰과 시스템 전체 하드웨어 토큰을 나타냅니다. 다른 식별자가 있는 다른 토큰은enterprise.platformKeys.getTokens
에서 반환될 수 있습니다. - softwareBackedSubtleCrypto
SubtleCrypto
Chrome 97 이상WebCrypto의 SubtleCrypto 인터페이스를 구현합니다. 키 생성을 비롯한 암호화 작업은 소프트웨어 지원을 받습니다. 키 보호 및 따라서 추출 불가능 속성 구현은 소프트웨어에서 이루어지므로 키가 하드웨어 지원 키보다 덜 보호됩니다.
추출할 수 없는 키만 생성할 수 있습니다. 지원되는 키 유형은
modulusLength
가 최대 2048인 RSASSA-PKCS1-V1_5 및 RSA-OAEP (Chrome 버전 135 이상)입니다. 각 RSASSA-PKCS1-V1_5 키는 KeyPermissions 정책을 통해 확장 프로그램이 허용 목록에 추가되지 않는 한 데이터를 서명하는 데 최대 한 번 사용할 수 있습니다. 이 경우 키는 무기한 사용할 수 있습니다. RSA-OAEP 키는 Chrome 버전 135부터 지원되며, 동일한 정책을 통해 허용 목록에 추가된 확장 프로그램이 다른 키를 래핑 해제하는 데 사용할 수 있습니다.특정
Token
에서 생성된 키는 다른 토큰과 함께 사용할 수 없으며window.crypto.subtle
와 함께 사용할 수도 없습니다. 마찬가지로window.crypto.subtle
로 만든Key
객체는 이 인터페이스와 함께 사용할 수 없습니다. - subtleCrypto
SubtleCrypto
WebCrypto의 SubtleCrypto 인터페이스를 구현합니다. 키 생성을 비롯한 암호화 작업은 하드웨어 지원됩니다.
추출할 수 없는 키만 생성할 수 있습니다. 지원되는 키 유형은
modulusLength
최대 2048의 RSASSA-PKCS1-V1_5 및 RSA-OAEP (Chrome 버전 135 이상)와namedCurve
P-256의 ECDSA입니다. 각 RSASSA-PKCS1-V1_5 및 ECDSA 키는 KeyPermissions 정책을 통해 확장 프로그램이 허용 목록에 추가되지 않는 한 데이터를 서명하는 데 최대 한 번 사용할 수 있습니다. 이 경우 키는 무기한으로 사용할 수 있습니다. RSA-OAEP 키는 Chrome 버전 135부터 지원되며, 동일한 정책을 통해 허용 목록에 추가된 확장 프로그램이 다른 키를 래핑 해제하는 데 사용할 수 있습니다.특정
Token
에서 생성된 키는 다른 토큰과 함께 사용할 수 없으며window.crypto.subtle
와 함께 사용할 수도 없습니다. 마찬가지로window.crypto.subtle
로 만든Key
객체는 이 인터페이스와 함께 사용할 수 없습니다.
메서드
challengeKey()
chrome.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
): Promise<ArrayBuffer>
challengeMachineKey
및 challengeUserKey
와 유사하지만 등록된 키의 알고리즘을 지정할 수 있습니다. 하드웨어 지원 엔터프라이즈 머신 키를 챌린지하고 원격 증명 프로토콜의 일부로 응답을 내보냅니다. ChromeOS에서만 유용하며, 챌린지를 발행하고 응답을 확인하는 인증 액세스 웹 API와 함께 사용해야 합니다.
인증 액세스 웹 API를 통해 인증에 성공하면 현재 기기가 정식 ChromeOS 기기이고, 현재 기기가 인증 중에 지정된 도메인에 의해 관리되며, 현재 로그인한 사용자가 인증 중에 지정된 도메인에 의해 관리되고, 현재 기기 상태가 엔터프라이즈 기기 정책을 준수한다는 강력한 신호가 됩니다. 예를 들어 정책에서 기기가 개발자 모드에 있으면 안 된다고 지정할 수 있습니다. 확인에서 내보낸 기기 ID는 현재 기기의 하드웨어에 긴밀하게 바인딩됩니다. "user"
범위가 지정된 경우 ID는 현재 로그인한 사용자에게도 긴밀하게 바인딩됩니다.
이 함수는 매우 제한적이며 현재 기기가 관리되지 않거나, 현재 사용자가 관리되지 않거나, 기업 기기 정책에 의해 호출자에게 이 작업이 명시적으로 사용 설정되지 않은 경우 실패합니다. 챌린지된 키가 "system"
또는 "user"
토큰에 없으며 다른 API에서 액세스할 수 없습니다.
매개변수
-
ChallengeKeyOptions
에 정의된 필드가 포함된 객체입니다.
반환 값
-
Promise<ArrayBuffer>
Chrome 131 이상
challengeMachineKey()
chrome.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
): Promise<ArrayBuffer>
대신 challengeKey
를 사용하세요.
하드웨어 지원 엔터프라이즈 머신 키를 챌린지하고 원격 증명 프로토콜의 일부로 응답을 내보냅니다. ChromeOS에서만 유용하며, 챌린지를 발행하고 응답을 확인하는 인증 액세스 웹 API와 함께 사용해야 합니다. 인증된 액세스 웹 API의 인증이 성공하면 다음 사항을 모두 나타내는 강력한 신호가 됩니다. * 현재 기기가 정식 ChromeOS 기기입니다. * 현재 기기가 인증 중에 지정된 도메인에 의해 관리됩니다. * 현재 로그인한 사용자가 인증 중에 지정된 도메인에 의해 관리됩니다. * 현재 기기 상태가 엔터프라이즈 기기 정책을 준수합니다. 예를 들어 정책에서 기기가 개발자 모드에 있으면 안 된다고 지정할 수 있습니다. * 확인에서 내보낸 기기 ID는 현재 기기의 하드웨어에 긴밀하게 바인딩됩니다. 이 함수는 매우 제한적이며 현재 기기가 관리되지 않거나, 현재 사용자가 관리되지 않거나, 기업 기기 정책에 의해 호출자에게 이 작업이 명시적으로 사용 설정되지 않은 경우 실패합니다. 엔터프라이즈 머신 키는 "system"
토큰에 상주하지 않으며 다른 API에서 액세스할 수 없습니다.
매개변수
- 챌린지
ArrayBuffer
Verified Access Web API에서 내보낸 챌린지입니다.
- registerKey
불리언 선택사항
Chrome 59 이상설정된 경우 현재 엔터프라이즈 머신 키가
"system"
토큰에 등록되고 엔터프라이즈 머신 키 역할을 포기합니다. 그러면 키가 인증서와 연결되고 다른 서명 키와 마찬가지로 사용될 수 있습니다. 이 키는 2048비트 RSA입니다. 이 함수를 후속 호출하면 새 엔터프라이즈 머신 키가 생성됩니다.
반환 값
-
Promise<ArrayBuffer>
Chrome 131 이상
challengeUserKey()
chrome.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
): Promise<ArrayBuffer>
대신 challengeKey
를 사용하세요.
하드웨어 지원 엔터프라이즈 사용자 키를 챌린지하고 원격 증명 프로토콜의 일부로 응답을 내보냅니다. ChromeOS에서만 유용하며, 챌린지를 발행하고 응답을 확인하는 인증 액세스 웹 API와 함께 사용해야 합니다. 인증된 액세스 웹 API의 인증이 성공하면 다음 사항을 모두 나타내는 강력한 신호가 됩니다. * 현재 기기가 정식 ChromeOS 기기입니다. * 현재 기기가 인증 중에 지정된 도메인에 의해 관리됩니다. * 현재 로그인한 사용자가 인증 중에 지정된 도메인에 의해 관리됩니다. * 현재 기기 상태가 엔터프라이즈 사용자 정책을 준수합니다. 예를 들어 정책에서 기기가 개발자 모드에 있으면 안 된다고 지정할 수 있습니다. * 확인에서 내보낸 공개 키는 현재 기기의 하드웨어와 현재 로그인한 사용자에 긴밀하게 바인딩됩니다. 이 함수는 매우 제한적이며 현재 기기가 관리되지 않거나, 현재 사용자가 관리되지 않거나, 기업 사용자 정책에 의해 호출자에게 이 작업이 명시적으로 사용 설정되지 않은 경우 실패합니다. 엔터프라이즈 사용자 키는 "user"
토큰에 상주하지 않으며 다른 API에서 액세스할 수 없습니다.
매개변수
- 챌린지
ArrayBuffer
Verified Access Web API에서 내보낸 챌린지입니다.
- registerKey
부울
설정된 경우 현재 엔터프라이즈 사용자 키가
"user"
토큰에 등록되고 엔터프라이즈 사용자 키 역할이 해제됩니다. 그러면 키가 인증서와 연결되고 다른 서명 키와 마찬가지로 사용될 수 있습니다. 이 키는 2048비트 RSA입니다. 이 함수를 이후에 호출하면 새 엔터프라이즈 사용자 키가 생성됩니다.
반환 값
-
Promise<ArrayBuffer>
Chrome 131 이상
getCertificates()
chrome.enterprise.platformKeys.getCertificates(
tokenId: string,
): Promise<ArrayBuffer[]>
지정된 토큰에서 사용할 수 있는 모든 클라이언트 인증서 목록을 반환합니다. 특정 인증에 사용할 수 있는 클라이언트 인증서의 존재 여부와 만료 여부를 확인하는 데 사용할 수 있습니다.
매개변수
- tokenId
문자열
getTokens
에서 반환된 토큰의 ID입니다.
반환 값
-
Promise<ArrayBuffer[]>
Chrome 131 이상
getTokens()
chrome.enterprise.platformKeys.getTokens(): Promise<Token[]>
사용 가능한 토큰을 반환합니다. 일반 사용자 세션에서 목록에는 항상 id
"user"
이 있는 사용자 토큰이 포함됩니다. 시스템 전체 TPM 토큰을 사용할 수 있는 경우 반환된 목록에는 id
"system"
이 있는 시스템 전체 토큰도 포함됩니다. 시스템 전체 토큰은 이 기기 (예: Chromebook)의 모든 세션에서 동일합니다.
반환 값
-
Promise<Token[]>
Chrome 131 이상
importCertificate()
chrome.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
): Promise<void>
인증된 키가 이미 이 토큰에 저장되어 있는 경우 certificate
를 지정된 토큰으로 가져옵니다. 인증 요청이 성공한 후 이 함수를 사용하여 획득한 인증서를 저장하고 인증을 위해 운영체제와 브라우저에서 사용할 수 있도록 해야 합니다.
매개변수
- tokenId
문자열
getTokens
에서 반환된 토큰의 ID입니다. - 증명서
ArrayBuffer
X.509 인증서의 DER 인코딩입니다.
반환 값
-
Promise<void>
Chrome 131 이상
removeCertificate()
chrome.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
): Promise<void>
지정된 토큰에 certificate
이 있으면 삭제합니다. 인증 중에 고려되지 않고 인증서 선택을 방해하지 않도록 오래된 인증서를 삭제하는 데 사용해야 합니다. 인증서 저장소의 저장소를 해제하는 데 사용해야 합니다.
매개변수
- tokenId
문자열
getTokens
에서 반환된 토큰의 ID입니다. - 증명서
ArrayBuffer
X.509 인증서의 DER 인코딩입니다.
반환 값
-
Promise<void>
Chrome 131 이상