Google Workspace מציע שירות כניסה יחידה (SSO) ללקוחות עם Google Workspace או Google Workspace for Education. שירות הכניסה היחידה (SSO) של Google Workspace מקבל מפתחות ציבוריים ואישורים שנוצרו באמצעות אלגוריתם RSA או DSA. כדי להשתמש בשירות, צריך ליצור את קבוצת המפתחות הציבוריים והפרטיים ואישור X.509 שמכיל את המפתח הציבורי. אחרי שיש לכם מפתח ציבורי או אישור, אתם צריכים לרשום אותו ב-Google. כדי לעשות את זה, פשוט מעלים את המפתח או את האישור דרך מסוף Google Admin.
הדרך שבה יוצרים מפתחות ואישורים תלויה בדרך כלל בפלטפורמת הפיתוח ובהעדפות שפת התכנות. יש כמה דרכים ליצור את המפתחות והאישור שנדרשים לשירות ה-SSO של Google Workspace.
שימוש ב-OpenSSL
יש הרבה שיטות ליצירת צמדים של מפתחות ציבוריים ופרטיים, אבל הכלי OpenSSL בקוד פתוח הוא אחד מהנפוצים ביותר. הוא הועבר לכל הפלטפורמות העיקריות ומספק ממשק פשוט של שורת פקודה ליצירת מפתחות.
יצירת מפתח פרטי של RSA
כדי ליצור מפתח פרטי של RSA באמצעות 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
בשלב 1 נוצר המפתח הציבורי בפורמט DER.
בשלב 2 נוצר המפתח הפרטי בפורמט pkcs8 ו-DER. אחרי שיוצרים את המפתחות (rsapubkey.der ו-rsaprivkey.der), אפשר להשתמש בהם.
יצירת מפתח פרטי DSA
יצירת מפתח DSA כוללת שני שלבים:
openssl dsaparam -out dsaparam.pem 2048openssl gendsa -out dsaprivkey.pem dsaparam.pem
בשלב הראשון נוצר קובץ פרמטרים של DSA, dsaparam.pem, שבמקרה הזה מורה ל-OpenSSL ליצור מפתח של 2048 ביט בשלב 2. הקובץ 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
בשלב 1, המפתח הציבורי מחולץ לפורמט DER.
בשלב 2, המפתח הפרטי מומר לפורמט pkcs8 ו-DER. אחרי שתעשו את זה, תוכלו להשתמש בזוג המפתחות הציבורי (dsapubkey.der) והפרטי (dsaprivkey.der)
יצירת אישור
אחרי שיש לכם זוג מפתחות, קל ליצור אישור X.509. האישור מכיל את המפתח הציבורי המתאים, וגם מטא-נתונים שקשורים לארגון שיצר את האישור. כדי ליצור אישור בחתימה עצמית ממפתח פרטי מסוג RSA או DSA, פועלים לפי השלב הזה:
openssl req -new -x509 -key dsaprivkey.pem -out dsacert.pem
אחרי שתענו על מספר שאלות, האישור ייווצר ויישמר כקובץ dsacert.pem. זהו הקובץ שמעלים ל-Google Workspace דרך לוח הבקרה כשמגדירים SSO.
יצירת טביעת אצבע לאישור
באפליקציות מסוימות נדרשת טביעת אצבע של אישור X.509, ולא אישור X.509 עצמו. טביעת אצבע היא תקציר של האישור בפורמט בינארי x509. סוג טביעת האצבע תלוי באלגוריתם שמשמש ליצירת טביעת האצבע, כמו SHA-1 או SHA-256.
כדי ליצור טביעת אצבע מסוג SHA-256 מאישור X.509, משתמשים בפקודה הבאה (צריך להחליף את שם הקובץ בפועל של אישור ה-PEM):
openssl x509 -noout -fingerprint -sha256 -inform pem -in "GoogleIDPCertificate-domain.com.pem"
שימוש ב-Microsoft Visual Studio ל- .NET
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
כברירת מחדל, אלגוריתם RSA משמש בפקודות שלמעלה. בשלב 1 משתמשים בכלי Certificate Creation (makecert.exe) כדי ליצור אישור X.509 עם חתימה עצמית בשם testcert.cer ואת המפתח הפרטי התואם.
בשלב 2 משתמשים בכלי pvk2pfx (pvk2pfx.exe) כדי ליצור קובץ Personal Information Exchange (PFX) מקובץ CER ומקובץ PVK. קובץ ה-PFX מכיל גם את המפתח הציבורי וגם את המפתח הפרטי שלכם.
אפשר להעלות את הקובץ testcert.cer שנוצר בשלב 1 אל Google Workspace באמצעות לוח הבקרה, ואפשר להשתמש בקובץ testcert.pfx משלב 2 כדי ליצור מופע X509Certificate2 (.NET 2.0+) לחתימה על תגובת SAML.
שימוש בכלי Keytool ב-Java
מפתחי Java יכולים להשתמש בכלי keytool שנמצא ב-JDK הרגיל כדי ליצור את זוג המפתחות הציבורי/הפרטי ואת אישור X.509. keytool הוא כלי לניהול מפתחות ואישורים שמאפשר למשתמשים לנהל את זוגות המפתחות הציבוריים/הפרטיים שלהם ואת האישורים המשויכים להם לשימוש בסכימות אימות שדורשות חתימות דיגיטליות. keytool מאחסן מפתחות ואישורים ב'מאגר מפתחות', שהוא פשוט קובץ (.keystore) בספריית הבית של המשתמש בהטמעה שמוגדרת כברירת מחדל. מפתחות פרטיים מוגנים באמצעות סיסמאות.
יצירת זוגות מפתחות DSA
keytool -genkey -alias dsassokey -keyalg "DSA" -keysize 2048 -validity 180 -sigalg "SHA256withDSA"keytool -export -alias dsassokey -file dsasso.cer
בשלב 1 נוצר זוג מפתחות ציבורי/פרטי בגודל 2048 עם תוקף של 180 ימים באמצעות אלגוריתם DSA.
בשלב 2 נוצר אישור X.509 (dsasso.cer) מהמפתח הציבורי. לאחר מכן מעלים את dsasso.cer ל-Google Workspace באמצעות לוח הבקרה.
יצירת זוגות מפתחות RSA
keytool -genkey -alias rsassokey -keyalg "RSA" -keysize 2048 -validity 180keytool -export -alias rsassokey -file rsasso.cer
בשלב 1 נוצר זוג מפתחות ציבורי/פרטי בגודל 2048 עם תוקף של 180 ימים באמצעות אלגוריתם RSA.
בשלב 2 נוצר אישור X.509 (rsasso.cer) מהמפתח הציבורי. לאחר מכן מעלים את rsasso.cer ל-Google Workspace באמצעות לוח הבקרה.
שימוש בארכיטקטורת קריפטוגרפיה של Java
Java Cryptography Architecture (JCA) מספקת מחלקות וממשקים מרכזיים ליצירה ולשינוי של מאפייני אבטחה. ה-JCA כולל את החלקים של Java 2 SDK Security API שקשורים לקריפטוגרפיה. באמצעות ה-API הזה, אפשר ליצור בקלות זוגות של מפתחות ציבוריים ופרטיים באלגוריתם הרצוי. בהמשך מופיעה דוגמת קוד שיוצרת מפתחות DSA או RSA לשימוש בשירות ה-SSO של 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 כדי ליצור זוג מפתחות DSA. המפתחות שנוצרו יהיו בפורמט בינארי ויוצגו בקבצים נפרדים.
אחרי שיש לכם את המפתחות, אתם יכולים לרשום את המפתח הציבורי ב-Google Workspace ולהשתמש במפתח הפרטי כדי לחתום על SAMLResponse. כדי ליצור זוג מפתחות RSA במקום DSA, צריך רק להחליף את "DSA" בקוד ב-"RSA".
רישום האישור או המפתח הציבורי ב-Google Workspace
אחרי שמסיימים את החלק המסובך של יצירת מפתחות ואישורים, החלק הבא פשוט מאוד. כדי לרשום את האישור או את המפתח הציבורי ב-Google Workspace, צריך להיכנס למסוף Admin בתור אדמין. בוחרים באפשרות אבטחה, ואז באפשרות הגדרת כניסה יחידה (SSO), וממלאים את כל השדות בדף בקטע הגדרת כניסה יחידה עם ספק זהויות של צד שלישי.