בקשת אישור באמצעות רשות אישורים ציבורית ולקוח 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.

    איך נותנים תפקידי 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/
לאחר מכן, מריצים את הפקודה ליצירת מפתח לחשבון כדי ליצור מפתח בסביבת Staging:
gcloud publicca external-account-keys create
כדי לחזור לנקודת הקצה של סביבת הייצור, מריצים את הפקודה הבאה:
gcloud config unset api_endpoint_overrides/publicca

כדי למחוק פרויקט ב- Google Cloud :

gcloud projects delete PROJECT_ID

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