Açıklama
Bu anahtarlar için anahtar oluşturmak ve sertifika yüklemek üzere chrome.enterprise.platformKeys
API'yi kullanın. Sertifikalar platform tarafından yönetilir ve TLS kimlik doğrulaması, ağ erişimi veya chrome.platformKeys aracılığıyla diğer uzantılar tarafından kullanılabilir.
İzinler
enterprise.platformKeys
Kullanılabilirlik
Kavramlar ve kullanım
İstemci sertifikası kaydetmek için bu API'nin tipik kullanımı aşağıdaki adımları içerir:
enterprise.platformKeys.getTokens()
kullanarak mevcut tüm jetonları alın.id
değeri"user"
olan jetonu bulun. Bu jetonu daha sonra kullanın.generateKey()
Jeton yöntemini (SubtleCrypto'da tanımlanır) kullanarak bir anahtar çifti oluşturun. Bu işlem, kolu tuşa geri döndürür.exportKey()
Token yöntemini (SubtleCrypto'da tanımlanır) kullanarak ortak anahtarı dışa aktarın.sign()
Token yöntemini (SubtleCrypto'da tanımlanır) kullanarak sertifika isteğinin verilerinin imzasını oluşturun.Sertifika isteğini doldurup sertifika yetkilisine gönderin.
Sertifika alınırsa [
enterprise.platformKeys.importCertificate()
`[3] kullanarak içe aktarın.
Sertifika isteğinin oluşturulması ve gönderilmesi dışında, temel API etkileşimini gösteren bir örneği aşağıda bulabilirsiniz:
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);
Türler
Algorithm
Oluşturulacak anahtarın türü.
Enum
"RSA"
"ECDSA"
ChallengeKeyOptions
Özellikler
-
meydan okuma
ArrayBuffer
Verified Access Web API tarafından verilen bir sorgu.
-
registerKey
RegisterKeyOptions isteğe bağlı
Varsa sorgulanan anahtarı belirtilen
scope
jetonuyla kaydeder. Anahtar daha sonra bir sertifikayla ilişkilendirilebilir ve diğer imzalama anahtarları gibi kullanılabilir. Bu işlevin sonraki çağrıları, belirtilenscope
içinde yeni bir kurumsal anahtar oluşturur. -
kapsam
Hangi Enterprise anahtarının sorgulanacağı.
RegisterKeyOptions
Özellikler
-
algoritma
Kayıtlı anahtarın hangi algoritmayı kullanması gerektiği.
Scope
Enterprise User Key veya Enterprise Machine Key'in kullanılıp kullanılmayacağı.
Enum
"USER"
"MACHINE"
Token
Özellikler
-
id
dize
Bu
Token
öğesini benzersiz şekilde tanımlar.Statik kimlikler, sırasıyla platformun kullanıcıya özel ve sisteme genel donanım jetonunu ifade eden
"user"
ve"system"
'dir. Diğer jetonlar (diğer tanımlayıcılarla birlikte)enterprise.platformKeys.getTokens
tarafından döndürülebilir. -
softwareBackedSubtleCrypto
SubtleCrypto
Chrome 97 ve sonraki sürümlerWebCrypto'nun SubtleCrypto arayüzünü uygular. Anahtar oluşturma dahil olmak üzere şifreleme işlemleri yazılımla desteklenir. Anahtarların korunması ve dolayısıyla çıkarılamaz özelliğinin uygulanması yazılımda yapılır. Bu nedenle anahtarlar, donanım destekli anahtarlardan daha az korunur.
Yalnızca çıkarılamayan anahtarlar oluşturulabilir. Desteklenen anahtar türleri RSASSA-PKCS1-V1_5 ve RSA-OAEP'dir (Chrome 135 ve sonraki sürümlerde) ve
modulusLength
2048'e kadar desteklenir. Her RSASSA-PKCS1-V1_5 anahtarı, uzantı KeyPermissions politikası aracılığıyla izin verilenler listesine eklenmediği sürece verileri imzalamak için en fazla bir kez kullanılabilir. Bu durumda anahtar süresiz olarak kullanılabilir. RSA-OAEP anahtarları, Chrome 135 sürümünden itibaren desteklenir ve aynı politika aracılığıyla izin verilenler listesine eklenen uzantılar tarafından diğer anahtarların sarmalanmasını açmak için kullanılabilir.Belirli bir
Token
üzerinde oluşturulan anahtarlar başka jetonlarla veyawindow.crypto.subtle
ile kullanılamaz. Aynı şekilde,Key
ile oluşturulanwindow.crypto.subtle
nesneleri bu arayüzle kullanılamaz. -
subtleCrypto
SubtleCrypto
WebCrypto'nun SubtleCrypto arayüzünü uygular. Anahtar oluşturma dahil olmak üzere şifreleme işlemleri donanım desteklidir.
Yalnızca çıkarılamayan anahtarlar oluşturulabilir. Desteklenen anahtar türleri,
modulusLength
2048'e kadar olan RSASSA-PKCS1-V1_5 ve RSA-OAEP (Chrome 135 ve sonraki sürümlerde) ilenamedCurve
P-256 olan ECDSA'dır. Her RSASSA-PKCS1-V1_5 ve ECDSA anahtarı, uzantı KeyPermissions politikası aracılığıyla izin verilenler listesine eklenmediği sürece verileri imzalamak için en fazla bir kez kullanılabilir. Bu durumda anahtar süresiz olarak kullanılabilir. RSA-OAEP anahtarları, Chrome 135 sürümünden itibaren desteklenir ve aynı politika aracılığıyla izin verilenler listesine eklenen uzantılar tarafından diğer anahtarların sarmalanmasını açmak için kullanılabilir.Belirli bir
Token
üzerinde oluşturulan anahtarlar başka jetonlarla veyawindow.crypto.subtle
ile kullanılamaz. Aynı şekilde,Key
ile oluşturulanwindow.crypto.subtle
nesneleri bu arayüzle kullanılamaz.
Yöntemler
challengeKey()
chrome.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
): Promise<ArrayBuffer>
challengeMachineKey
ve challengeUserKey
'ye benzer ancak kayıtlı bir anahtarın algoritmasını belirtmenize olanak tanır. Donanım destekli bir kurumsal makine anahtarına meydan okur ve yanıtı uzaktan onay protokolünün bir parçası olarak verir. Yalnızca ChromeOS'te ve hem sorgu gönderen hem de yanıtları doğrulayan Verified Access Web API ile birlikte kullanıldığında yararlıdır.
Doğrulanmış Erişim Web API'si tarafından yapılan başarılı bir doğrulama, mevcut cihazın yasal bir ChromeOS cihaz olduğu, mevcut cihazın doğrulama sırasında belirtilen alan tarafından yönetildiği, mevcut oturum açmış kullanıcının doğrulama sırasında belirtilen alan tarafından yönetildiği ve mevcut cihaz durumunun kurumsal cihaz politikasına uygun olduğu konusunda güçlü bir sinyaldir. Örneğin, bir politika cihazın geliştirici modunda olmaması gerektiğini belirtebilir. Doğrulama tarafından verilen tüm cihaz kimlikleri, mevcut cihazın donanımına sıkı bir şekilde bağlıdır. "user"
Kapsamı belirtilmişse kimlik, oturum açmış durumdaki kullanıcıya da sıkı bir şekilde bağlıdır.
Bu işlev oldukça kısıtlanmıştır ve mevcut cihaz yönetilmiyorsa, mevcut kullanıcı yönetilmiyorsa veya bu işlem, kurumsal cihaz politikası tarafından arayan için açıkça etkinleştirilmemişse başarısız olur. Sorgulanan anahtar, "system"
veya "user"
jetonunda bulunmuyor ve başka bir API tarafından erişilemiyor.
Parametreler
-
seçenekler
ChallengeKeyOptions
içinde tanımlanan alanları içeren nesne.
İadeler
-
Promise<ArrayBuffer>
Chrome 131 veya daha yeni bir sürüm
challengeMachineKey()
chrome.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
): Promise<ArrayBuffer>
Bunun yerine challengeKey
kullanın.
Donanım destekli bir kurumsal makine anahtarına meydan okur ve yanıtı uzaktan onay protokolünün bir parçası olarak verir. Yalnızca ChromeOS'te ve hem sorgu gönderen hem de yanıtları doğrulayan Verified Access Web API ile birlikte kullanıldığında yararlıdır. Doğrulanmış Erişim Web API'si tarafından yapılan başarılı bir doğrulama, aşağıdakilerin tümü için güçlü bir sinyaldir: * Mevcut cihaz, yasal bir ChromeOS cihazdır. * Mevcut cihaz, doğrulama sırasında belirtilen alan tarafından yönetiliyor olmalıdır. * Şu anda oturum açmış kullanıcı, doğrulama sırasında belirtilen alan tarafından yönetiliyor. * Mevcut cihaz durumu, kurumsal cihaz politikasına uygundur. Örneğin, bir politika cihazın geliştirici modunda olmaması gerektiğini belirtebilir. * Doğrulama tarafından verilen tüm cihaz kimlikleri, mevcut cihazın donanımına sıkı bir şekilde bağlıdır. Bu işlev oldukça kısıtlanmıştır ve mevcut cihaz yönetilmiyorsa, mevcut kullanıcı yönetilmiyorsa veya bu işlem, kurumsal cihaz politikası tarafından arayan için açıkça etkinleştirilmemişse başarısız olur. Kurumsal makine anahtarı, "system"
jetonunda bulunmaz ve başka hiçbir API tarafından erişilemez.
Parametreler
-
meydan okuma
ArrayBuffer
Verified Access Web API tarafından verilen bir sorgu.
-
registerKey
boolean isteğe bağlı
Chrome 59 veya daha yeni bir sürümAyarlanırsa mevcut kurumsal makine anahtarı
"system"
jetonuyla kaydedilir ve kurumsal makine anahtarı rolünü bırakır. Anahtar daha sonra bir sertifikayla ilişkilendirilebilir ve diğer imzalama anahtarları gibi kullanılabilir. Bu anahtar 2048 bit RSA'dır. Bu işlevin sonraki çağrıları yeni bir Enterprise Machine Key oluşturur.
İadeler
-
Promise<ArrayBuffer>
Chrome 131 veya daha yeni bir sürüm
challengeUserKey()
chrome.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
): Promise<ArrayBuffer>
Bunun yerine challengeKey
kullanın.
Donanım destekli kurumsal kullanıcı anahtarına meydan okur ve yanıtı uzaktan onay protokolünün bir parçası olarak yayınlar. Yalnızca ChromeOS'te ve hem sorgu gönderen hem de yanıtları doğrulayan Verified Access Web API ile birlikte kullanıldığında yararlıdır. Doğrulanmış Erişim Web API'si tarafından yapılan başarılı bir doğrulama, aşağıdakilerin tümü için güçlü bir sinyaldir: * Mevcut cihaz, yasal bir ChromeOS cihazdır. * Mevcut cihaz, doğrulama sırasında belirtilen alan tarafından yönetiliyor olmalıdır. * Şu anda oturum açmış kullanıcı, doğrulama sırasında belirtilen alan tarafından yönetiliyor. * Mevcut cihaz durumu, kurumsal kullanıcı politikasına uygundur. Örneğin, bir politika cihazın geliştirici modunda olmaması gerektiğini belirtebilir. * Doğrulama tarafından verilen ortak anahtar, mevcut cihazın donanımına ve oturum açmış mevcut kullanıcıya sıkı bir şekilde bağlıdır. Bu işlevin kullanımı oldukça sınırlıdır. Mevcut cihaz veya kullanıcı yönetilmiyorsa ya da bu işlem, kurumsal kullanıcı politikası tarafından arayan için açıkça etkinleştirilmemişse işlem başarısız olur. Kurumsal kullanıcı anahtarı, "user"
jetonunda bulunmaz ve başka hiçbir API tarafından erişilemez.
Parametreler
-
meydan okuma
ArrayBuffer
Verified Access Web API tarafından verilen bir sorgu.
-
registerKey
boolean
Ayarlanırsa mevcut kurumsal kullanıcı anahtarı,
"user"
jetonuyla kaydedilir ve kurumsal kullanıcı anahtarı rolünü bırakır. Anahtar daha sonra bir sertifikayla ilişkilendirilebilir ve diğer imzalama anahtarları gibi kullanılabilir. Bu anahtar 2048 bit RSA'dır. Bu işlevin sonraki çağrıları yeni bir Enterprise User Key oluşturur.
İadeler
-
Promise<ArrayBuffer>
Chrome 131 veya daha yeni bir sürüm
getCertificates()
chrome.enterprise.platformKeys.getCertificates(
tokenId: string,
): Promise<ArrayBuffer[]>
Belirtilen jetondan kullanılabilen tüm istemci sertifikalarının listesini döndürür. Belirli bir kimlik doğrulama için kullanılabilir istemci sertifikalarının varlığını ve geçerlilik süresini kontrol etmek için kullanılabilir.
Parametreler
-
tokenId
dize
getTokens
tarafından döndürülen bir jetonun kimliği.
İadeler
-
Promise<ArrayBuffer[]>
Chrome 131 veya daha yeni bir sürüm
getTokens()
chrome.enterprise.platformKeys.getTokens(): Promise<Token[]>
Kullanılabilir jetonları döndürür. Normal bir kullanıcının oturumunda liste her zaman id
"user"
ile kullanıcının jetonunu içerir. Sistem genelinde bir TPM jetonu varsa döndürülen listede id
"system"
ile sistem genelinde jeton da yer alır. Sisteme genel jeton, bu cihazdaki (ör. Chromebook anlamında cihaz) tüm oturumlar için aynı olur.
İadeler
-
Promise<Token[]>
Chrome 131 veya daha yeni bir sürüm
importCertificate()
chrome.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
): Promise<void>
Sertifikalı anahtar bu jetonda zaten depolanmışsa certificate
öğesini belirtilen jetona aktarır. Başarılı bir sertifika isteğinden sonra, bu işlev elde edilen sertifikayı saklamak ve kimlik doğrulama için işletim sistemine ve tarayıcıya sunmak üzere kullanılmalıdır.
Parametreler
-
tokenId
dize
getTokens
tarafından döndürülen bir jetonun kimliği. -
sertifika
ArrayBuffer
X.509 sertifikasının DER kodlaması.
İadeler
-
Promise<void>
Chrome 131 veya daha yeni bir sürüm
removeCertificate()
chrome.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
): Promise<void>
Varsa belirtilen jetondan certificate
kaldırılır. Kimlik doğrulama sırasında dikkate alınmamaları ve sertifika seçimini karıştırmamaları için eski sertifikaları kaldırmak üzere kullanılmalıdır. Sertifika deposundaki depolama alanını boşaltmak için kullanılmalıdır.
Parametreler
-
tokenId
dize
getTokens
tarafından döndürülen bir jetonun kimliği. -
sertifika
ArrayBuffer
X.509 sertifikasının DER kodlaması.
İadeler
-
Promise<void>
Chrome 131 veya daha yeni bir sürüm