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