במאמר הזה מוסבר איך להשתמש באישור אימייל של S/MIME עם Gmail API.
Gmail API מספק גישה פרוגרמטית לניהול אישורי אימייל S/MIME למשתמשים בדומיין Google Workspace.
כדי שהאישורים יפעלו, האדמין צריך להפעיל S/MIME מתארח עבור הדומיין.
תקן S/MIME מספק מפרט להצפנה באמצעות מפתח ציבורי ולחתימה על נתוני MIME. כשמגדירים אישורי S/MIME לחשבון משתמש, Gmail משתמש בהם בדרכים הבאות:
חתימה על אימיילים יוצאים באמצעות אישור המשתמש והמפתח הפרטי.
לפענח את האימייל הנכנס באמצעות המפתח הפרטי של המשתמש.
הצפנה של אימיילים יוצאים באמצעות האישור והמפתח הציבורי של הנמען.
מאמתים את האימייל הנכנס באמצעות האישור והמפתח הציבורי של השולח.
אתם יכולים ליצור אישורי S/MIME פרטניים ולהעלות אותם באמצעות Gmail API. כל אישור S/MIME מיועד לכינוי ספציפי של חשבון אימייל של משתמש. כינויים כוללים את כתובת האימייל הראשית וכתובות מותאמות אישית של 'שליחה בשם'. ה-API מסמן אישור S/MIME יחיד כברירת המחדל לכל כינוי.
מידע נוסף על כתובות אימייל חלופיות זמין במאמר ניהול כתובות אימייל חלופיות וחתימות באמצעות Gmail API.
אישור גישה ל-API
כדי לאשר גישה ל-Gmail API, משתמשים באחת מהשיטות הבאות:
להשתמש בחשבון שירות עם הענקת הרשאות גישה ברמת הדומיין. הסבר על המונחים האלה זמין במאמר מידע על אימות והרשאה. הוראות להפעלת האפשרות הזו מופיעות במאמר בנושא יצירת פרטי גישה.
משתמשים בהרשאה באמצעות OAuth 2.0 שדורשת הסכמה מהמשתמש כדי לקבל טוקן גישה מסוג OAuth 2.0. מידע נוסף זמין במאמר מידע על אימות והרשאה.
כדי להשתמש באפשרות הזו, האדמין של הדומיין צריך לסמן את התיבה הפעלת הצפנה באמצעות S/MIME לשליחה וקבלה של אימיילים במסוף Google Admin. מידע נוסף זמין במאמר בנושא הפעלה של S/MIME מתארח במסוף Admin.
היקפי הרשאות
Gmail API מסתמך על אותם היקפי הרשאות של OAuth כמו השיטות sendAs של Gmail:
gmail.settings.basic: חובה לעדכן אתSendAsS/MIME הראשי.
gmail.settings.sharing: נדרש לעדכון של S/MIME מותאם אישית מ.
הגדרת מפתחות S/MIME
במשאב
settings.sendAs.smimeInfo
יש כמה שיטות לניהול אישורי S/MIME. כל אישור משויך לכינוי 'שליחה בשם' אחד של משתמש.
כדי לקבוע את הכינויים של משתמש לשליחה בשם, משתמשים ב-method settings.sendAs.list במשאב settings.sendAs.
העלאת מפתח S/MIME
משתמשים ב-method settings.sendAs.smimeInfo.insert במשאב settings.sendAs.smimeInfo כדי להעלות מפתח S/MIME חדש עבור כינוי ששייך למשתמש. מזהים את הכינוי של היעד באמצעות פרמטרים של נתיב:
userId: כתובת האימייל של המשתמש. משתמשים בערך המיוחדmeכדי לציין את המשתמש המאומת.
sendAsEmail: הכינוי שעבורו מעלים את המפתח. כתובת האימייל הזו מופיעה בכותרת שלFrom:עבור אימייל שנשלח באמצעות הכינוי הזה.
מספקים את אישור S/MIME ואת המפתח הפרטי בשדה pkcs12 בפורמט PKCS #12. אל תגדירו שדות אחרים בבקשה. השדה pkcs12 מכיל גם את מפתח ה-S/MIME של המשתמש וגם את שרשרת אישורי החתימה. ממשק ה-API מבצע אימותים רגילים בשדה הזה לפני שהוא מקבל אותו, ומוודא את הפרטים הבאים:
- הנושא זהה לכתובת האימייל שצוינה.
- התוקף תקין.
- רשות האישורים (CA) המנפיקה נמצאת ברשימה המהימנה של Google.
- האישורים תואמים למגבלות הטכניות של Gmail.
אם המפתח מוצפן, מזינים את הסיסמה בשדה encryptedKeyPassword. קריאה מוצלחת ל-method settings.sendAs.smimeInfo.insert מחזירה את המשאב settings.sendAs.smimeInfo id שמשמש להתייחסות למפתח בעתיד.
הצגת רשימה של מפתחות S/MIME של משתמש
משתמשים בשיטה settings.sendAs.smimeInfo.list במשאב settings.sendAs.smimeInfo כדי להחזיר את רשימת מפתחות S/MIME של המשתמש שצוין עבור הכינוי שצוין. מזהים את הכינוי של היעד באמצעות פרמטרים של הנתיב הבא:
userId: כתובת האימייל של המשתמש. משתמשים בערך המיוחדmeכדי לציין את המשתמש המאומת.
sendAsEmail: הכינוי שעבורו רוצים להציג את רשימת המפתחות. כתובת האימייל הזו מופיעה בכותרתFrom:של אימיילים שנשלחים באמצעות הכינוי הזה.
אחזור מפתחות S/MIME של כתובת אימייל חלופית
משתמשים ב-method settings.sendAs.smimeInfo.get במשאב settings.sendAs.smimeInfo כדי להחזיר את מפתחות S/MIME הספציפיים עבור כינוי ספציפי של משתמש לשליחת אימייל. מזהים את הכינוי של היעד באמצעות פרמטרים של נתיב:
userId: כתובת האימייל של המשתמש. משתמשים בערך המיוחדmeכדי לציין את המשתמש המאומת.
sendAsEmail: הכינוי שממנו מאחזרים את המפתחות. כתובת האימייל הזו מופיעה בכותרת שלFrom:עבור אימייל שנשלח באמצעות הכינוי הזה.
מחיקה של מפתח S/MIME
משתמשים ב-method settings.sendAs.smimeInfo.delete במשאב settings.sendAs.smimeInfo כדי למחוק מפתח S/MIME שצוין מכינוי. מזהים את הכינוי של היעד באמצעות הפרמטרים הבאים של נתיב:
userId: כתובת האימייל של המשתמש. משתמשים בערך המיוחדmeכדי לציין את המשתמש המאומת.
sendAsEmail: הכינוי שממנו רוצים למחוק את המפתח. כתובת האימייל הזו מופיעה בכותרת שלFrom:עבור אימייל שנשלח באמצעות הכינוי הזה.
id: המזהה הקבוע שלsmimeInfo.
מפתח שנמחק לא גלוי יותר ואי אפשר להשתמש בו. אי אפשר לפענח אימיילים שהתקבלו ב-S/MIME שהיו מוצפנים באמצעות המפתח הציבורי התואם. לפני שמוחקים מפתח, צריך לבטל אותו באמצעות רשות ההנפקה (CA) שלו.
הגדרת מפתח S/MIME שמשמש כברירת מחדל לכינוי
משתמשים ב-method settings.sendAs.smimeInfo.setDefault במשאב settings.sendAs.smimeInfo כדי לסמן את מפתח ה-S/MIME שצוין כמפתח ברירת המחדל עבור הכינוי שצוין. מזהים את הכינוי של היעד באמצעות פרמטרים של הנתיב הבא:
userId: כתובת האימייל של המשתמש. משתמשים בערך המיוחדmeכדי לציין את המשתמש המאומת.
sendAsEmail: הכינוי שעבורו רוצים להגדיר את מפתח ברירת המחדל. כתובת האימייל הזו מופיעה בכותרת שלFrom:עבור אימייל שנשלח באמצעות הכינוי הזה.
id: המזהה הקבוע שלsmimeInfo.
רק מפתח S/MIME אחד מוגדר כברירת מחדל לכתובת אימייל חלופית של משתמש. קריאה ל-method settings.sendAs.smimeInfo.setDefault מבטלת את ברירת המחדל הקודמת.
כשמשתמש מקבל הודעות S/MIME שחתומות באמצעות מפתח מסוים, Gmail משייך את המפתח לnot_beforeתאריך התפוגה
המאוחר ביותר בעתיד כברירת המחדל להצפנת אימייל שנשלח למשתמש המשויך. כדי לוודא שמשתמשי Gmail שהמשתמש כבר תקשר איתם ישתמשו במפתח ברירת המחדל החדש, צריך לוודא שלמפתח ברירת המחדל החדש יש תאריך not_before מאוחר יותר מזה של מפתח ברירת המחדל הקודם, או לבטל את מפתח ברירת המחדל הקודם.
דוגמאות קוד
בדוגמאות הקוד הבאות אפשר לראות איך משתמשים ב-Gmail API כדי לנהל אישורי S/MIME בארגון עם כמה משתמשים:
יצירת משאב smimeInfo לאישור S/MIME
בדוגמת הקוד הזו מוצג איך לקרוא אישור מקובץ, לקודד אותו למחרוזת Base64URL ולהקצות אותו לשדה pkcs12 במשאב settings.sendAs.smimeInfo:
Java
Python
העלאת אישור S/MIME
כדי להעלות אישור, צריך לבצע קריאה ל-method 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
אפשר להשתמש בדוגמאות של CreateSmimeInfo ושל InsertSmimeInfo כדי להעלות את האישורים של המשתמשים שמצוינים בקובץ CSV:
Python
אפשר להשתמש בדוגמאות של create_smime_info ושל insert_smime_info כדי להעלות את האישורים של המשתמשים שמצוינים בקובץ CSV:
ניהול אישורים
בדוגמה הזו משולבות כמה שיטות מהמשאב settings.sendAs.smimeInfo כדי להראות איך לנהל אישורים בארגון. היא מציגה את האישורים של המשתמש. אם תוקף אישור ברירת המחדל פג או שהוא לא מוגדר, המערכת מעלה את האישור שנמצא בקובץ שצוין. לאחר מכן, המערכת מגדירה את האישור שתוקף שלו יפוג הכי מאוחר בעתיד כברירת המחדל.
הפונקציה הזו מעבדת קובץ CSV, בדומה לדוגמה הקודמת Insert certificates from a CSV file.
Java
Python
נושאים קשורים
- ניהול כתובות אימייל חלופיות וחתימות באמצעות Gmail API
- בחירת היקפי הגישה של Gmail API
- איך מפעילים S/MIME מתארח להצפנה של הודעות