במאמר הזה מוסבר איך לעצב אישורים לאימות מספקי זהויות מצד שלישי. ההנחיות האלה יכולות לעזור לכם להימנע מבעיות שקשורות לאישורים של ספק הזהויות כשאתם משתמשים בשירות, ולפתור בעיות כאלה. המסמך הזה רלוונטי רק לסוגי אשכולות נתמכים.
סקירה כללית
אתם יכולים להגדיר אימות מספקי זהויות כמו OIDC ו-LDAP באשכולות שלכם. במהלך יצירת חיבור TLS, האשכול מאמת את אישור השרת של הספק ומוודא אם ה-issuer של אישור הספק הוא אחד מאישורי רשות האישורים (CA) שהוגדרו.
certificateAuthorityData string in ClientConfig
אישור ה-CA שמשמש לאימות הזהות של הספק מוגדר בשדה certificateAuthorityData ב-ClientConfig, כמו שמוצג בדוגמאות הבאות.
דוגמה ל-LDAP
... ldap: host: HOST_NAME certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA connectionType: CONNECTION_TYPE ...
כאשר CERTIFICATE_AUTHORITY_DATA מכיל אישור CA בקידוד base64, בפורמט PEM, לשרת ה-LDAP. מוסיפים את המחרוזת שמתקבלת ל-certificateAuthorityData כשורה אחת. חובה לספק את המידע הזה רק לחיבורים של ldaps ושל startTLS.
דוגמה ל-OIDC
... oidc: certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA ...
כאשר CERTIFICATE_AUTHORITY_DATA מכיל מחרוזת אישור בקידוד base64 ובפורמט PEM עבור ספק הזהויות. מוסיפים את המחרוזת שמתקבלת ל-certificateAuthorityData כשורה אחת.
ערך האישור בקידוד Base64
קידוד Base64 רגיל, שמוגדר ב-RFC 4864, משתמש בתווים A עד Z, a עד z, 0 עד 9, + ו-/.
הנתונים מרופדים באמצעות =.
קידוד אישור CA
אישורי SSL הם בפורמטים כמו DER, PEM ו-PFX. קבצי PFX מוצפנים בדרך כלל באמצעות סיסמה.
כשמגדירים ספק זהויות, האישורים לא צריכים להיות מוגנים בסיסמה. הסיבה לכך היא שאין תהליך עבודה שמאפשר לציין את הסיסמה לפענוח. לכן, חשוב להמיר את האישורים מפורמטים אחרים לקבצים בקידוד PEM באמצעות opensslכלי לשורת פקודה בכל מערכת Linux או Unix.
אם יש כמה אישורים, צריך לשרשר אותם ולייבא אותם כקובץ PEM יחיד.
דוגמה לפורמט PEM
דוגמה לאישור עם קידוד PEM:
-----BEGIN CERTIFICATE----- MIICMzCCAZygAwIBAgIJALiPnVsvq8dsMA0GCSqGSIb3DQEBBQUAMFMxCzAJBgNV BAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNVBAcTA2ZvbzEMMAoGA1UEChMDZm9v MQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2ZvbzAeFw0xMzAzMTkxNTQwMTlaFw0x ODAzMTgxNTQwMTlaMFMxCzAJBgNVBAYTAlVTMQwwCgYDVQQIEwNmb28xDDAKBgNV BAcTA2ZvbzEMMAoGA1UEChMDZm9vMQwwCgYDVQQLEwNmb28xDDAKBgNVBAMTA2Zv bzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAzdGfxi9CNbMf1UUcvDQh7MYB OveIHyc0E0KIbhjK5FkCBU4CiZrbfHagaW7ZEcN0tt3EvpbOMxxc/ZQU2WN/s/wP xph0pSfsfFsTKM4RhTWD2v4fgk+xZiKd1p0+L4hTtpwnEw0uXRVd0ki6muwV5y/P +5FHUeldq+pgTcgzuK8CAwEAAaMPMA0wCwYDVR0PBAQDAgLkMA0GCSqGSIb3DQEB BQUAA4GBAJiDAAtY0mQQeuxWdzLRzXmjvdSuL9GoyT3BF/jSnpxz5/58dba8pWen v3pj4P3w5DoOso0rzkZy2jEsEitlVM2mLSbQpMM+MUVQCQoiG6W9xuCFuxSrwPIS pAqEAuV4DNoxQKKWmhVv+J0ptMWD25Pnpxeq5sXzghfJnslJlQND -----END CERTIFICATE-----
בדוגמה הבאה אפשר לראות את הפרטים הבאים:
- התווים שמגדירים את תחילת וסוף האישור הם BEGIN CERTIFICATE ו-END CERTIFICATE.
- מספר המקפים שמשמשים כתווי הפרדה הוא קבוע.
- ערך האישור משתמש בקידוד Base64 רגיל (RFC 4864) עם מעברי שורה (אחרי 64 תווים).
- מעברי השורה (\n) לא גלויים. אל תשתמשו בתו בריחה בשביל מעבר לשורה חדשה.
מציינים את ערך האישור ב-ClientConfig
כדי לציין את ערך האישור ב-ClientConfig:
- קובעים את הפורמט המקודד ב-PEM של אישור CA.
- מקודדים את קובץ ה-PEM בקידוד Base64 בהתאם לתקן RFC 4864.
מוודאים שהפלט הוא מחרוזת ארוכה אחת בלי מעברי שורה, כמו בדוגמה הבאה של קובץ PEM בקידוד Base64:
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUNNekNDQVp5Z0F3SUJBZ0lKQUxpUG5Wc3ZxOGRzTUEwR0NTcUdTSWIzRFFFQkJRVUFNRk14Q3pBSkJnTlYKQkFZVEFsVlRNUXd3Q2dZRFZRUUlFd05tYjI4eEREQUtCZ05WQkFjVEEyWnZiekVNTUFvR0ExVUVDaE1EWm05dgpNUXd3Q2dZRFZRUUxFd05tYjI4eEREQUtCZ05WQkFNVEEyWnZiekFlRncweE16QXpNVGt4TlRRd01UbGFGdzB4Ck9EQXpNVGd4TlRRd01UbGFNRk14Q3pBSkJnTlZCQVlUQWxWVE1Rd3dDZ1lEVlFRSUV3Tm1iMjh4RERBS0JnTlYKQkFjVEEyWnZiekVNTUFvR0ExVUVDaE1EWm05dk1Rd3dDZ1lEVlFRTEV3Tm1iMjh4RERBS0JnTlZCQU1UQTJadgpiekNCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBd2dZa0NnWUVBemRHZnhpOUNOYk1mMVVVY3ZEUWg3TVlCCk92ZUlIeWMwRTBLSWJoaks1RmtDQlU0Q2lacmJmSGFnYVc3WkVjTjB0dDNFdnBiT014eGMvWlFVMldOL3Mvd1AKeHBoMHBTZnNmRnNUS000UmhUV0QydjRmZ2sreFppS2QxcDArTDRoVHRwd25FdzB1WFJWZDBraTZtdXdWNXkvUAorNUZIVWVsZHErcGdUY2d6dUs4Q0F3RUFBYU1QTUEwd0N3WURWUjBQQkFRREFnTGtNQTBHQ1NxR1NJYjNEUUVCCkJRVUFBNEdCQUppREFBdFkwbVFRZXV4V2R6TFJ6WG1qdmRTdUw5R295VDNCRi9qU25weHo1LzU4ZGJhOHBXZW4KdjNwajRQM3c1RG9Pc28wcnprWnkyakVzRWl0bFZNMm1MU2JRcE1NK01VVlFDUW9pRzZXOXh1Q0Z1eFNyd1BJUwpwQXFFQXVWNEROb3hRS0tXbWhWditKMHB0TVdEMjVQbnB4ZXE1c1h6Z2hmSm5zbEpsUU5ECi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K - מציינים את ערך האישור הזה בשדה
certificateAuthorityDataב-ClientConfig.
אישורי CA לאישורי ביניים
אישור ביניים ממלא תפקיד של 'שרשרת אמון' בין אישור של ישות קצה לבין אישור בסיס. כשמשתמשים בערך האישור הזה ב-ClientConfig, הוא צריך להיות בפורמט של מחרוזת בקידוד Base64. כדי ליצור מחרוזת אחת, משרשרים את כל האישורים בקידוד PEM למחרוזת אחת ואז מקודדים אותה ב-Base64.
הנה דוגמה לשרשרת מהימנות רציפה שמתחילה באישור הבסיס.
ServerCert -> IntermediateCA -> DeptCA -> RootCA
בדוגמה הזו, ServerCert מונפק על ידי IntermediateCA, שמונפק על ידי DeptCA, שמונפק על ידי RootCA.
יש תמיכה בשרשראות אמון חלקיות. כלומר, אפשר לספק שרשראות עם רק חלק מהאישורים, למשל:
IntermediateCA -> DeptCA -> RootCA
IntermediateCA -> DeptCA
ServerCert
אם מוגדר רק חלק מהשרשרת, האשכול יאמת את הזהות של השרת על ידי ניסיון להתאים בין האישורים בחלק מהשרשרת לבין הזהות שהוצגה על ידי השרת.
בגרסאות קודמות, כמו גרסאות לפני Google Distributed Cloud 1.28.200, נדרשת שרשרת אמון רציפה שמתחילה באישור הבסיס כדי לאמת את השרת. דוגמאות לשרשראות חלקיות שנתמכות בגרסאות קודמות:
ServerCert -> IntermediateCA -> DeptCA -> RootCA
IntermediateCA -> DeptCA -> RootCA
DeptCA -> RootCA
אם נתקלתם בבעיות באימות האישור ואתם לא יודעים באיזו גרסה אתם משתמשים, נסו להוסיף אישור בסיס לשרשרת האמון אם אין לכם כזה, כדי לבדוק אם זו הסיבה לבעיה.
ציון שרשרת האמון של האישור ב-ClientConfig
כדי לציין את שרשרת האמון של האישור ב-ClientConfig:
- קובעים את הפורמט המקודד ב-PEM של אישורי ה-CA שרוצים לכלול בשרשרת האישורים.
משרשרים את קובצי ה-PEM לקובץ אחד כך שהאישור הבסיסי יהיה בסוף הקובץ. כך נראה הפלט:
-----BEGIN CERTIFICATE----- IntermediateCA -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- DeptCA -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- RootCA certificate -----END CERTIFICATE-----
מקודדים את הקובץ המחובר בקידוד Base64. צריך לוודא שהקובץ מכיל שורה אחת של טקסט בקידוד Base64.
מציינים את ערך האישור הזה בשדה
certificateAuthorityDataב-ClientConfig.