Açıklama
Anahtar oluşturmak ve bu anahtarlara sertifika yüklemek için 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
Bu API, istemci sertifikası kaydetmek için genel olarak aşağıdaki adımları izler:
enterprise.platformKeys.getTokens()
kullanarak mevcut tüm jetonları alın.id
değerinin"user"
olduğu jetonu bulun. Daha sonra bu jetonu kullanın.generateKey()
Token yöntemini (SubtleCrypto'da tanımlanır) kullanarak bir anahtar çifti oluşturun. Bu işlem, anahtar için tutamacını döndürür.exportKey()
Jetonu yöntemini (SubtleCrypto'da tanımlanır) kullanarak ortak anahtarı dışa aktarın.sign()
jeton yöntemini (SubtleCrypto'da tanımlanır) kullanarak sertifika isteği verilerinin imzasını oluşturun.Sertifika isteğini tamamlayın ve sertifika yetkilisine gönderin.
Sertifika alınmışsa [
enterprise.platformKeys.importCertificate()
`[3] kullanarak sertifikayı içe aktarın
Sertifika isteği oluşturma ve gönderme hariç önemli API etkileşimini gösteren bir örnek aşağıda verilmiştir:
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
ChallengeKeyOptions
Özellikler
-
meydan okuma
ArrayBuffer
Verified Access Web API tarafından gönderilen bir istem.
-
registerKey
RegisterKeyOptions isteğe bağlı
Varsa sorgulama anahtarı, belirtilen
scope
jetonuyla kaydedilir. Daha sonra bu anahtar bir sertifikayla ilişkilendirilebilir ve diğer imzalama anahtarları gibi kullanılabilir. Bu işleve yapılan sonraki çağrılar, belirtilenscope
içinde yeni bir Enterprise anahtarı oluşturur. -
kapsam
Hangi Kurumsal Anahtarın zorlanacağı.
RegisterKeyOptions
Özellikler
-
algoritma
Kayıtlı anahtarın kullanması gereken algoritma.
Scope
Kurumsal Kullanıcı Anahtarı'nın mı yoksa Kurumsal Makine Anahtarı'nın mı kullanılacağı.
Enum
Token
Özellikler
-
id
dize
Bu
Token
'yi benzersiz şekilde tanımlar.Statik kimlikler
"user"
ve"system"
'dir. Bunlar sırasıyla platformun kullanıcıya özel ve sistem genelindeki donanım jetonunu ifade eder. Diğer tüm jetonlar (başka 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 da dahil olmak üzere şifreleme işlemleri yazılıma dayanır. Anahtarların korunması ve dolayısıyla çıkarılamayan özelliğin uygulanması yazılım içinde yapılır. Bu nedenle, anahtarlar donanım destekli anahtarlara göre daha az korunur.
Yalnızca
modulusLength
2048'e kadar olan ayrıştırılamaz RSASSA-PKCS1-V1_5 anahtarları oluşturulabilir. Her anahtar, verileri imzalamak için en fazla bir kez kullanılabilir.Belirli bir
Token
üzerinde oluşturulan anahtarlar başka jetonlarla veyawindow.crypto.subtle
ile kullanılamaz. Benzer şekilde,window.crypto.subtle
ile oluşturulanKey
nesneleri bu arayüzde kullanılamaz. -
subtleCrypto
SubtleCrypto
WebCrypto'nun SubtleCrypto arayüzünü uygular. Anahtar oluşturma dahil olmak üzere kriptografik işlemler donanım desteklidir.
Yalnızca
modulusLength
2048'e kadar olan RSASSA-PKCS1-V1_5 anahtarları venamedCurve
P-256 olan ECDSA anahtarları oluşturulabilir. Her anahtar, verileri imzalamak için en fazla bir kez kullanılabilir.Belirli bir
Token
üzerinde oluşturulan anahtarlar başka jetonlarla veyawindow.crypto.subtle
ile kullanılamaz. Aynı şekilde,window.crypto.subtle
ile oluşturulanKey
nesneleri de bu arayüzle kullanılamaz.
Yöntemler
challengeKey()
chrome.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
callback?: function,
)
challengeMachineKey
ve challengeUserKey
'e benzer ancak kayıtlı bir anahtarın algoritmasını belirtmenize olanak tanır. Donanım destekli bir Kurumsal Makine Anahtarı'na müdahale eder ve uzaktan onay protokolünün parçası olarak yanıtı yayar. Yalnızca ChromeOS'te ve hem giriş sorgulaması hem de yanıtları doğrulayan Verified Access Web API ile birlikte kullanılabilir.
Verified Access Web API'nin başarılı bir şekilde doğrulaması, mevcut cihazın meşru bir ChromeOS cihazı, mevcut cihazın doğrulama sırasında belirtilen alan tarafından yönetildiği, oturum açmış mevcut 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 yönünde güçlü bir sinyaldir. Örneğin, bir politika, cihazın geliştirici modunda olmaması gerektiğini belirtebilir. Doğrulamanın yayınladığı tüm cihaz kimlikleri, geçerli cihazın donanımına sıkıca bağlıdır. "user"
Kapsamı belirtilirse kimlik, oturum açmış durumdaki kullanıcıya da sıkı bir şekilde bağlıdır.
Bu işlev oldukça kısıtlıdı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ştirilmediyse başarısız olur. İtiraz edilen anahtar, "system"
veya "user"
jetonunda bulunmaz ve başka hiçbir API tarafından erişilemez.
Parametreler
-
seçenekler
ChallengeKeyOptions
dokümanında tanımlanan alanları içeren nesne. -
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(response: ArrayBuffer) => void
-
gönderin
ArrayBuffer
Meydan okuma yanıtı.
-
İadeler
-
Promise<ArrayBuffer>
BeklemedeManifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.
challengeMachineKey()
chrome.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
callback?: function,
)
Bunun yerine challengeKey
alanını kullanın.
Donanım destekli bir Enterprise makine anahtarına istek gönderir ve yanıtı uzaktan onay protokolü kapsamında yayınlar. Yalnızca ChromeOS'te ve hem istemler gönderen hem de yanıtları doğrulayan Verified Access Web API ile birlikte kullanışlıdır. Doğrulanmış Erişim Web API'si tarafından yapılan başarılı bir doğrulama, aşağıdakilerin tümünün güçlü bir göstergesidir: * Mevcut cihaz, meşru bir ChromeOS cihazıdır. * Mevcut cihaz, doğrulama sırasında belirtilen alan adı tarafından yönetiliyor. * Oturum açmış durumdaki kullanıcı, doğrulama sırasında belirtilen alan adı tarafından yönetilir. * Mevcut cihaz durumu, kurumsal cihaz politikasıyla uyumlu. Örneğin, bir politikada cihazın geliştirici modunda olmaması gerektiği belirtilebilir. * Doğrulama işlemiyle yayınlanan tüm cihaz kimlikleri, mevcut cihazın donanımına sıkı sıkıya bağlıdır. Bu işlev oldukça kısıtlıdı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ştirilmediyse başarısız olur. Kurumsal Makine Anahtarı, "system"
jetonunda bulunmaz ve başka bir API tarafından erişilemez.
Parametreler
-
meydan okuma
ArrayBuffer
Verified Access Web API tarafından gönderilen bir istem.
-
registerKey
boole isteğe bağlı
Chrome 59 ve sonraki sürümlerAyarlanırsa mevcut Enterprise Machine Key,
"system"
jetonuna kaydedilir ve Enterprise Machine Key rolünden vazgeçer. Daha sonra bu anahtar bir sertifikayla ilişkilendirilebilir ve diğer imzalama anahtarları gibi kullanılabilir. Bu anahtar 2048 bit RSA'dır. Bu işleve yapılan sonraki çağrılar yeni bir Enterprise makine anahtarı oluşturur. -
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(response: ArrayBuffer) => void
-
gönderin
ArrayBuffer
Meydan okuma yanıtı.
-
İadeler
-
Promise<ArrayBuffer>
BeklemedeManifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.
challengeUserKey()
chrome.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
callback?: function,
)
Bunun yerine challengeKey
alanını kullanın.
Donanım destekli Enterprise kullanıcı anahtarına meydan okuyup yanıtı uzaktan onay protokolü kapsamında yayınlar. Yalnızca ChromeOS'te ve hem istemler gönderen hem de yanıtları doğrulayan Verified Access Web API ile birlikte kullanışlıdır. Verified Access Web API tarafından başarılı bir şekilde gerçekleştirilen doğrulama, aşağıdakilerin tümünün geçerli olduğunun güçlü bir işaretidir: * Geçerli cihaz meşru bir ChromeOS cihazıdır. * Mevcut cihaz, doğrulama sırasında belirtilen alan tarafından yönetilir. * Oturum açmış mevcut kullanıcı, doğrulama sırasında belirtilen alan tarafından yönetilir. * Mevcut cihaz durumu, kurumsal kullanıcı politikasına uygun. Örneğin, bir politikada cihazın geliştirici modunda olmaması gerektiği belirtilebilir. * Doğrulamanın yayınladığı ortak anahtar, geçerli cihazın donanımına ve oturum açmış geçerli kullanıcıya bağlıdır. Bu işlev son derece kısıtlıdır ve geçerli cihaz yönetilmiyorsa, geçerli kullanıcı yönetilmiyorsa veya bu işlem kurumsal kullanıcı politikası tarafından arayan için açıkça etkinleştirilmemişse başarısız olur. Enterprise 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 gönderilen bir istem.
-
registerKey
boolean
Ayarlanırsa mevcut Enterprise Kullanıcı Anahtarı,
"user"
jetonuyla kaydedilir ve Kurumsal Kullanıcı Anahtarı rolünü iptal eder. Ardından anahtar bir sertifikayla ilişkilendirilebilir ve diğer imzalama anahtarları gibi kullanılabilir. Bu anahtar 2048 bit RSA'dır. Bu işleve yapılan sonraki çağrılar yeni bir Enterprise Kullanıcı Anahtarı oluşturur. -
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(response: ArrayBuffer) => void
-
gönderin
ArrayBuffer
Meydan okuma yanıtı.
-
İadeler
-
Promise<ArrayBuffer>
BeklemedeManifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.
getCertificates()
chrome.enterprise.platformKeys.getCertificates(
tokenId: string,
callback?: function,
)
Belirtilen jetondan kullanılabilir tüm istemci sertifikalarının listesini döndürür. Belirli bir kimlik doğrulama için kullanılabilen istemci sertifikalarının varlığını ve süresinin dolup dolmadığını kontrol etmek için kullanılabilir.
Parametreler
-
tokenId
dize
getTokens
tarafından döndürülen jetonun kimliği. -
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(certificates: ArrayBuffer[]) => void
-
certificates
ArrayBuffer[]
Her biri bir X.509 sertifikasının DER kodlamasında olan sertifikaların listesi.
-
İadeler
-
Promise<ArrayBuffer[]>
BeklemedeManifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.
getTokens()
chrome.enterprise.platformKeys.getTokens(
callback?: function,
)
Kullanılabilir Jetonları döndürür. Normal bir kullanıcının oturumunda liste her zaman kullanıcının id
"user"
ile jetonunu içerir. Sistem genelinde bir TPM jetonu varsa döndürülen listede id
"system"
ile sistem genelindeki jeton da yer alır. Sistem genelindeki jeton, bu cihazdaki tüm oturumlar için aynı olacaktır (ör. Chromebook şeklinde cihaz).
Parametreler
İadeler
-
Vaat<Jeton[]>
BeklemedeManifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.
importCertificate()
chrome.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
)
Sertifikalı anahtar zaten bu jetonda depolanıyorsa certificate
öğesini belirtilen jetona içe aktarır. Başarılı bir sertifika isteği sonrasında, bu işlev, alınan sertifikayı depolamak ve kimlik doğrulama için işletim sistemi ve tarayıcıda kullanılabilir hale getirmek amacıyla kullanılmalıdır.
Parametreler
-
tokenId
dize
getTokens
tarafından döndürülen jetonun kimliği. -
sertifika
ArrayBuffer
X.509 sertifikasının DER kodlaması.
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:() => void
İadeler
-
Taahhüt<geçersiz>
BeklemedeManifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. İlgili içeriği oluşturmak için kullanılan taahhüt, geri çağırmaya iletilen aynı türle çözümlenir.
removeCertificate()
chrome.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
)
Verilen jetondan (varsa) certificate
öğesini kaldırır. Eski sertifikaların kimlik doğrulama sırasında dikkate alınmaması ve sertifika seçimini karmaşık hale getirmemesi için bunları kaldırmak amacıyla kullanılmalıdır. Sertifika deposunda yer açmak için kullanılmalıdır.
Parametreler
-
tokenId
dize
getTokens
tarafından döndürülen jetonun kimliği. -
sertifika
ArrayBuffer
X.509 sertifikasının DER kodlaması.
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:() => void
İadeler
-
Taahhüt<geçersiz>
BeklemedeManifest V3 ve sonraki sürümlerde vaatler desteklenir ancak geriye dönük uyumluluk Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.