בקשת אישור באמצעות רשות אישורים ציבורית ולקוח ACME

במדריך הזה מוסבר איך לבקש אישור TLS מרשות אישורים ציבורית באמצעות Google Cloud CLI. למידע על רשויות האישורים (CA) של הבסיס ושל הביניים שמשמשות את Public Certificate Authority, אפשר לעיין ב-Google Trust Services. אין תשלום על בקשת אישורים מרשות אישורים ציבורית.

לפני שמתחילים

  • התקינו את ה-CLI של Google Cloud. אחר כך, אתחלו את ה-CLI של Google Cloud באמצעות הפקודה הבאה:

    gcloud init

    אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  • יוצרים או בוחרים Google Cloud פרויקט.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (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 .

  • מוודאים שיש לכם את תפקיד ה-IAM ‏Public CA External Account Key Creator ‏ (roles/publicca.externalAccountKeyCreator).

    כדי להקצות את התפקיד הזה, מריצים את הפקודה הבאה:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=user:USER \
      --role=roles/publicca.externalAccountKeyCreator
    

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID: מזהה הפרויקט ב- Google Cloud
    • USER: המזהה הייחודי של המשתמש שרוצים להקצות לו את תפקיד ה-IAM.

    מידע על הקצאת תפקיד IAM מופיע במאמר ניהול הגישה לפרויקטים, לתיקיות ולארגונים.

  • מפעילים את Public CA API:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, צריך את תפקיד ה-IAM 'אדמין של Service Usage' (roles/serviceusage.serviceUsageAdmin), שכולל את ההרשאה serviceusage.services.enable. איך מקצים תפקידים

    gcloud services enable publicca.googleapis.com

התקנת לקוח

כדי להתחיל להשתמש ב-CA ציבורי, צריך להתקין לקוח ACME. בהוראות הבאות נעשה שימוש ב-Certbot כלקוח ACME. אתם יכולים להשתמש בכל לקוח ACME אחר אם הלקוח תומך בקישור לחשבון חיצוני (EAB).

הוראות להתקנת Certbot מופיעות כאן.

חשוב לוודא שהלקוח מפנה לשרת CA ציבורי. בפעם הראשונה שבה לקוח ACME יוצר אינטראקציה עם רשות אישורים ציבורית, הלקוח יוצר זוג מפתחות חדש ושולח את המפתח הציבורי לרשות האישורים הציבורית.

בקשה של מזהה מפתח EAB ו-HMAC

אחרי שמתקינים לקוח ACME, צריך לרשום את חשבון ה-ACME ברשות אישורים ציבורית כדי לבקש אישורים מרשות אישורים ציבורית. סוד EAB יכול לעזור לכם לרשום את חשבון ACME שלכם ברשות אישורים ציבורית. סוד EAB מורכב ממזהה מפתח ומקוד אימות הודעות המבוסס על גיבוב (HMAC).

אפשר להשתמש ב-Public CA API או ב-Google Cloud CLI כדי לבקש סוד EAB.

כדי לבקש מזהה מפתח EAB ו-HMAC, מריצים את הפקודה הבאה:

gcloud publicca external-account-keys create

הפקודה הזו מחזירה סוד EAB שתקף בסביבת הייצור של רשות אישורים ציבורית. בגוף התשובה, השדה 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 עבור סביבת הייצור וסביבת הבדיקה:

סביבה תיאור כתובת ה-URL של ספריית ACME
Production בסביבת הייצור אפשר לקבל אישורים מהימנים לציבור. https://dv.acme-v02.api.pki.goog/directory
סביבת Staging סביבת הבדיקה מחזירה אישורים שלא מהימנים באופן ציבורי. סביבת הביניים מבצעת את אותן בדיקות אימות כמו סביבת הייצור. אפשר להשתמש בסביבת הביניים לשילוב או לכל סוג אחר של בדיקה. https://dv.acme-v02.test-api.pki.goog/directory

אפשר לרשום רק חשבון ACME אחד עם סוד EAB. אחרי שרושמים חשבון ACME באמצעות סוד EAB, הסוד הזה הופך ללא תקף ואי אפשר לעשות בו שימוש חוזר. אם רוצים לרשום כמה חשבונות ACME, צריך לבקש סוד EAB ייחודי לכל אחד מהחשבונות.

בקשת אישורים

אחרי שרשות אישורים ציבורית מאמתת את השליטה שלכם ביעד האישור ומאשרת שלקוח ACME פועל כמצופה כדי לבצע פעולות של ניהול אישורים, אתם יכולים להשתמש בתהליכי העבודה הרגילים של ACME כדי לבקש, לחדש ולבטל אישורים. אפשר לבצע את הפעולות האלה באמצעות לקוח ACME. כדי לבקש ולחדש אישור, צריך להשלים אתגר ACME, כמו אתגר DNS ידני.

כדי להשתמש באתגר DNS ידני כדי לבקש אישור, מריצים את הפקודה הבאה:

certbot certonly \
    --manual \
    --preferred-challenges "dns-01" \
    --server "SERVER" \
    --domains "DOMAINS"

מחליפים את מה שכתוב בשדות הבאים:

  • SERVER: כתובת ה-URL של ספריית ACME לסביבת הייצור או לסביבת ה-Staging
  • DOMAINS: רשימה מופרדת בפסיקים של דומיינים שעבורם אתם מבקשים אישורים

הסרת המשאבים

אם אתם לא צריכים יותר אישורים לדומיינים שלכם, אתם יכולים למחוק את הפרויקט שיצרתם.

סביבת Staging

אפשר להשתמש בסביבת הבדיקה של רשות אישורים ציבורית כדי לבקש אישורים למטרות בדיקה. האישורים שמונפקים על ידי שרשרת סביבת הבדיקה מקושרים לרשות אישורים בסיסית לבדיקה. דפדפנים או לקוחות אחרים שלא הוגדרו לתת אמון באישור הבסיס של סביבת הבדיקה לא יתנו אמון באישורים מסביבת הבדיקה. כדי לקבל EAB Secret שתקף בסביבת הבדיקה, צריך לשנות את נקודת הקצה ל-API לנקודת הקצה של סביבת הבדיקה:

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

המאמרים הבאים