Google Workspace या Google Workspace for Education के ग्राहकों को, Google Workspace, सिंगल साइन-ऑन (एसएसओ) की सुविधा देता है. Google Workspace के सिंगल साइन-ऑन की सुविधा, आरएसए या डीएसए एल्गोरिदम से जनरेट की गई सार्वजनिक कुंजियों और सर्टिफ़िकेट को स्वीकार करती है. इस सुविधा का इस्तेमाल करने के लिए, आपको सार्वजनिक और निजी कुंजियों का सेट और X.509 सर्टिफ़िकेट जनरेट करना होगा. इस सर्टिफ़िकेट में सार्वजनिक कुंजी शामिल होती है. सार्वजनिक कुंजी या सर्टिफ़िकेट मिलने के बाद, आपको इसे Google के साथ रजिस्टर करना होगा. इसके लिए, आपको बस Google Admin console के ज़रिए कुंजी या सर्टिफ़िकेट अपलोड करना होगा.
कुंजियां और सर्टिफ़िकेट जनरेट करने का तरीका, अक्सर आपके डेवलपमेंट प्लैटफ़ॉर्म और प्रोग्रामिंग भाषा की प्राथमिकता पर निर्भर करता है. यहां Google Workspace के एसएसओ की सुविधा के लिए ज़रूरी कुंजियां और सर्टिफ़िकेट जनरेट करने के कई अलग-अलग तरीके दिए गए हैं.
OpenSSL का इस्तेमाल करना
सार्वजनिक और निजी कुंजी के जोड़े बनाने के कई तरीके हैं. हालांकि, ओपन-सोर्स OpenSSL टूल सबसे लोकप्रिय तरीकों में से एक है. इसे सभी मुख्य प्लैटफ़ॉर्म पर पोर्ट किया गया है. साथ ही, यह कुंजी जनरेट करने के लिए, कमांड-लाइन का आसान इंटरफ़ेस उपलब्ध कराता है.
आरएसए निजी कुंजी बनाना
OpenSSL की मदद से, आरएसए निजी कुंजी जनरेट करने के लिए सिर्फ़ एक चरण पूरा करना होता है:
openssl genrsa -out rsaprivkey.pem 2048
इस निर्देश से, PEM-एनकोडेड निजी कुंजी जनरेट होती है और यह rsaprivkey.pem फ़ाइल में सेव हो जाती है. इस उदाहरण में, 2048-बिट की कुंजी बनाई गई है. इसका इस्तेमाल लगभग किसी भी मकसद के लिए किया जा सकता है. जनरेट की गई निजी कुंजी को गोपनीय रखा जाना चाहिए. इसका इस्तेमाल, डेटा पर हस्ताक्षर करने और उसे डिक्रिप्ट करने के लिए किया जाता है.
कुछ लागू करने के लिए, खास तौर पर Java पर आधारित, DER या PKCS8 की ज़रूरत हो सकती है. उदाहरण के लिए, इन्हें इन अतिरिक्त चरणों का इस्तेमाल करके जनरेट किया जा सकता है:
openssl rsa -in rsaprivkey.pem -pubout -outform DER -out rsapubkey.deropenssl pkcs8 -topk8 -inform PEM -outform DER -in rsaprivkey.pem -out rsaprivkey.der -nocrypt
पहले चरण में, सार्वजनिक कुंजी को DER फ़ॉर्मैट में जनरेट किया जाता है.
दूसरे चरण में, निजी कुंजी को
pkcs8 और DER फ़ॉर्मैट में जनरेट किया जाता है. जनरेट होने के बाद, इन कुंजियों (rsapubkey.der और rsaprivkey.der) का इस्तेमाल किया जा सकता है.
डीएसए निजी कुंजी बनाना
डीएसए कुंजी जनरेट करने के लिए, ये दो चरण पूरे करने होंगे:
openssl dsaparam -out dsaparam.pem 2048openssl gendsa -out dsaprivkey.pem dsaparam.pem
पहले चरण में, डीएसए पैरामीटर फ़ाइल, dsaparam.pem बनाई जाती है. इस मामले में, यह OpenSSL को दूसरे चरण में 2048-बिट की कुंजी बनाने का निर्देश देती है. dsaparam.pem फ़ाइल, कुंजी नहीं होती. सार्वजनिक और निजी कुंजियां बनने के बाद, इसे हटाया जा सकता है. दूसरे चरण में, निजी कुंजी को dsaprivkey.pem फ़ाइल में बनाया जाता है. इसे गोपनीय रखा जाना चाहिए.
कुंजी को DER (बाइनरी) फ़ॉर्मैट में एक्सपोर्ट करने के लिए, यह तरीका अपनाएं:
openssl dsa -in dsaprivkey.pem -outform DER -pubout -out dsapubkey.deropenssl pkcs8 -topk8 -inform PEM -outform DER -in dsaprivkey.pem -out dsaprivkey.der -nocrypt
पहले चरण में, सार्वजनिक कुंजी को DER फ़ॉर्मैट में एक्सट्रैक्ट किया जाता है.
दूसरे चरण में, निजी कुंजी को
pkcs8 और DER फ़ॉर्मैट में बदला जाता है. ऐसा करने के बाद, सार्वजनिक (dsapubkey.der) और निजी (dsaprivkey.der) कुंजी के इस जोड़े का इस्तेमाल किया जा सकता है
सर्टिफ़िकेट बनाना
कुंजी का जोड़ा मिलने के बाद, X.509 सर्टिफ़िकेट बनाना आसान है. सर्टिफ़िकेट में, उससे जुड़ी सार्वजनिक कुंजी के साथ-साथ, सर्टिफ़िकेट बनाने वाले संगठन से जुड़ा कुछ मेटाडेटा भी शामिल होता है. आरएसए या डीएसए निजी कुंजी की मदद से, सेल्फ़-साइन किया गया सर्टिफ़िकेट बनाने के लिए, यह तरीका अपनाएं:
openssl req -new -x509 -key dsaprivkey.pem -out dsacert.pem
कुछ सवालों के जवाब देने के बाद, सर्टिफ़िकेट बन जाएगा और dsacert.pem के तौर पर सेव हो जाएगा. एसएसओ को कॉन्फ़िगर करते समय, आपको कंट्रोल पैनल के ज़रिए इस फ़ाइल को Google Workspace पर अपलोड करना होगा.
सर्टिफ़िकेट फ़िंगरप्रिंट बनाना
कुछ ऐप्लिकेशन के लिए, X.509 सर्टिफ़िकेट के बजाय, X.509 सर्टिफ़िकेट फ़िंगरप्रिंट की ज़रूरत होती है. फ़िंगरप्रिंट, x509 बाइनरी फ़ॉर्मैट में सर्टिफ़िकेट का डाइजेस्ट होता है. फ़िंगरप्रिंट का टाइप, इसे जनरेट करने के लिए इस्तेमाल किए गए एल्गोरिदम पर निर्भर करता है. जैसे, SHA-1 या SHA-256.
X.509 सर्टिफ़िकेट से SHA-256 फ़िंगरप्रिंट बनाने के लिए, यह निर्देश इस्तेमाल करें. इसमें, सर्टिफ़िकेट की .pem फ़ाइल के असली नाम का इस्तेमाल करें:
openssl x509 -noout -fingerprint -sha256 -inform pem -in "GoogleIDPCertificate-domain.com.pem"
.NET के लिए Microsoft Visual Studio का इस्तेमाल करना
Microsoft Visual Studio 2005, Common7ToolsBin डायरेक्ट्री में यूटिलिटी उपलब्ध कराता है. इनका इस्तेमाल, Google Workspace के साथ इस्तेमाल करने के लिए सर्टिफ़िकेट जनरेट करने के लिए किया जा सकता है. .NET में सार्वजनिक और निजी कुंजी का जोड़ा और सर्टिफ़िकेट बनाने के लिए, यह तरीका अपनाएं:
makecert -r -pe -n "CN=Test Certificate" -sky exchange -sv testcert.pvk testcert.cerpvk2pfx -pvk testcert.pvk -spc testcert.cer -pfx testcert.pfx
ऊपर दिए गए निर्देशों में, डिफ़ॉल्ट रूप से आरएसए एल्गोरिदम का इस्तेमाल किया जाता है. पहले चरण में,
सर्टिफ़िकेट
क्रिएशन टूल
(makecert.exe) का इस्तेमाल करके, सेल्फ़-साइन किया गया X.509 सर्टिफ़िकेट बनाया जाता है. इसे testcert.cer
कहा जाता है. साथ ही, इससे जुड़ी निजी कुंजी भी बनाई जाती है.
दूसरे चरण में,
pvk2pfx
टूल (pvk2pfx.exe) का इस्तेमाल करके,
CER और PVK फ़ाइल से, पर्सनल इन्फ़ॉर्मेशन एक्सचेंज (PFX) फ़ाइल बनाई जाती है. PFX में, आपकी सार्वजनिक और निजी कुंजी, दोनों शामिल होती हैं.
पहले चरण में बनाई गई testcert.cer फ़ाइल को, कंट्रोल पैनल का इस्तेमाल करके Google Workspace पर अपलोड किया जा सकता है. वहीं, दूसरे चरण में बनाई गई testcert.pfx फ़ाइल का इस्तेमाल, SAML रिस्पॉन्स पर हस्ताक्षर करने के लिए, X509Certificate2 (.NET 2.0+) इंस्टेंस बनाने के लिए किया जा सकता है.
Java में Keytool का इस्तेमाल करना
Java डेवलपर, सार्वजनिक/निजी कुंजी का जोड़ा और X.509 सर्टिफ़िकेट बनाने के लिए, स्टैंडर्ड JDK में मौजूद keytool यूटिलिटी का इस्तेमाल कर सकते हैं. keytool , कुंजी और सर्टिफ़िकेट मैनेजमेंट की एक यूटिलिटी है. इसकी मदद से, उपयोगकर्ता अपनी सार्वजनिक/निजी कुंजी के जोड़े और उनसे जुड़े सर्टिफ़िकेट को मैनेज कर सकते हैं. इनका इस्तेमाल, डिजिटल सिग्नेचर की ज़रूरत वाले पुष्टि करने के स्कीमा में किया जा सकता है. keytool , कुंजियों और सर्टिफ़िकेट को "कीस्टोर" में सेव करता है. डिफ़ॉल्ट तौर पर, यह उपयोगकर्ता की होम डायरेक्ट्री में मौजूद एक फ़ाइल (.keystore) होती है. निजी कुंजियों को पासवर्ड से सुरक्षित रखा जाता है.
डीएसए कुंजी के जोड़े बनाना
keytool -genkey -alias dsassokey -keyalg "DSA" -keysize 2048 -validity 180 -sigalg "SHA256withDSA"keytool -export -alias dsassokey -file dsasso.cer
पहले चरण में, डीएसए एल्गोरिदम का इस्तेमाल करके, 2048 साइज़ और 180 दिनों की वैधता वाली सार्वजनिक/निजी कुंजी का जोड़ा जनरेट किया जाता है.
दूसरे चरण में, सार्वजनिक कुंजी से X.509 सर्टिफ़िकेट (dsasso.cer) जनरेट किया जाता है. इसके बाद, कंट्रोल पैनल का इस्तेमाल करके, dsasso.cer को Google Workspace पर अपलोड किया जाता है.
आरएसए कुंजी के जोड़े बनाना
keytool -genkey -alias rsassokey -keyalg "RSA" -keysize 2048 -validity 180keytool -export -alias rsassokey -file rsasso.cer
पहले चरण में, आरएसए एल्गोरिदम का इस्तेमाल करके, 2048 साइज़ और 180 दिनों की वैधता वाली सार्वजनिक/निजी कुंजी का जोड़ा जनरेट किया जाता है.
दूसरे चरण में, सार्वजनिक कुंजी से X.509 सर्टिफ़िकेट (rsasso.cer) जनरेट किया जाता है. इसके बाद, कंट्रोल पैनल का इस्तेमाल करके, को Google Workspace पर अपलोड किया जाता है.
rsasso.cer
Java Cryptography Architecture का इस्तेमाल करना
Java Cryptography Architecture (JCA), सुरक्षा से जुड़ी प्रॉपर्टी जनरेट और उनमें बदलाव करने के लिए, मुख्य क्लास और इंटरफ़ेस उपलब्ध कराता है. JCA में, Java 2 SDK Security API के वे हिस्से शामिल हैं जो क्रिप्टोग्राफ़ी से जुड़े हैं. इस एपीआई का इस्तेमाल करके, सार्वजनिक और निजी कुंजी के जोड़े को आसानी से, चुने गए एल्गोरिदम में जनरेट किया जा सकता है. यहां एक सैंपल कोड दिया गया है. इसकी मदद से, Google Workspace के एसएसओ की सुविधा के साथ इस्तेमाल करने के लिए, डीएसए या आरएसए कुंजियां बनाई जा सकती हैं.
सार्वजनिक और निजी कुंजी का जोड़ा बनाना
import java.io.*;
import java.security.*;
public class KeyGenDSA {
public static void main(String[] args) {
try {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("DSA");
SecureRandom random = SecureRandom.getInstanceStrong();
keyGen.initialize(2048, random);
KeyPair pair = keyGen.generateKeyPair();
PrivateKey priv = pair.getPrivate();
PublicKey pub = pair.getPublic();
byte[] encPriv = priv.getEncoded();
FileOutputStream privfos = new FileOutputStream("DSAPrivateKey.key");
privfos.write(encPriv);
privfos.close();
byte[] encPub = pub.getEncoded();
FileOutputStream pubfos = new FileOutputStream("DSAPublicKey.key");
pubfos.write(encPub);
pubfos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
ऊपर दिए गए कोड में, डीएसए कुंजियों का जोड़ा बनाने के लिए, KeyPairGenerator का इस्तेमाल किया गया है. जनरेट की गई कुंजियां, बाइनरी फ़ॉर्मैट में होंगी और इन्हें अलग-अलग फ़ाइलों में आउटपुट किया जाएगा.
कुंजियां मिलने के बाद, सार्वजनिक कुंजी को Google Workspace के साथ रजिस्टर किया जा सकता है. साथ ही, निजी कुंजी का इस्तेमाल करके, SAMLResponse पर हस्ताक्षर किया जा सकता है. डीएसए के बजाय, आरएसए कुंजियों का जोड़ा जनरेट करने के लिए, आपको कोड में
"DSA" की जगह "RSA" का इस्तेमाल करना होगा.
अपने सर्टिफ़िकेट या सार्वजनिक कुंजी को Google Workspace के साथ रजिस्टर करना
कुंजियां और सर्टिफ़िकेट जनरेट करने का मुश्किल काम पूरा करने के बाद, अगला चरण बहुत आसान है. अपने सर्टिफ़िकेट या सार्वजनिक कुंजी को Google Workspace के साथ रजिस्टर करने के लिए, आपको Admin console पर जाना होगा और एडमिन के तौर पर लॉग इन करना होगा. सुरक्षा को चुनें. इसके बाद, सिंगल साइन-ऑन (एसएसओ) सेट अप करें को चुनें. फिर, तीसरे पक्ष की 'पहचान देने वाली सेवा' के साथ एसएसओ (SSO) सेट अप करें में जाकर, पेज पर मौजूद सभी फ़ील्ड भरें.