ब्यौरा
कुंजियां जनरेट करने और इन कुंजियों के लिए सर्टिफ़िकेट इंस्टॉल करने के लिए, chrome.enterprise.platformKeys
API का इस्तेमाल करें. सर्टिफ़िकेट, प्लैटफ़ॉर्म मैनेज करेगा. टीएलएस की पुष्टि करने, नेटवर्क ऐक्सेस करने या chrome.platformKeys के ज़रिए किसी अन्य एक्सटेंशन के लिए इनका इस्तेमाल किया जा सकता है.
अनुमतियां
enterprise.platformKeys
उपलब्धता
इस्तेमाल
आम तौर पर, क्लाइंट सर्टिफ़िकेट को रजिस्टर करने के लिए, इस एपीआई का इस्तेमाल इन चरणों को पूरा करने के लिए किया जाता है:
enterprise.platformKeys.getTokens का इस्तेमाल करके, सभी उपलब्ध टोकन पाएं.
"user"
के बराबरid
वाला टोकन खोजें. बाद में इस टोकन का इस्तेमाल करें.टोकन
generateKey
वाले तरीके का इस्तेमाल करके, कुंजी का जोड़ा जनरेट करें. इस तरीके के बारे में SubtleDigital में बताया गया है. इससे बटन का हैंडल वापस आ जाएगा.exportKey
टोकन के तरीके (SubtleCrypto में बताया गया है) का इस्तेमाल करके, सार्वजनिक कुंजी एक्सपोर्ट करें.sign
टोकन तरीके का इस्तेमाल करके, सर्टिफ़िकेशन के अनुरोध के डेटा पर हस्ताक्षर बनाएं. इसकी जानकारी Subtleक्रिप्ट में दी गई है.सर्टिफ़िकेट का अनुरोध करें और उसे सर्टिफ़िकेट देने वाली संस्था या निकाय को भेजें.
अगर कोई सर्टिफ़िकेट मिला है, तो उसे enterprise.platformKeys.importCertificate का इस्तेमाल करके इंपोर्ट करें
यहां एक उदाहरण दिया गया है, जिसमें सर्टिफ़िकेशन का अनुरोध करने और उसे भेजने के अलावा, एपीआई के अहम इंटरैक्शन दिखाया गया है:
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
जनरेट करने के लिए कुंजी का प्रकार.
Enum
"ECDSA"
ChallengeKeyOptions
प्रॉपर्टी
-
चैलेंज
ArrayBuffer
Verified Access Web API से मिलने वाला चैलेंज.
-
registerKey
RegisterKeyOptions वैकल्पिक
अगर मौजूद है, तो चुनौती वाली कुंजी को बताए गए
scope
के टोकन के साथ रजिस्टर करता है. इसके बाद, कुंजी को किसी सर्टिफ़िकेट के साथ जोड़ा जा सकता है और उसे किसी भी दूसरे साइनिंग पासकोड की तरह इस्तेमाल किया जा सकता है. इसके बाद, इस फ़ंक्शन को कॉल करने पर, तय किए गएscope
में एक नई एंटरप्राइज़ पासकोड जनरेट होगी. -
दायरा
किस Enterprise Key को चुनौती देनी है.
RegisterKeyOptions
प्रॉपर्टी
-
एल्गोरिदम
रजिस्टर की गई कुंजी को किस एल्गोरिदम का इस्तेमाल करना चाहिए.
Scope
एंटरप्राइज़ उपयोगकर्ता कुंजी या एंटरप्राइज़ मशीन कुंजी में से किसका इस्तेमाल करना है.
Enum
"USER"
Token
प्रॉपर्टी
-
आईडी
स्ट्रिंग
इस
Token
की अलग-अलग पहचान करता है.स्टैटिक आईडी
"user"
और"system"
होते हैं. ये प्लैटफ़ॉर्म के खास उपयोगकर्ताओं के लिए और पूरे सिस्टम के हार्डवेयर टोकन के बारे में बताते हैं. कोई भी दूसरा टोकन (अन्य आइडेंटिफ़ायर के साथ)enterprise.platformKeys.getTokens
तक लौटाया जा सकता है. -
softwareBackedSubtleCrypto
SubtleCrypto
Chrome 97 और उसके बाद वाले वर्शनयह Webक्रिप्ट के SubtleCrypto इंटरफ़ेस को लागू करता है. कुंजी जनरेट करने के साथ-साथ, क्रिप्टोग्राफ़िक ऑपरेशन, सॉफ़्टवेयर के ज़रिए किए जाते हैं. कुंजियों की सुरक्षा और इस तरह एक्सट्रैक्ट न की जा सकने वाली प्रॉपर्टी को लागू करने का काम सॉफ़्टवेयर में किया जाता है. इसलिए, हार्डवेयर-बैक्ड कुंजियों की तुलना में, कुंजियां कम सुरक्षित होती हैं.
modulusLength
के साथ 2048 तक, सिर्फ़ एक्सट्रैक्ट नहीं की जा सकने वाली आरएसएएसएसए-PKCS1-V1_5 कुंजियां जनरेट की जा सकती हैं. हर पासकोड का इस्तेमाल, डेटा पर हस्ताक्षर करने के लिए ज़्यादा से ज़्यादा एक बार किया जा सकता है.किसी खास
Token
पर जनरेट की गई कुंजियों का इस्तेमाल, किसी दूसरे टोकन के साथ नहीं किया जा सकता. साथ ही, इनका इस्तेमालwindow.crypto.subtle
के साथ भी नहीं किया जा सकता. साथ ही,window.crypto.subtle
का इस्तेमाल करके बनाए गएKey
ऑब्जेक्ट, इस इंटरफ़ेस के साथ इस्तेमाल नहीं किए जा सकते. -
subtleCrypto
SubtleCrypto
WebCrypto के SubtleCrypto इंटरफ़ेस को लागू करता है. कुंजी जनरेट करने के साथ-साथ, क्रिप्टोग्राफ़िक ऑपरेशन, हार्डवेयर के साथ काम करते हैं.
सिर्फ़
modulusLength
तक 2048 तक कीmodulusLength
वाली औरnamedCurve
P-256 के साथ ECDSA कुंजियां जनरेट नहीं की जा सकतीं. हर पासकोड का इस्तेमाल, डेटा पर हस्ताक्षर करने के लिए ज़्यादा से ज़्यादा एक बार किया जा सकता है.किसी खास
Token
पर जनरेट की गई कुंजियों का इस्तेमाल, न तो किसी दूसरे टोकन के साथ किया जा सकता है और न हीwindow.crypto.subtle
के साथ किया जा सकता है. साथ ही,window.crypto.subtle
का इस्तेमाल करके बनाए गएKey
ऑब्जेक्ट, इस इंटरफ़ेस के साथ इस्तेमाल नहीं किए जा सकते.
तरीके
challengeKey()
chrome.enterprise.platformKeys.challengeKey(
options: ChallengeKeyOptions,
callback?: function,
)
challengeMachineKey
और challengeUserKey
की तरह ही है. हालांकि, इसमें रजिस्टर की गई कुंजी के एल्गोरिदम की जानकारी दी जा सकती है. यह हार्डवेयर-साथ काम करने वाली Enterprise Machine Key को चुनौती देता है और इससे रिस्पॉन्स को रिमोट तरीके से पुष्टि करने वाले प्रोटोकॉल की तरह इस्तेमाल करता है. यह सुविधा सिर्फ़ ChromeOS पर काम करती है. साथ ही, यह Verified Access Web API के साथ काम करती है, जो चैलेंज जनरेट करता है और रिस्पॉन्स की पुष्टि करता है.
Verified Access Web API की मदद से पुष्टि होने का मतलब है कि मौजूदा डिवाइस, एक मान्य ChromeOS डिवाइस है. साथ ही, यह भी पुष्टि होती है कि मौजूदा डिवाइस को पुष्टि के दौरान बताए गए डोमेन से मैनेज किया जा रहा है. इसके अलावा, साइन इन किए हुए मौजूदा उपयोगकर्ता को भी पुष्टि के दौरान बताए गए डोमेन से मैनेज किया जा रहा है और डिवाइस की मौजूदा स्थिति, एंटरप्राइज़ डिवाइस नीति के मुताबिक है. उदाहरण के लिए, किसी नीति में यह बताया जा सकता है कि डिवाइस को डेवलपर मोड में नहीं होना चाहिए. पुष्टि करने पर मिलने वाली किसी भी डिवाइस आइडेंटिटी, मौजूदा डिवाइस के हार्डवेयर से पूरी तरह से जुड़ी होती है. अगर "user"
दायरा तय किया गया है, तो पहचान, साइन-इन किए हुए मौजूदा उपयोगकर्ता से भी पूरी तरह से जुड़ी होती है.
इस फ़ंक्शन पर काफ़ी पाबंदियां हैं. अगर मौजूदा डिवाइस को मैनेज नहीं किया जा रहा है, मौजूदा उपयोगकर्ता को मैनेज नहीं किया जा रहा है या एंटरप्राइज़ डिवाइस की नीति के तहत, कॉल करने वाले के लिए यह कार्रवाई साफ़ तौर पर चालू नहीं की गई है, तो यह काम नहीं करेगा. जिस कुंजी को चुनौती दी गई है वह "system"
या "user"
टोकन में मौजूद नहीं होती है. साथ ही, इसे किसी दूसरे एपीआई से ऐक्सेस नहीं किया जा सकता.
पैरामीटर
-
विकल्प
ऑब्जेक्ट में,
ChallengeKeyOptions
में तय किए गए फ़ील्ड शामिल हैं. -
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:(response: ArrayBuffer) => void
-
जवाब
ArrayBuffer
चैलेंज का जवाब.
-
रिटर्न
-
Promise<ArrayBuffer>
मंज़ूरी बाकी हैप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन के साथ काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.
challengeMachineKey()
chrome.enterprise.platformKeys.challengeMachineKey(
challenge: ArrayBuffer,
registerKey?: boolean,
callback?: function,
)
इसके बजाय, challengeKey
का इस्तेमाल करें.
यह हार्डवेयर की मदद से काम करने वाली एंटरप्राइज़ मशीन कुंजी को चुनौती देता है और रिमोट पुष्टि करने वाले प्रोटोकॉल के हिस्से के तौर पर जवाब देता है. यह सिर्फ़ ChromeOS पर और 'पुष्टि किया हुआ ऐक्सेस' वेब एपीआई के साथ काम आता है. यह एपीआई, चैलेंज जारी करता है और जवाबों की पुष्टि करता है. वेरिफ़ाइड ऐक्सेस वेब एपीआई से पुष्टि होने का मतलब है कि: * आपका मौजूदा डिवाइस, ChromeOS डिवाइस है. * मौजूदा डिवाइस को पुष्टि के दौरान बताए गए डोमेन से मैनेज किया जाता है. * साइन-इन किए हुए मौजूदा उपयोगकर्ता को पुष्टि के दौरान तय किए गए डोमेन से मैनेज किया जाता है. * डिवाइस की मौजूदा स्थिति, एंटरप्राइज़ से जुड़ी डिवाइस नीति के मुताबिक है. उदाहरण के लिए, किसी नीति में यह शर्त हो सकती है कि डिवाइस डेवलपर मोड में न हो. * पुष्टि करने पर, डिवाइस की पहचान से जुड़ी जानकारी, मौजूदा डिवाइस के हार्डवेयर से जुड़ी होती है. इस फ़ंक्शन पर काफ़ी पाबंदियां हैं. अगर मौजूदा डिवाइस को मैनेज नहीं किया जा रहा है, मौजूदा उपयोगकर्ता को मैनेज नहीं किया जा रहा है या एंटरप्राइज़ डिवाइस की नीति के तहत, कॉल करने वाले के लिए यह कार्रवाई साफ़ तौर पर चालू नहीं की गई है, तो यह काम नहीं करेगा. Enterprise मशीन कुंजी, "system"
टोकन में मौजूद नहीं होती है. साथ ही, इसे कोई दूसरा एपीआई ऐक्सेस नहीं कर सकता है.
पैरामीटर
-
चैलेंज
ArrayBuffer
Verified Access Web API से मिलने वाला चैलेंज.
-
registerKey
बूलियन ज़रूरी नहीं
Chrome 59 और उसके बाद के वर्शनअगर यह नीति सेट की जाती है, तो मौजूदा एंटरप्राइज़ मशीन कुंजी को
"system"
टोकन के साथ रजिस्टर किया जाता है. साथ ही, यह एंटरप्राइज़ मशीन कुंजी की भूमिका को छोड़ देती है. इसके बाद, पासकोड को किसी सर्टिफ़िकेट से जोड़ा जा सकता है और किसी भी अन्य साइनिंग पासकोड की तरह इस्तेमाल किया जा सकता है. यह पासकोड, 2048-बिट आरएसए है. इसके बाद, इस फ़ंक्शन को कॉल करने पर एक नई Enterprise मशीन पासकोड जनरेट होगी. -
कॉलबैक
फ़ंक्शन वैकल्पिक
callback
पैरामीटर इस तरह दिखता है:(response: ArrayBuffer) => void
-
जवाब
ArrayBuffer
चैलेंज का जवाब.
-
रिटर्न
-
Promise<ArrayBuffer>
मंज़ूरी बाकी हैप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.
challengeUserKey()
chrome.enterprise.platformKeys.challengeUserKey(
challenge: ArrayBuffer,
registerKey: boolean,
callback?: function,
)
इसके बजाय, challengeKey
का इस्तेमाल करें.
यह हार्डवेयर-साथ काम करने वाली Enterprise उपयोगकर्ता कुंजी को चुनौती देता है और रिमोट तरीके से पुष्टि करने वाले प्रोटोकॉल की मदद से रिस्पॉन्स देता है. यह सिर्फ़ ChromeOS पर और 'पुष्टि किया हुआ ऐक्सेस' वेब एपीआई के साथ काम आता है. यह एपीआई, चैलेंज जारी करता है और जवाबों की पुष्टि करता है. वेरिफ़ाइड ऐक्सेस वेब एपीआई की मदद से पुष्टि होने पर, इन सभी बातों का ध्यान रखा जा सकता है: * मौजूदा डिवाइस एक मान्य ChromeOS डिवाइस है. * मौजूदा डिवाइस को, पुष्टि के दौरान बताए गए डोमेन से मैनेज किया जाता है. * साइन इन किए हुए मौजूदा उपयोगकर्ता को, पुष्टि के दौरान बताए गए डोमेन से मैनेज किया जाता है. * डिवाइस की मौजूदा स्थिति, एंटरप्राइज़ उपयोगकर्ता नीति के मुताबिक हो. उदाहरण के लिए, किसी नीति में यह बताया जा सकता है कि डिवाइस को डेवलपर मोड में नहीं होना चाहिए. * पुष्टि करने के लिए जनरेट की गई सार्वजनिक कुंजी, मौजूदा डिवाइस के हार्डवेयर और साइन इन किए हुए मौजूदा उपयोगकर्ता से पूरी तरह जुड़ी होती है. यह फ़ंक्शन पूरी तरह प्रतिबंधित है. अगर मौजूदा डिवाइस को मैनेज नहीं किया गया है, मौजूदा उपयोगकर्ता को मैनेज नहीं किया जा रहा है या इसे एंटरप्राइज़ उपयोगकर्ता नीति के हिसाब से कॉलर के लिए साफ़ तौर पर चालू नहीं किया गया है, तो यह फ़ंक्शन काम नहीं करेगा. Enterprise उपयोगकर्ता कुंजी, "user"
टोकन में मौजूद नहीं होती है. साथ ही, इसे किसी दूसरे एपीआई से ऐक्सेस नहीं किया जा सकता.
पैरामीटर
-
चैलेंज
ArrayBuffer
Verified Access Web API से मिलने वाला चैलेंज.
-
registerKey
बूलियन
अगर नीति को सेट किया जाता है, तो मौजूदा 'एंटरप्राइज़ उपयोगकर्ता कुंजी',
"user"
टोकन के साथ रजिस्टर किया जाता है. साथ ही, एंटरप्राइज़ उपयोगकर्ता कुंजी की भूमिका को छोड़ देता है. इसके बाद, कुंजी को किसी सर्टिफ़िकेट के साथ जोड़ा जा सकता है और उसे किसी भी दूसरे साइनिंग पासकोड की तरह इस्तेमाल किया जा सकता है. यह पासकोड, 2048-बिट आरएसए है. इसके बाद, इस फ़ंक्शन को फिर से कॉल करने पर, एक नई Enterprise User Key जनरेट होगी. -
कॉलबैक
फ़ंक्शन वैकल्पिक
callback
पैरामीटर इस तरह दिखता है:(response: ArrayBuffer) => void
-
जवाब
ArrayBuffer
चैलेंज का जवाब.
-
रिटर्न
-
Promise<ArrayBuffer>
मंज़ूरी बाकी हैप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.
getCertificates()
chrome.enterprise.platformKeys.getCertificates(
tokenId: string,
callback?: function,
)
दिए गए टोकन से उपलब्ध सभी क्लाइंट सर्टिफ़िकेट की सूची दिखाता है. इसका इस्तेमाल, किसी खास पुष्टि के लिए इस्तेमाल किए जा सकने वाले क्लाइंट सर्टिफ़िकेट की मौजूदगी और समयसीमा खत्म होने की जांच करने के लिए किया जा सकता है.
पैरामीटर
-
tokenId
स्ट्रिंग
getTokens
से मिले टोकन का आईडी. -
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:(certificates: ArrayBuffer[]) => void
-
सर्टिफ़िकेट
ArrayBuffer[]
सर्टिफ़िकेट की सूची, जिसमें हर सर्टिफ़िकेट का DER एन्कोडिंग पता होता है. यह कोड X.509 सर्टिफ़िकेट का होता है.
-
रिटर्न
-
Promise<ArrayBuffer[]>
मंज़ूरी बाकी हैप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.
getTokens()
chrome.enterprise.platformKeys.getTokens(
callback?: function,
)
उपलब्ध टोकन दिखाता है. किसी सामान्य उपयोगकर्ता के सेशन में, सूची में हमेशा उपयोगकर्ता का id
"user"
वाला टोकन शामिल होगा. अगर सिस्टम-वाइड टीपीएम टोकन उपलब्ध है, तो दिखाई गई सूची में id
"system"
वाला सिस्टम-वाइड टोकन भी शामिल होगा. इस डिवाइस के सभी सेशन के लिए, पूरे सिस्टम का टोकन एक ही रहेगा. उदाहरण के लिए, Chromebook डिवाइस.
पैरामीटर
रिटर्न
-
प्रॉमिस<टोकन[]>
मंज़ूरी बाकी हैप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.
importCertificate()
chrome.enterprise.platformKeys.importCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
)
अगर सर्टिफ़ाइड पासकोड पहले से ही इस टोकन में सेव है, तो दिए गए टोकन में certificate
को इंपोर्ट करता है. सर्टिफ़िकेशन के अनुरोध पर कार्रवाई करने के बाद, इस फ़ंक्शन का इस्तेमाल, मिले सर्टिफ़िकेट को सेव करने के लिए किया जाना चाहिए. साथ ही, इसे ऑपरेटिंग सिस्टम और ब्राउज़र में उपलब्ध कराने के लिए भी किया जाना चाहिए, ताकि पुष्टि की जा सके.
पैरामीटर
-
tokenId
स्ट्रिंग
getTokens
से मिले टोकन का आईडी. -
सर्टिफ़िकेट
ArrayBuffer
X.509 सर्टिफ़िकेट की DER एन्कोडिंग.
-
कॉलबैक
फ़ंक्शन ज़रूरी नहीं
callback
पैरामीटर ऐसा दिखता है:() => void
रिटर्न
-
प्रॉमिस<void>
मंज़ूरी बाकी हैप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन के साथ काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.
removeCertificate()
chrome.enterprise.platformKeys.removeCertificate(
tokenId: string,
certificate: ArrayBuffer,
callback?: function,
)
दिए गए टोकन के मौजूद होने पर, उससे certificate
को हटाता है. इसका इस्तेमाल, पुराने सर्टिफ़िकेट हटाने के लिए किया जाना चाहिए, ताकि पुष्टि के दौरान उनका इस्तेमाल न किया जाए और सर्टिफ़िकेट के विकल्पों में गड़बड़ी न हो. इसका इस्तेमाल, सर्टिफ़िकेट स्टोर में स्टोरेज खाली करने के लिए किया जाना चाहिए.
पैरामीटर
-
tokenId
स्ट्रिंग
getTokens
से मिले टोकन का आईडी. -
सर्टिफ़िकेट
ArrayBuffer
X.509 सर्टिफ़िकेट की DER एन्कोडिंग.
-
कॉलबैक
फ़ंक्शन वैकल्पिक
callback
पैरामीटर इस तरह दिखता है:() => void
रिटर्न
-
प्रॉमिस<void>
मंज़ूरी बाकी हैप्रॉमिस सिर्फ़ मेनिफ़ेस्ट V3 और उसके बाद के वर्शन पर काम करता है. दूसरे प्लैटफ़ॉर्म को कॉलबैक इस्तेमाल करने होते हैं.