ब्यौरा
कुंजियां जनरेट करने और इन कुंजियों के लिए सर्टिफ़िकेट इंस्टॉल करने के लिए, chrome.enterprise.platformKeys एपीआई का इस्तेमाल करें. सर्टिफ़िकेट को प्लैटफ़ॉर्म मैनेज करेगा. इनका इस्तेमाल, टीएलएस की पुष्टि करने, नेटवर्क ऐक्सेस करने या chrome.platformKeys के ज़रिए अन्य एक्सटेंशन के लिए किया जा सकता है.
अनुमतियां
enterprise.platformKeysउपलब्धता
कॉन्सेप्ट और इस्तेमाल
क्लाइंट सर्टिफ़िकेट को रजिस्टर करने के लिए, इस एपीआई का इस्तेमाल आम तौर पर इस तरह किया जाता है:
enterprise.platformKeys.getTokens()का इस्तेमाल करके, सभी उपलब्ध टोकन पाएं.वह टोकन ढूंढें जिसमें
idकी वैल्यू"user"के बराबर हो. इसके बाद, इस टोकन का इस्तेमाल करें.generateKey()टोकन वाले तरीके का इस्तेमाल करके, कुंजी का जोड़ा जनरेट करें. इस तरीके के बारे में SubtleCrypto में बताया गया है. इससे कुंजी को हैंडल वापस मिल जाएगा.exportKey()टोकन वाले तरीके (SubtleCrypto में बताया गया है) का इस्तेमाल करके, सार्वजनिक पासकोड को एक्सपोर्ट करें.sign()टोकन वाले तरीके (SubtleCrypto में बताया गया है) का इस्तेमाल करके, सर्टिफ़िकेट के अनुरोध के डेटा का हस्ताक्षर बनाएं.सर्टिफ़िकेट पाने का अनुरोध पूरा करें और उसे सर्टिफ़िकेट देने वाली संस्था को भेजें.
अगर आपको कोई सर्टिफ़िकेट मिलता है, तो उसे [
enterprise.platformKeys.importCertificate()`[3] का इस्तेमाल करके इंपोर्ट करें
यहां एक उदाहरण दिया गया है, जिसमें सर्टिफ़िकेशन का अनुरोध बनाने और भेजने के अलावा, एपीआई के मुख्य इंटरैक्शन को दिखाया गया है:
function getUserToken(callback) {
browser.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) {
browser.enterprise.platformKeys.importCertificate(userToken.id, certificate);
}
getUserToken(generateAndSign);
टाइप
Algorithm
जनरेट की जाने वाली कुंजी का टाइप.
Enum
"RSA"
"ECDSA"
ChallengeKeyOptions
प्रॉपर्टी
-
चैलेंज
ArrayBuffer
पुष्टि किया गया ऐक्सेस Web API से मिला चैलेंज.
-
registerKey
RegisterKeyOptions ज़रूरी नहीं
अगर मौजूद है, तो चैलेंज की गई कुंजी को
scopeके टोकन के साथ रजिस्टर करता है. इसके बाद, पासकोड को किसी सर्टिफ़िकेट से जोड़ा जा सकता है और किसी अन्य साइनिंग पासकोड की तरह इस्तेमाल किया जा सकता है. इसके बाद, इस फ़ंक्शन को किए जाने वाले कॉल, तय किए गएscopeमें एक नई एंटरप्राइज़ कुंजी जनरेट करेंगे. -
दायरा
किस एंटरप्राइज़ कुंजी को चुनौती देनी है.
RegisterKeyOptions
प्रॉपर्टी
-
एल्गोरिदम
रजिस्टर की गई कुंजी को किस एल्गोरिदम का इस्तेमाल करना चाहिए.
Scope
यह तय करना कि एंटरप्राइज़ उपयोगकर्ता कुंजी का इस्तेमाल करना है या एंटरप्राइज़ मशीन कुंजी का.
Enum
"USER"
"MACHINE"
Token
प्रॉपर्टी
-
आईडी
स्ट्रिंग
यह इस
Tokenकी यूनीक तरीके से पहचान करता है.स्टैटिक आईडी
"user"और"system"हैं. ये आईडी, प्लैटफ़ॉर्म के उपयोगकर्ता के हिसाब से और सिस्टम-वाइड हार्डवेयर टोकन के बारे में बताते हैं.enterprise.platformKeys.getTokens, अन्य आइडेंटिफ़ायर वाले टोकन दिखा सकता है. -
softwareBackedSubtleCrypto
SubtleCrypto
Chrome 97+ browser.* Chrome 148 सेWebCrypto के SubtleCrypto इंटरफ़ेस को लागू करता है. कुंजी जनरेट करने के साथ-साथ, क्रिप्टोग्राफ़िक ऑपरेशन सॉफ़्टवेयर की मदद से किए जाते हैं. कुंजियों की सुरक्षा और नॉन-एक्सट्रैक्टेबल प्रॉपर्टी को लागू करने का काम, सॉफ़्टवेयर में किया जाता है. इसलिए, ये कुंजियां हार्डवेयर से सुरक्षित कुंजियों की तुलना में कम सुरक्षित होती हैं.
सिर्फ़ ऐसी कुंजियां जनरेट की जा सकती हैं जिन्हें एक्सट्रैक्ट नहीं किया जा सकता. सिर्फ़ RSASSA-PKCS1-V1_5 कुंजी टाइप का इस्तेमाल किया जा सकता है. इसमें
modulusLengthकी वैल्यू 2048 तक हो सकती है. हर कुंजी का इस्तेमाल, डेटा पर हस्ताक्षर करने के लिए ज़्यादा से ज़्यादा एक बार किया जा सकता है. हालांकि, अगर एक्सटेंशन को KeyPermissions नीति के ज़रिए अनुमति वाली सूची में शामिल किया गया है, तो कुंजी का इस्तेमाल अनिश्चित समय तक किया जा सकता है.किसी खास
Tokenपर जनरेट की गई कुंजियों का इस्तेमाल, किसी दूसरे टोकन के साथ नहीं किया जा सकता. साथ ही, इनका इस्तेमालwindow.crypto.subtleके साथ भी नहीं किया जा सकता. इसी तरह,window.crypto.subtleसे बनाए गएKeyऑब्जेक्ट, इस इंटरफ़ेस के साथ इस्तेमाल नहीं किए जा सकते. -
subtleCrypto
SubtleCrypto
WebCrypto के SubtleCrypto इंटरफ़ेस को लागू करता है. क्रिप्टोग्राफ़िक ऑपरेशन, हार्डवेयर की मदद से किए जाते हैं. इनमें पासकी जनरेट करना भी शामिल है.
सिर्फ़ ऐसी कुंजियां जनरेट की जा सकती हैं जिन्हें एक्सट्रैक्ट नहीं किया जा सकता. इन कुंजी टाइप का इस्तेमाल किया जा सकता है:
modulusLengthके साथ RSASSA-PKCS1-V1_5 (2048 तक) औरnamedCurveP-256 के साथ ECDSA. हर कुंजी का इस्तेमाल, डेटा पर हस्ताक्षर करने के लिए ज़्यादा से ज़्यादा एक बार किया जा सकता है. हालांकि, अगर एक्सटेंशन को KeyPermissions नीति के तहत अनुमति वाली सूची में शामिल किया गया है, तो कुंजी का इस्तेमाल अनिश्चित समय तक किया जा सकता है.किसी खास
Tokenपर जनरेट की गई कुंजियों का इस्तेमाल, किसी दूसरे टोकन के साथ नहीं किया जा सकता. साथ ही, इनका इस्तेमालwindow.crypto.subtleके साथ भी नहीं किया जा सकता. इसी तरह,window.crypto.subtleसे बनाए गएKeyऑब्जेक्ट, इस इंटरफ़ेस के साथ इस्तेमाल नहीं किए जा सकते.
तरीके
challengeKey()
browser.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
): Promise<ArrayBuffer>
यह challengeMachineKey और challengeUserKey की तरह ही है. हालांकि, इसकी मदद से रजिस्टर की गई कुंजी का एल्गोरिदम तय किया जा सकता है. यह हार्डवेयर से सुरक्षित एंटरप्राइज़ मशीन कुंजी को चुनौती देता है और दूर से प्रमाणित करने के प्रोटोकॉल के तहत जवाब देता है. यह सिर्फ़ ChromeOS पर और पुष्टि किए गए ऐक्सेस वाले वेब एपीआई के साथ काम करता है. यह एपीआई, चैलेंज जारी करता है और जवाबों की पुष्टि करता है.
पुष्टि किए गए ऐक्सेस के वेब एपीआई से पुष्टि होने का मतलब है कि मौजूदा डिवाइस, ChromeOS डिवाइस है. साथ ही, मौजूदा डिवाइस को उस डोमेन से मैनेज किया जाता है जिसकी जानकारी पुष्टि के दौरान दी गई थी. इसके अलावा, मौजूदा साइन-इन उपयोगकर्ता को उस डोमेन से मैनेज किया जाता है जिसकी जानकारी पुष्टि के दौरान दी गई थी. साथ ही, मौजूदा डिवाइस की स्थिति, एंटरप्राइज़ डिवाइस की नीति के मुताबिक है. उदाहरण के लिए, किसी नीति में यह बताया जा सकता है कि डिवाइस, डेवलपर मोड में नहीं होना चाहिए. पुष्टि करने के दौरान, डिवाइस की जो भी पहचान मिलती है वह मौजूदा डिवाइस के हार्डवेयर से जुड़ी होती है. अगर "user" स्कोप तय किया गया है, तो आइडेंटिटी, साइन इन किए हुए मौजूदा उपयोगकर्ता से भी जुड़ी होती है.
इस फ़ंक्शन पर कई पाबंदियां हैं. अगर मौजूदा डिवाइस या उपयोगकर्ता को मैनेज नहीं किया जा रहा है, तो यह फ़ंक्शन काम नहीं करेगा. इसके अलावा, अगर डिवाइस से जुड़ी नीति के तहत, कॉल करने वाले व्यक्ति के लिए इस कार्रवाई को साफ़ तौर पर चालू नहीं किया गया है, तो भी यह फ़ंक्शन काम नहीं करेगा. चैलेंज की गई कुंजी, "system" या "user" टोकन में मौजूद नहीं है. साथ ही, इसे किसी अन्य एपीआई से ऐक्सेस नहीं किया जा सकता.
पैरामीटर
-
विकल्प
ChallengeKeyOptionsमें तय किए गए फ़ील्ड वाला ऑब्जेक्ट.
रिटर्न
-
Promise<ArrayBuffer>
Chrome 131+ browser.* Chrome 148 सेयह एक प्रॉमिस दिखाता है, जो चैलेंज के रिस्पॉन्स के साथ रिज़ॉल्व होता है.
challengeMachineKey()
browser.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
): Promise<ArrayBuffer>
इसके बजाय, challengeKey का इस्तेमाल करें.
यह हार्डवेयर से सुरक्षित एंटरप्राइज़ मशीन कुंजी को चुनौती देता है और दूर से प्रमाणित करने के प्रोटोकॉल के तहत जवाब देता है. यह सिर्फ़ ChromeOS पर और पुष्टि किए गए ऐक्सेस वाले वेब एपीआई के साथ काम करता है. यह एपीआई, चैलेंज जारी करता है और जवाबों की पुष्टि करता है. Verified Access Web API से पुष्टि होने का मतलब है कि: * मौजूदा डिवाइस, ChromeOS डिवाइस है. * मौजूदा डिवाइस को उस डोमेन से मैनेज किया जाता है जिसकी जानकारी पुष्टि के दौरान दी गई थी. * साइन इन किए हुए मौजूदा उपयोगकर्ता को, पुष्टि के दौरान बताए गए डोमेन से मैनेज किया जाता है. डिवाइस की मौजूदा स्थिति, एंटरप्राइज़ डिवाइस से जुड़ी नीति के मुताबिक हो. उदाहरण के लिए, किसी नीति में यह बताया जा सकता है कि डिवाइस, डेवलपर मोड में नहीं होना चाहिए. * पुष्टि करने के बाद, डिवाइस की जो भी पहचान मिलती है वह मौजूदा डिवाइस के हार्डवेयर से जुड़ी होती है. इस फ़ंक्शन पर कई पाबंदियां हैं. अगर मौजूदा डिवाइस या उपयोगकर्ता को मैनेज नहीं किया जा रहा है, तो यह फ़ंक्शन काम नहीं करेगा. इसके अलावा, अगर एंटरप्राइज़ डिवाइस से जुड़ी नीति के तहत, कॉल करने वाले व्यक्ति के लिए इस कार्रवाई को साफ़ तौर पर चालू नहीं किया गया है, तो भी यह फ़ंक्शन काम नहीं करेगा. एंटरप्राइज़ मशीन पासकोड, "system" टोकन में मौजूद नहीं होता है. साथ ही, इसे किसी दूसरे एपीआई से ऐक्सेस नहीं किया जा सकता.
पैरामीटर
-
चैलेंज
ArrayBuffer
पुष्टि किया गया ऐक्सेस Web API से मिला चैलेंज.
-
registerKey
बूलियन ज़रूरी नहीं
Chrome 59+ browser.* Chrome 148 सेअगर इसे सेट किया जाता है, तो मौजूदा एंटरप्राइज़ मशीन पासकोड को
"system"टोकन के साथ रजिस्टर किया जाता है. साथ ही, एंटरप्राइज़ मशीन पासकोड की भूमिका को छोड़ दिया जाता है. इसके बाद, पासकोड को किसी सर्टिफ़िकेट से जोड़ा जा सकता है और किसी अन्य साइनिंग पासकोड की तरह इस्तेमाल किया जा सकता है. यह कुंजी 2048-बिट आरएसए है. इसके बाद, इस फ़ंक्शन को कॉल करने पर, एक नई एंटरप्राइज़ मशीन कुंजी जनरेट होगी.
रिटर्न
-
Promise<ArrayBuffer>
Chrome 131+ browser.* Chrome 148 सेयह एक प्रॉमिस दिखाता है, जो चैलेंज के रिस्पॉन्स के साथ रिज़ॉल्व होता है.
challengeUserKey()
browser.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
): Promise<ArrayBuffer>
इसके बजाय, challengeKey का इस्तेमाल करें.
यह हार्डवेयर पर काम करने वाली एंटरप्राइज़ उपयोगकर्ता कुंजी को चुनौती देता है. साथ ही, दूर से प्रमाणित करने के प्रोटोकॉल के तहत जवाब देता है. यह सिर्फ़ ChromeOS पर और पुष्टि किए गए ऐक्सेस वाले वेब एपीआई के साथ काम करता है. यह एपीआई, चैलेंज जारी करता है और जवाबों की पुष्टि करता है. Verified Access Web API से पुष्टि होने का मतलब है कि: * मौजूदा डिवाइस, ChromeOS डिवाइस है. * मौजूदा डिवाइस को उस डोमेन से मैनेज किया जाता है जिसकी जानकारी पुष्टि के दौरान दी गई थी. * साइन इन किए हुए मौजूदा उपयोगकर्ता को, पुष्टि के दौरान बताए गए डोमेन से मैनेज किया जाता है. * डिवाइस की मौजूदा स्थिति, एंटरप्राइज़ उपयोगकर्ता की नीति के मुताबिक हो. उदाहरण के लिए, किसी नीति में यह बताया जा सकता है कि डिवाइस, डेवलपर मोड में नहीं होना चाहिए. * पुष्टि करने के बाद मिलने वाली सार्वजनिक कुंजी, मौजूदा डिवाइस के हार्डवेयर और साइन इन किए हुए मौजूदा उपयोगकर्ता से जुड़ी होती है. इस फ़ंक्शन पर काफ़ी पाबंदियां हैं. अगर मौजूदा डिवाइस या उपयोगकर्ता को मैनेज नहीं किया जा रहा है, तो यह फ़ंक्शन काम नहीं करेगा. इसके अलावा, अगर एंटरप्राइज़ उपयोगकर्ता की नीति के तहत, कॉल करने वाले व्यक्ति के लिए इस कार्रवाई को साफ़ तौर पर चालू नहीं किया गया है, तो भी यह फ़ंक्शन काम नहीं करेगा. एंटरप्राइज़ उपयोगकर्ता की कुंजी, "user" टोकन में मौजूद नहीं होती है. साथ ही, इसे किसी अन्य एपीआई से ऐक्सेस नहीं किया जा सकता.
पैरामीटर
-
चैलेंज
ArrayBuffer
पुष्टि किया गया ऐक्सेस Web API से मिला चैलेंज.
-
registerKey
बूलियन
अगर इसे सेट किया जाता है, तो मौजूदा एंटरप्राइज़ उपयोगकर्ता कुंजी को
"user"टोकन के साथ रजिस्टर किया जाता है. साथ ही, एंटरप्राइज़ उपयोगकर्ता कुंजी की भूमिका को छोड़ दिया जाता है. इसके बाद, पासकोड को किसी सर्टिफ़िकेट से जोड़ा जा सकता है और किसी अन्य साइनिंग पासकोड की तरह इस्तेमाल किया जा सकता है. यह कुंजी 2048-बिट आरएसए है. इसके बाद, इस फ़ंक्शन को कॉल करने पर, एक नई एंटरप्राइज़ उपयोगकर्ता कुंजी जनरेट होगी.
रिटर्न
-
Promise<ArrayBuffer>
Chrome 131+ browser.* Chrome 148 सेयह एक प्रॉमिस दिखाता है, जो चैलेंज के रिस्पॉन्स के साथ रिज़ॉल्व होता है.
getCertificates()
browser.enterprise.platformKeys.getCertificates(
tokenId: string,
): Promise<ArrayBuffer[]>
यह फ़ंक्शन, दिए गए टोकन से उपलब्ध सभी क्लाइंट सर्टिफ़िकेट की सूची दिखाता है. इसका इस्तेमाल, उन क्लाइंट सर्टिफ़िकेट की मौजूदगी और समयसीमा खत्म होने की तारीख की जांच करने के लिए किया जा सकता है जिनका इस्तेमाल किसी खास पुष्टि के लिए किया जा सकता है.
पैरामीटर
-
tokenId
स्ट्रिंग
getTokensसे मिले टोकन का आईडी.
रिटर्न
-
Promise<ArrayBuffer[]>
Chrome 131+ browser.* Chrome 148 सेयह एक प्रॉमिस दिखाता है, जो उपलब्ध सर्टिफ़िकेट की सूची के साथ रिज़ॉल्व होता है.
getTokens()
browser.enterprise.platformKeys.getTokens(): Promise<Token[]>
यह उपलब्ध टोकन दिखाता है. किसी सामान्य उपयोगकर्ता के सेशन में, सूची में हमेशा id "user" के साथ उपयोगकर्ता का टोकन शामिल होगा. अगर सिस्टम-वाइड टीपीएम टोकन उपलब्ध है, तो दिखाई गई सूची में id "system" के साथ सिस्टम-वाइड टोकन भी शामिल होगा. सिस्टम-वाइड टोकन, इस डिवाइस पर सभी सेशन के लिए एक जैसा होगा. जैसे, Chromebook.
रिटर्न
-
Promise<Token[]>
Chrome 131+ browser.* Chrome 148 सेgetTokensने उपलब्ध टोकन की सूची के साथ कॉल किया.
importCertificate()
browser.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
): Promise<void>
अगर सर्टिफ़ाइड कुंजी पहले से ही इस टोकन में सेव है, तो दिए गए टोकन में certificate को इंपोर्ट करता है. सर्टिफ़िकेट पाने का अनुरोध पूरा होने के बाद, इस फ़ंक्शन का इस्तेमाल करके, मिले सर्टिफ़िकेट को सेव किया जाना चाहिए. साथ ही, इसे ऑपरेटिंग सिस्टम और ब्राउज़र के लिए उपलब्ध कराया जाना चाहिए, ताकि पुष्टि की जा सके.
पैरामीटर
-
tokenId
स्ट्रिंग
getTokensसे मिले टोकन का आईडी. -
सर्टिफ़िकेट
ArrayBuffer
X.509 सर्टिफ़िकेट की डीईआर एन्कोडिंग.
रिटर्न
-
वादा<शून्य>
Chrome 131+ browser.* Chrome 148 सेयह एक प्रॉमिस दिखाता है, जो इस कार्रवाई के पूरा होने पर रिज़ॉल्व हो जाता है.
removeCertificate()
browser.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
): Promise<void>
अगर दिए गए टोकन में certificate मौजूद है, तो उसे हटाता है. इसका इस्तेमाल, पुराने सर्टिफ़िकेट हटाने के लिए किया जाना चाहिए, ताकि पुष्टि के दौरान उन पर विचार न किया जाए और सर्टिफ़िकेट के विकल्प में गड़बड़ी न हो. इसका इस्तेमाल, सर्टिफ़िकेट स्टोर में स्टोरेज खाली करने के लिए किया जाना चाहिए.
पैरामीटर
-
tokenId
स्ट्रिंग
getTokensसे मिले टोकन का आईडी. -
सर्टिफ़िकेट
ArrayBuffer
X.509 सर्टिफ़िकेट की डीईआर एन्कोडिंग.
रिटर्न
-
वादा<शून्य>
Chrome 131+ browser.* Chrome 148 सेयह कार्रवाई पूरी होने पर, Promise दिखाता है.