בקשת אישור באמצעות רשות אישורים ציבורית ולקוח ACME
במדריך הזה נסביר איך לבקש אישור TLS מ-Public Certificate Authority באמצעות Google Cloud CLI. במאמר Google Trust Services מוסבר על רשויות האישורים ברמה הבסיסית וברמת הביניים שמשמשות את Public Certificate Authority. אין חיוב על בקשת אישורים מ-Public CA, אבל פעולות ACME כפופות למכסות הבקשות של Public CA.
לפני שמתחילים
התקינו את ה-CLI של Google Cloud ואז היכנסו ל-CLI של gcloud באמצעות הזהות המאוחדת שלכם. אחרי שנכנסתם לחשבון, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:
gcloud initיוצרים או בוחרים פרויקט ב- Google Cloud .
התפקידים שנדרשים כדי לבחור או ליצור פרויקט
- בחירת פרויקט: כדי לבחור פרויקט לא נדרש תפקיד IAM ספציפי – אתם יכולים לבחור כל פרויקט שקיבלתם בו תפקיד.
-
יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד "יצירת פרויקטים" (
roles/resourcemanager.projectCreator), שכולל את ההרשאהresourcemanager.projects.create. איך מקצים תפקידים?
-
יוצרים פרויקט ב- Google Cloud :
gcloud projects create PROJECT_ID
מחליפים את
PROJECT_IDבשם של הפרויקט ב- Google Cloud שאתם יוצרים. -
בוחרים את הפרויקט שיצרתם ב- Google Cloud :
gcloud config set project PROJECT_ID
מחליפים את
PROJECT_IDבשם הפרויקט ב- Google Cloud .
מוודאים שיש לכם את התפקיד "יצירת מפתחות לחשבונות חיצוניים ב-Public CA" (
roles/publicca.externalAccountKeyCreator) ב-IAM.כדי להקצות את התפקיד הזה, מריצים את הפקודה הבאה:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=user:USER \ --role=roles/publicca.externalAccountKeyCreator
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט ב- Google Cloud -
USER: המזהה הייחודי של המשתמש שרוצים להקצות לו את תפקיד ה-IAM.
-
מפעילים את Public CA API, אם הוא עדיין לא מופעל:
התפקידים שנדרשים כדי להפעיל ממשקי API
כדי להפעיל ממשקי API, צריך את ההרשאה
serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד "בעלים" (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד "אדמין בממשק 'שימוש בשירות'" (roles/serviceusage.serviceUsageAdmin). כך מקצים תפקידים.gcloud services enable publicca.googleapis.com
התקנת לקוח
כדי להתחיל להשתמש ב-Public CA, צריך להתקין לקוח ACME. בהוראות הבאות, לקוח ה-ACME הוא Certbot. אתם יכולים להשתמש בכל לקוח ACME אחר, בתנאי שהוא תומך בקישור לחשבון חיצוני (EAB).
כדי להתקין את Certbot, עיינו בהוראות של Certbot.
חשוב לוודא שהלקוח מפנה לשרת ה-CA הציבורי. בפעם הראשונה שלקוח ACME יוצר אינטראקציה עם Public CA, הלקוח יוצר זוג מפתחות חדש ושולח את המפתח הציבורי אל Public CA.
בקשה למזהה מפתח EAB ול-HMAC
אחרי שמתקינים לקוח ACME, צריך לרשום את חשבון ה-ACME ב-Public CA כדי לבקש אישורים מ-Public CA. סוד EAB יכול לעזור לכם לרשום את חשבון ה-ACME שלכם ברשות אישורים ציבורית. סוד EAB מורכב ממזהה מפתח ומקוד אימות הודעות המבוסס על גיבוב (HMAC).
כדי לבקש סוד EAB, אתם יכולים להשתמש ב-Public CA API או ב-Google Cloud CLI.
כדי לבקש מזהה מפתח EAB ו-HMAC, מריצים את הפקודה הבאה:
gcloud publicca external-account-keys create
הפקודה הזו מחזירה סוד EAB שתקף בסביבת הייצור של Public CA. בגוף התשובה, השדה keyId מכיל את מזהה מפתח ה-EAB והשדה b64MacKey מכיל את ה-EAB HMAC.
צריך להשתמש בסוד ה-EAB תוך 7 ימים מקבלתו. אם לא משתמשים בסוד ה-EAB תוך 7 ימים, הוא מבוטל. לחשבון ACME שנרשם באמצעות סוד EAB אין תאריך תפוגה.
רישום חשבון ACME
בקטע הזה מוסבר איך לרשום חשבון ACME ב-Public CA באמצעות הסוד של ה-EAB שקיבלתם.
משתמשים בלקוח ACME רגיל כדי לרשום חשבון ACME, ומספקים את מזהה המפתח של EAB ואת HMAC במהלך הרישום.
כדי לרשום חשבון ACME עם רשות אישורים ציבורית ולקשר את חשבון ACME לפרויקט ב- Google Cloud שבו השתמשתם כדי לבקש את סוד ה-EAB, מריצים את הפקודה הבאה:
certbot register \
--email "EMAIL_ADDRESS" \
--no-eff-email \
--server "SERVER" \
--eab-kid "EAB_KID" \
--eab-hmac-key "EAB_HMAC_KEY"
מחליפים את מה שכתוב בשדות הבאים:
EMAIL_ADDRESS: כתובת האימייל שלכם-
SERVER: כתובת ה-URL של ספריית ACME לסביבת הייצור או לסביבת ה-Staging -
EAB_KID: מזהה מפתח ה-EAB -
EAB_HMAC_KEY: מפתח EAB HMAC
בטבלה הבאה מפורטים התיאור וכתובת ה-URL של ספריית ACME לסביבת הייצור ולסביבת ה-staging:
| סביבה | תיאור | כתובת ה-URL של ספריית ACME |
|---|---|---|
| Production | בסביבת הייצור אפשר לקבל אישורים מהימנים שזמינים לציבור. | https://dv.acme-v02.api.pki.goog/directory |
| הכנה | סביבת ה-staging מחזירה אישורים שלא מהימנים באופן ציבורי. בסביבת ה-staging מתבצעות אותן בדיקות אימות כמו בסביבת הייצור. אפשר להשתמש בסביבת ה-staging לשילוב או לכל סוג אחר של בדיקה. | https://dv.acme-v02.test-api.pki.goog/directory |
אפשר לרשום רק חשבון ACME אחד עם סוד EAB. אחרי שרושמים חשבון ACME באמצעות סוד EAB, הסוד הופך ללא חוקי ואי אפשר להשתמש בו שוב. אם רוצים לרשום כמה חשבונות ACME, צריך לבקש סוד EAB ייחודי לכל אחד מהחשבונות.
בקשת אישורים
אחרי שרשות האישורים הציבורית מאמתת את השליטה שלכם ביעד האישור ומאשרת שלקוח ה-ACME פועל כמצופה לביצוע פעולות ניהול אישורים, אתם יכולים להשתמש בתהליכי העבודה הרגילים של ACME כדי לבקש, לחדש ולבטל אישורים. אתם יכולים לבצע את הפעולות האלה באמצעות לקוח ACME. כדי לבקש ולחדש אישור, צריך להשלים אתגר ACME, כמו אתגר ה-DNS הידני.
אם אתם משתמשים ברשומות DNS של הרשאה ברשות האישורים (CAA) כדי לקבוע אילו רשויות אישורים יכולות להנפיק אישורים לדומיין שלכם, אתם צריכים לציין את pki.goog כמנפיק מורשה – לדוגמה, 0 issue "pki.goog".
בנוסף, Public CA תומך בהרחבות של רשומות CAA ל-URI של החשבון ולקישור של שיטת ACME, כפי שמוגדר ב-RFC 8657. כך אפשר להגביל את הנפקת האישורים לחשבון ACME ספציפי באמצעות הפרמטר accounturi, ולשיטות אימות ספציפיות באמצעות הפרמטר validationmethods.
כדי להשתמש באתגר ה-DNS הידני לבקשת אישור, מריצים את הפקודה הבאה:
certbot certonly \
--manual \
--preferred-challenges "dns-01" \
--server "SERVER" \
--domains "DOMAINS"
מחליפים את מה שכתוב בשדות הבאים:
-
SERVER: כתובת ה-URL של ספריית ACME לסביבת הייצור או לסביבת ה-Staging -
DOMAINS: רשימה מופרדת בפסיקים של דומיינים שאתם מבקשים בשבילם אישורים
הסרת המשאבים
אם אתם לא צריכים יותר אישורים לדומיינים, אתם יכולים למחוק את הפרויקט שיצרתם.
הכנה
אתם יכולים להשתמש בסביבת ה-Staging של רשות האישורים הציבורית כדי לבקש אישורים למטרות בדיקה. האישורים שהונפקו על ידי סביבת ה-staging מקושרים לאישור בסיס לבדיקה. אישורים מסביבת ה-staging לא יהיו מהימנים בדפדפנים או בלקוחות אחרים שלא הוגדרו לתת אמון באישור הבסיס של ה-staging. כדי לקבל סוד EAB שתקף בסביבת ה-Staging, צריך לשנות את נקודת הקצה ל-API כך שתשתמש בנקודת הקצה של סביבת ה-Staging:
gcloud config set api_endpoint_overrides/publicca https://preprod-publicca.googleapis.com/
gcloud publicca external-account-keys create
gcloud config unset api_endpoint_overrides/publicca
כדי למחוק פרויקט ב- Google Cloud :
gcloud projects delete PROJECT_ID