इस दस्तावेज़ में, Gmail API के साथ S/MIME ईमेल सर्टिफ़िकेट इस्तेमाल करने का तरीका बताया गया है.
Gmail API, Google Workspace डोमेन में मौजूद उपयोगकर्ताओं के लिए, S/MIME ईमेल सर्टिफ़िकेट मैनेज करने का प्रोग्रामैटिक ऐक्सेस देता है.
सर्टिफ़िकेट के काम करने के लिए, एडमिन को डोमेन के लिए होस्ट किया गया एस/एमआईएमई चालू करना होगा.
एस/एमआईएमई स्टैंडर्ड, सार्वजनिक पासकोड एन्क्रिप्शन और एमआईएमई डेटा पर हस्ताक्षर करने के लिए एक स्पेसिफ़िकेशन उपलब्ध कराता है. किसी उपयोगकर्ता खाते के लिए S/MIME सर्टिफ़िकेट कॉन्फ़िगर करने पर, Gmail इनका इस्तेमाल इन तरीकों से करता है:
उपयोगकर्ता के सर्टिफ़िकेट और निजी पासकोड का इस्तेमाल करके, भेजे जाने वाले ईमेल पर हस्ताक्षर करें.
यह कुकी, उपयोगकर्ता के निजी पासकोड का इस्तेमाल करके आने वाले ईमेल को डिक्रिप्ट करती है.
ईमेल पाने वाले व्यक्ति के सर्टिफ़िकेट और सार्वजनिक पासकोड का इस्तेमाल करके, भेजे जाने वाले ईमेल को एन्क्रिप्ट (सुरक्षित) करें.
भेजने वाले के सर्टिफ़िकेट और सार्वजनिक कुंजी की मदद से, आने वाले ईमेल की पुष्टि करें.
Gmail API का इस्तेमाल करके, अलग-अलग S/MIME सर्टिफ़िकेट जनरेट किए जा सकते हैं और उन्हें अपलोड किया जा सकता है. हर एस/एमआईएमई सर्टिफ़िकेट, उपयोगकर्ता के ईमेल खाते के किसी खास उपनाम के लिए होता है. उपनाम में मुख्य ईमेल पता और पसंद के मुताबिक बनाए गए 'इस पते से भेजें' पते शामिल होते हैं. यह एपीआई, हर उपनाम के लिए एक एस/एमआईएमई सर्टिफ़िकेट को डिफ़ॉल्ट के तौर पर मार्क करता है.
उपनामों के बारे में ज़्यादा जानने के लिए, Gmail API की मदद से उपनाम और हस्ताक्षर मैनेज करना लेख पढ़ें.
एपीआई ऐक्सेस करने की अनुमति देना
Gmail API को ऐक्सेस करने की अनुमति देने के लिए, इनमें से किसी एक तरीके का इस्तेमाल करें:
पूरे डोमेन को ऐक्सेस देने की सुविधा वाले सेवा खाते का इस्तेमाल करें. इन शब्दों के बारे में जानने के लिए, पुष्टि करने और अनुमति देने के बारे में जानें लेख पढ़ें. इस विकल्प को चालू करने के लिए, ऐक्सेस क्रेडेंशियल बनाएं लेख पढ़ें.
OAuth 2.0 के ऐक्सेस टोकन को पाने के लिए, OAuth 2.0 के स्टैंडर्ड फ़्लो का इस्तेमाल करें. इसके लिए, उपयोगकर्ता की सहमति ज़रूरी होती है. ज़्यादा जानकारी के लिए, पुष्टि करने और अनुमति देने के बारे में जानें लेख पढ़ें.
इस विकल्प का इस्तेमाल करने के लिए, डोमेन एडमिन को Google Admin console में, ईमेल भेजने और पाने के लिए S/MIME एन्क्रिप्शन चालू करें चेकबॉक्स को चुनना होगा. ज़्यादा जानकारी के लिए, Admin console में होस्ट किए गए S/MIME की सुविधा चालू करना लेख पढ़ें.
अनुमति पाने के लिंक
Gmail API, Gmail sendAs तरीकों के लिए इस्तेमाल होने वाले OAuth के स्कोप का इस्तेमाल करता है:
gmail.settings.basic: प्राइमरीSendAsS/MIME को अपडेट करने के लिए ज़रूरी है.gmail.settings.sharing: कस्टम from S/MIME को अपडेट करने के लिए ज़रूरी है.
S/MIME कुंजियां कॉन्फ़िगर करना
settings.sendAs.smimeInfo संसाधन में, S/MIME सर्टिफ़िकेट मैनेज करने के कई तरीके बताए गए हैं. हर
सर्टिफ़िकेट, किसी उपयोगकर्ता के लिए 'इस पते से भेजें' सुविधा के एक ईमेल पते से जुड़ा होता है.
किसी उपयोगकर्ता के लिए, 'इस पते से भेजें' सुविधा के तहत इस्तेमाल किए जाने वाले ईमेल पतों का पता लगाने के लिए, settings.sendAs संसाधन पर settings.sendAs.list तरीके का इस्तेमाल करें.
S/MIME कुंजी अपलोड करना
किसी उपयोगकर्ता के एलियास के लिए नई S/MIME कुंजी अपलोड करने के लिए, settings.sendAs.smimeInfo संसाधन पर settings.sendAs.smimeInfo.insert तरीके का इस्तेमाल करें. पाथ पैरामीटर का इस्तेमाल करके, टारगेट के उपनाम की पहचान करें:
userId: उपयोगकर्ता का ईमेल पता. सत्यापित उपयोगकर्ता के लिए, खास वैल्यूmeका इस्तेमाल करें.sendAsEmail: वह एलियास जिसके लिए कुंजी अपलोड की जा रही है. यह ईमेल पता, इस दूसरे ईमेल पते से भेजे गए मेल केFrom:हेडर में दिखता है.
S/MIME सर्टिफ़िकेट और निजी पासकोड को PKCS #12 फ़ॉर्मैट में pkcs12 फ़ील्ड में डालें. अनुरोध में कोई अन्य फ़ील्ड सेट न करें. pkcs12 फ़ील्ड में, उपयोगकर्ता का एस/एमआईएमई पासकोड और साइनिंग सर्टिफ़िकेट चेन, दोनों शामिल होते हैं. एपीआई इस फ़ील्ड को स्वीकार करने से पहले, इस पर स्टैंडर्ड पुष्टि करता है. इसमें इन बातों की पुष्टि की जाती है:
- विषय, दिए गए ईमेल पते से मेल खाता हो.
- समयसीमा खत्म होने की तारीखें मान्य हैं.
- सर्टिफ़िकेट जारी करने वाली संस्था (सीए), Google की भरोसेमंद सूची में शामिल हो.
- सर्टिफ़िकेट, Gmail की तकनीकी शर्तों के मुताबिक हों.
अगर कुंजी को एन्क्रिप्ट (सुरक्षित) किया गया है, तो encryptedKeyPassword फ़ील्ड में पासवर्ड डालें. settings.sendAs.smimeInfo.insert तरीके को कॉल करने पर, settings.sendAs.smimeInfo संसाधन id मिलता है. इसका इस्तेमाल आने वाले समय में कुंजी को रेफ़र करने के लिए किया जाता है.
किसी उपयोगकर्ता के S/MIME कुंजियों की सूची बनाना
settings.sendAs.smimeInfo संसाधन पर settings.sendAs.smimeInfo.list तरीके का इस्तेमाल करके, दिए गए उपयोगकर्ता के लिए दिए गए उपनाम के S/MIME कुंजियों की सूची वापस पाएं. पाथ पैरामीटर का इस्तेमाल करके, टारगेट के उपनाम की पहचान करें:
userId: उपयोगकर्ता का ईमेल पता. सत्यापित उपयोगकर्ता के लिए, खास वैल्यूmeका इस्तेमाल करें.sendAsEmail: वह उपनाम जिसके लिए कुंजियां दिखानी हैं. यह ईमेल पता, इस अन्य नाम से भेजे गए ईमेल केFrom:हेडर में दिखता है.
किसी उपनाम के लिए S/MIME कुंजियां वापस पाना
किसी उपयोगकर्ता के 'इस पते से भेजें' वाले किसी खास ईमेल पते के लिए, खास S/MIME कुंजियां वापस पाने के लिए, settings.sendAs.smimeInfo संसाधन पर settings.sendAs.smimeInfo.get तरीके का इस्तेमाल करें. पाथ पैरामीटर का इस्तेमाल करके, टारगेट के उपनाम की पहचान करें:
userId: उपयोगकर्ता का ईमेल पता. सत्यापित उपयोगकर्ता के लिए, खास वैल्यूmeका इस्तेमाल करें.sendAsEmail: वह दूसरा ईमेल पता जिसके लिए कुंजियां वापस पाई जा रही हैं. यह ईमेल पता, इस दूसरे ईमेल पते से भेजे गए मेल केFrom:हेडर में दिखता है.
एस/एमआईएमई कुंजी मिटाना
किसी उपनाम से तय की गई S/MIME कुंजी को मिटाने के लिए, settings.sendAs.smimeInfo संसाधन पर settings.sendAs.smimeInfo.delete तरीके का इस्तेमाल करें. नीचे दिए गए पाथ पैरामीटर का इस्तेमाल करके, टारगेट के उपनाम की पहचान करें:
userId: उपयोगकर्ता का ईमेल पता. सत्यापित उपयोगकर्ता के लिए, खास वैल्यूmeका इस्तेमाल करें.sendAsEmail: वह उपनाम जिससे आपको कुंजी मिटानी है. यह ईमेल पता, इस दूसरे ईमेल पते से भेजे गए मेल केFrom:हेडर में दिखता है.id:smimeInfoके लिए बदला न जा सकने वाला आईडी.
मिटाई गई कुंजी अब न तो दिखती है और न ही इसका इस्तेमाल किया जा सकता है. आपको S/MIME की मदद से मिले उन ईमेल को डिक्रिप्ट करने की अनुमति नहीं है जिन्हें सार्वजनिक पासकोड का इस्तेमाल करके एन्क्रिप्ट (सुरक्षित) किया गया था. किसी कुंजी को मिटाने से पहले, उसे जारी करने वाली संस्था (सीए) से रद्द करें.
किसी उपनाम के लिए, डिफ़ॉल्ट एस/एमआईएमई कुंजी सेट करना
settings.sendAs.smimeInfo रिसॉर्स पर settings.sendAs.smimeInfo.setDefault तरीके का इस्तेमाल करके, तय की गई S/MIME कुंजी को तय किए गए उपनाम के लिए डिफ़ॉल्ट के तौर पर मार्क करें. पाथ पैरामीटर का इस्तेमाल करके, टारगेट के उपनाम की पहचान करें:
userId: उपयोगकर्ता का ईमेल पता. सत्यापित उपयोगकर्ता के लिए, खास वैल्यूmeका इस्तेमाल करें.sendAsEmail: वह एलियास जिसके लिए डिफ़ॉल्ट कुंजी सेट करनी है. यह ईमेल पता, इस दूसरे ईमेल पते से भेजे गए मेल केFrom:हेडर में दिखता है.id:smimeInfoके लिए बदला न जा सकने वाला आईडी.
किसी उपयोगकर्ता के 'इस पते से भेजें' के तौर पर इस्तेमाल किए जाने वाले ईमेल पते के लिए, सिर्फ़ एक S/MIME कुंजी डिफ़ॉल्ट के तौर पर सेट की जा सकती है. settings.sendAs.smimeInfo.setDefault तरीके को कॉल करने से, पिछली डिफ़ॉल्ट सेटिंग हट जाती है.
जब किसी उपयोगकर्ता को किसी कुंजी से हस्ताक्षर किए गए S/MIME मैसेज मिलते हैं, तो Gmail उस कुंजी को not_before वैधता की सबसे दूर की तारीख
के साथ डिफ़ॉल्ट के तौर पर जोड़ देता है. ऐसा तब होता है, जब Gmail उस उपयोगकर्ता को भेजे गए ईमेल को एन्क्रिप्ट (सुरक्षित) करता है. यह पक्का करें कि Gmail का इस्तेमाल करने वाले जिन लोगों से उपयोगकर्ता ने पहले ही बातचीत की है वे नई डिफ़ॉल्ट कुंजी का इस्तेमाल करें. इसके लिए, यह पक्का करें कि नई डिफ़ॉल्ट कुंजी की not_before तारीख, पिछली डिफ़ॉल्ट कुंजी की तारीख के बाद की हो. इसके अलावा, पिछली डिफ़ॉल्ट कुंजी को रद्द भी किया जा सकता है.
कोड सैंपल
यहां दिए गए कोड सैंपल में, Gmail API का इस्तेमाल करके, एक से ज़्यादा उपयोगकर्ताओं वाले संगठन के लिए S/MIME सर्टिफ़िकेट मैनेज करने का तरीका बताया गया है:
एस/एमआईएमई सर्टिफ़िकेट के लिए smimeInfo संसाधन बनाना
इस कोड के सैंपल में, किसी फ़ाइल से सर्टिफ़िकेट को पढ़ने, उसे Base64URL स्ट्रिंग में एन्कोड करने, और उसे settings.sendAs.smimeInfo संसाधन पर मौजूद pkcs12 फ़ील्ड को असाइन करने का तरीका बताया गया है:
Java
Python
एस/एमआईएमई सर्टिफ़िकेट अपलोड करना
सर्टिफ़िकेट अपलोड करने के लिए, settings.sendAs.smimeInfo.insert तरीके का इस्तेमाल करें. साथ ही, अनुरोध के मुख्य हिस्से में settings.sendAs.smimeInfo संसाधन उपलब्ध कराएं:
Java
Python
एक से ज़्यादा उपयोगकर्ताओं के सर्टिफ़िकेट मैनेज करना
इन कोड सैंपल में, एक बैच कॉल में किसी संगठन के कई उपयोगकर्ताओं के लिए सर्टिफ़िकेट मैनेज करने का तरीका बताया गया है:
CSV फ़ाइल से सर्टिफ़िकेट डालना
यहां एक सैंपल CSV फ़ाइल दी गई है. इसमें उपयोगकर्ता आईडी और हर उपयोगकर्ता के सर्टिफ़िकेट का पाथ दिया गया है:
$ cat certificates.csv
user1@example.com,/path/to/user1_cert.p12,cert_password_1
user2@example.com,/path/to/user2_cert.p12,cert_password_2
user3@example.com,/path/to/user3_cert.p12,cert_password_3
Java
CSV फ़ाइल में बताए गए उपयोगकर्ताओं के लिए सर्टिफ़िकेट अपलोड करने के लिए, इन सैंपल का इस्तेमाल किया जा सकता है:
CreateSmimeInfo
और InsertSmimeInfo
Python
CSV फ़ाइल में बताए गए उपयोगकर्ताओं के लिए सर्टिफ़िकेट अपलोड करने के लिए, इन सैंपल का इस्तेमाल किया जा सकता है:
create_smime_info
और insert_smime_info
सर्टिफ़िकेट मैनेजमेंट
इस सैंपल में, settings.sendAs.smimeInfo संसाधन के कई तरीकों को मिलाकर यह दिखाया गया है कि अपने संगठन के लिए सर्टिफ़िकेट कैसे मैनेज करें. यह उपयोगकर्ता के लिए उपलब्ध
सर्टिफ़िकेट की सूची दिखाता है. अगर डिफ़ॉल्ट सर्टिफ़िकेट की समयसीमा खत्म हो गई है या उसे सेट नहीं किया गया है, तो यह तय की गई फ़ाइल में मौजूद सर्टिफ़िकेट को अपलोड करता है. इसके बाद, यह उस सर्टिफ़िकेट को डिफ़ॉल्ट के तौर पर सेट करता है जिसकी समयसीमा सबसे बाद में खत्म होती है.
इसके बाद, यह फ़ंक्शन CSV फ़ाइल को प्रोसेस करता है. यह फ़ंक्शन, CSV फ़ाइल से सर्टिफ़िकेट डालें के पिछले सैंपल की तरह ही काम करता है.
Java
Python
मिलते-जुलते विषय
- Gmail API की मदद से, ईमेल पतों के उपनाम और हस्ताक्षर मैनेज करना
- Gmail API के स्कोप चुनना
- मैसेज को एन्क्रिप्ट (सुरक्षित) करने के लिए, होस्ट किए गए एस/एमआईएमई की सुविधा चालू करना