एसएसओ के लिए कुंजियां और सर्टिफ़िकेट जनरेट करना

Google Workspace, Google Workspace या Google Workspace for Education का इस्तेमाल करने वाले ग्राहकों को सिंगल साइन-ऑन (एसएसओ) सेवा देता है. Google Workspace के सिंगल साइन-ऑन की सेवा, RSA या DSA एल्गोरिदम से जनरेट की गई सार्वजनिक कुंजियों और सर्टिफ़िकेट को स्वीकार करती है. इस सेवा का इस्तेमाल करने के लिए, आपको सार्वजनिक और निजी कुंजियों का सेट और X.509 सर्टिफ़िकेट जनरेट करना होगा. इस सर्टिफ़िकेट में सार्वजनिक कुंजी शामिल होती है. सार्वजनिक कुंजी या सर्टिफ़िकेट मिलने के बाद, आपको इसे Google के साथ रजिस्टर करना होगा. इसके लिए, Google Admin console में जाकर कुंजी या सर्टिफ़िकेट अपलोड करें.

कुंजियां और सर्टिफ़िकेट जनरेट करने का तरीका, अक्सर आपके डेवलपमेंट प्लैटफ़ॉर्म और प्रोग्रामिंग भाषा की प्राथमिकता पर निर्भर करता है. Google Workspace SSO सेवा के लिए ज़रूरी कुंजियां और सर्टिफ़िकेट जनरेट करने के कई तरीके यहां दिए गए हैं.

OpenSSL का इस्तेमाल करना

सार्वजनिक और निजी कुंजी के जोड़े बनाने के कई तरीके हैं. हालांकि, ओपन-सोर्स OpenSSL टूल सबसे ज़्यादा लोकप्रिय है. इसे सभी मुख्य प्लैटफ़ॉर्म पर पोर्ट किया गया है. साथ ही, यह कुंजी जनरेट करने के लिए एक आसान कमांड-लाइन इंटरफ़ेस उपलब्ध कराता है.

आरएसए निजी पासकोड बनाना

OpenSSL की मदद से आरएसए निजी पासकोड जनरेट करने के लिए, सिर्फ़ एक चरण पूरा करना होता है:

openssl genrsa -out rsaprivkey.pem 2048

यह कमांड, PEM फ़ॉर्मैट में बदली गई निजी कुंजी जनरेट करती है और इसे rsaprivkey.pem फ़ाइल में सेव करती है. इस उदाहरण में, 2048-बिट की कुंजी बनाई गई है. यह लगभग हर मकसद के लिए काम करेगी. निजी कुंजी को गोपनीय रखना चाहिए. इसका इस्तेमाल डेटा को साइन और डिक्रिप्ट करने के लिए किया जाता है.

खास तौर पर, Java पर आधारित कुछ सिस्टम के लिए DER या PKCS8 की ज़रूरत पड़ सकती है. इन्हें जनरेट करने के लिए, यहां दिए गए अतिरिक्त चरणों का पालन करें:

  1. openssl rsa -in rsaprivkey.pem -pubout -outform DER -out rsapubkey.der
  2. openssl pkcs8 -topk8 -inform PEM -outform DER -in rsaprivkey.pem -out rsaprivkey.der -nocrypt

पहले चरण में, DER फ़ॉर्मैट में सार्वजनिक पासकोड जनरेट होता है.

दूसरे चरण में, निजी पासकोड को pkcs8 और DER फ़ॉर्मैट में जनरेट किया जाता है. जनरेट होने के बाद, इन कुंजियों (rsapubkey.der और rsaprivkey.der) का इस्तेमाल किया जा सकता है.

DSA Private Key बनाना

DSA कुंजी जनरेट करने की प्रोसेस में दो चरण शामिल होते हैं:

  1. openssl dsaparam -out dsaparam.pem 2048
  2. openssl gendsa -out dsaprivkey.pem dsaparam.pem

पहले चरण में, डीएसए पैरामीटर फ़ाइल dsaparam.pem बनाई जाती है. इस मामले में, यह OpenSSL को दूसरे चरण में 2048-बिट की कुंजी बनाने का निर्देश देता है. dsaparam.pem फ़ाइल, खुद कोई कुंजी नहीं है. सार्वजनिक और निजी कुंजियां बनाने के बाद, इसे हटाया जा सकता है. दूसरे चरण में, फ़ाइल dsaprivkey.pem में निजी कुंजी बनाई जाती है. इसे गोपनीय रखना चाहिए.

कुंजी को DER (बाइनरी) फ़ॉर्मैट में एक्सपोर्ट करने के लिए, यह तरीका अपनाएं:

  1. openssl dsa -in dsaprivkey.pem -outform DER -pubout -out dsapubkey.der
  2. openssl 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 में सार्वजनिक और निजी कुंजी का जोड़ा और सर्टिफ़िकेट बनाने के लिए, यह तरीका अपनाएं:

  1. makecert -r -pe -n "CN=Test Certificate" -sky exchange -sv testcert.pvk testcert.cer
  2. pvk2pfx -pvk testcert.pvk -spc testcert.cer -pfx testcert.pfx

ऊपर दिए गए निर्देशों में, डिफ़ॉल्ट रूप से आरएसए एल्गोरिदम का इस्तेमाल किया जाता है. पहले चरण में, सर्टिफ़िकेट बनाने वाले टूल (makecert.exe) का इस्तेमाल करके, testcert.cer नाम का एक सेल्फ़ साइन किया गया X.509 सर्टिफ़िकेट और उससे जुड़ी निजी कुंजी बनाई जाती है.

दूसरे चरण में, 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) होती है, जो उपयोगकर्ता की होम डायरेक्ट्री में होती है. निजी पासकोड को पासवर्ड से सुरक्षित रखा जाता है.

DSA कुंजी के जोड़े बनाना

  1. keytool -genkey -alias dsassokey -keyalg "DSA" -keysize 2048 -validity 180 -sigalg "SHA256withDSA"
  2. keytool -export -alias dsassokey -file dsasso.cer

पहले चरण में, DSA एल्गोरिदम का इस्तेमाल करके 2048 साइज़ का सार्वजनिक/निजी कुंजी का जोड़ा जनरेट किया जाता है. इसकी वैधता 180 दिन होती है.

दूसरे चरण में, सार्वजनिक पासकोड से X.509 सर्टिफ़िकेट (dsasso.cer) जनरेट होता है. इसके बाद, कंट्रोल पैनल का इस्तेमाल करके dsasso.cer को Google Workspace पर अपलोड करें.

आरएसए कुंजी के जोड़े बनाना

  1. keytool -genkey -alias rsassokey -keyalg "RSA" -keysize 2048 -validity 180
  2. keytool -export -alias rsassokey -file rsasso.cer

पहले चरण में, आरएसए एल्गोरिदम का इस्तेमाल करके, 2048 साइज़ का सार्वजनिक या निजी पासकोड जनरेट किया जाता है. इसकी वैधता 180 दिन होती है.

दूसरे चरण में, सार्वजनिक पासकोड से X.509 सर्टिफ़िकेट (rsasso.cer) जनरेट होता है. इसके बाद, कंट्रोल पैनल का इस्तेमाल करके rsasso.cer को Google Workspace में अपलोड करें.

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();
   }
  }
}

ऊपर दिए गए कोड में, DSA कुंजियों का जोड़ा बनाने के लिए KeyPairGenerator का इस्तेमाल किया गया है. जनरेट की गई कुंजियां, बाइनरी फ़ॉर्मैट में होंगी. इन्हें अलग-अलग फ़ाइलों में सेव किया जाएगा. कुंजियां मिलने के बाद, Google Workspace में सार्वजनिक कुंजी रजिस्टर की जा सकती है. साथ ही, निजी कुंजी का इस्तेमाल करके अपने SAMLResponse पर हस्ताक्षर किए जा सकते हैं. डीएसए के बजाय आरएसए कुंजियों का पेयर जनरेट करने के लिए, आपको कोड में "DSA" को "RSA" से बदलना होगा.

Google Workspace में अपना सर्टिफ़िकेट या सार्वजनिक पासकोड रजिस्टर करना

कुंजियां और सर्टिफ़िकेट जनरेट करने के बाद, अगला चरण बहुत आसान होता है. अपने सर्टिफ़िकेट या सार्वजनिक पासकी को Google Workspace के साथ रजिस्टर करने के लिए, आपको Admin console पर जाना होगा और एडमिन के तौर पर लॉग इन करना होगा. सुरक्षा चुनें. इसके बाद, सिंगल साइन-ऑन (एसएसओ) सेट अप करें को चुनें. इसके बाद, तीसरे पक्ष की पहचान देने वाली सेवा के साथ एसएसओ सेट अप करें में जाकर, पेज पर मौजूद सभी फ़ील्ड भरें.