העברת אישורים של צד שלישי אל Certificate Manager

במדריך הזה מוסבר איך להעביר אישורים של צד שלישי אלGoogle Cloud מאזן עומסים באמצעות Certificate Manager.

כדי להעביר אישורים של צד שלישי בלי זמן השבתה, צריך ליצור מספר זהה של אישורים שמנוהלים על ידי Google לאישורים של צד שלישי. לאחר מכן, מאחדים את האישורים למפת אישורים אחת ופורסים את מפת האישורים למאזן עומסים באמצעות DNS. לבסוף, מעדכנים את רשומות ה-DNS A ו-AAAA כך שיפנו לכתובת ה-IP של מאזן העומסים.

רשימת מאזני העומסים הנתמכים מופיעה במאמר סקירה כללית של Certificate Manager.

מטרות

במדריך הזה מוסבר איך לבצע את הפעולות הבאות:

  • יצירת אישורים שמנוהלים על ידי Google באמצעות הרשאת DNS.
  • יוצרים מיפוי אישורים אחד לכל האישורים.
  • פריסת אישורים למאזן העומסים באמצעות DNS.
  • מעדכנים את רשומות ה-DNS A ו-AAAA כך שיפנו לכתובת ה-IP של מאזן העומסים.

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

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine, Certificate Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. התקינו את ה-CLI של Google Cloud.

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

  7. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Compute Engine, Certificate Manager APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. התקינו את ה-CLI של Google Cloud.

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

  13. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init

התפקידים הנדרשים

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

  • בעלים של Certificate Manager (roles/certificatemanager.owner)

    נדרשת כדי ליצור ולנהל משאבים של Certificate Manager.

  • אדמין של איזון עומסים ב-Compute‏ (roles/compute.loadBalancerAdmin) או אדמין של רשת מחשוב (roles/compute.networkAdmin)

    נדרש כדי ליצור ולנהל שרת proxy ליעד HTTPS.

  • אדמין DNS‏ (roles/dns.admin)

    נדרש אם רוצים להשתמש ב-Cloud DNS כפתרון DNS.

למידע נוסף, קראו את המאמרים הבאים:

יצירת אישורים שמנוהלים על ידי Google

יוצרים את אותו מספר של אישורים שמנוהלים על ידי Google עם הרשאת DNS (מומלץ) או אישורים בניהול עצמי כמו אישורים של צד שלישי. לפני שיוצרים את האישורים, צריך ליצור הרשאה ל-DNS ולהוסיף את רשומת ה-CNAME לתחום ה-DNS הסמכותי של הדומיין.

בקטע הזה מפורטים השלבים והפקודות ליצירת אישורים גלובליים שמנוהלים על ידי Google. כדי ליצור אישורים מנוהלים על ידי Google ברמה אזורית או בין-אזורית, אפשר לעיין במאמר בנושא יצירת אישור מנוהל על ידי Google.

יצירת הרשאת DNS

אישור DNS מכסה רק שם דומיין אחד. צריך ליצור הרשאת DNS נפרדת לכל שם דומיין שרוצים להשתמש בו עם אישור היעד.

אם אתם יוצרים הרשאת DNS עבור תעודת wildcard, כמו *.myorg.example.com, צריך להגדיר את הרשאת ה-DNS עבור דומיין האב – לדוגמה, myorg.example.com.

המסוף

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

gcloud

אפשר ליצור שני סוגים של הרשאות DNS: ‏ FIXED_RECORD או PER_PROJECT_RECORD. מידע נוסף זמין במאמר בנושא אימות DNS.

הרשאה ל-DNS מסוג FIXED_RECORD

כדי ליצור הרשאת DNS מסוג FIXED_RECORD, משתמשים בפקודה gcloud certificate-manager dns-authorizations create הבאה:

gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
    --domain="DOMAIN_NAME" \
    --type=[FIXED_RECORD]

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

  • AUTHORIZATION_NAME: השם של אישור ה-DNS.
  • DOMAIN_NAME: השם של דומיין היעד שעבורו יוצרים את אישור ה-DNS הזה. שם הדומיין חייב להיות שם דומיין שמוגדר במלואו, כמו myorg.example.com.

אחרי שיוצרים את הרשאת ה-DNS‏ FIXED_RECORD, מאמתים אותה באמצעות הפקודה gcloud certificate-manager dns-authorizations describe:

gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME

הפלט אמור להיראות כך: בפלט, מוצאים את הקטע dnsResourceRecord. מאתרים את רשומת CNAME ומוסיפים את הפרטים שלה (data,‏ name ו-type) אל תצורת ה-DNS.

createTime: '2022-01-14T13:35:00.258409106Z'
dnsResourceRecord:
  data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog.
  name: _acme-challenge.myorg.example.com.
  type: CNAME
domain: myorg.example.com
name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization
updateTime: '2022-01-14T13:35:01.571086137Z'

הרשאה של DNS לרשומה בכל פרויקט

כדי ליצור הרשאת DNS מסוג PER_PROJECT_RECORD, משתמשים בפקודה gcloud certificate-manager dns-authorizations create הבאה:

gcloud certificate-manager dns-authorizations create AUTHORIZATION_NAME \
    --domain="DOMAIN_NAME" \
    --type=PER_PROJECT_RECORD

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

  • AUTHORIZATION_NAME: השם של אישור ה-DNS.
  • DOMAIN_NAME: השם של דומיין היעד שעבורו יוצרים את אישור ה-DNS הזה. שם הדומיין חייב להיות שם דומיין שמוגדר במלואו, כמו myorg.example.com.

אחרי שיוצרים את הרשאת ה-DNS של PER_PROJECT_RECORD, מאמתים אותה באמצעות הפקודה gcloud certificate-manager dns-authorizations describe:

gcloud certificate-manager dns-authorizations describe AUTHORIZATION_NAME

הפלט אמור להיראות כך: בפלט, מוצאים את הקטע dnsResourceRecord. מאתרים את רשומת CNAME ומוסיפים את הפרטים שלה (data,‏ name ו-type) אל תצורת ה-DNS.

createTime: '2022-01-14T13:35:00.258409106Z'
dnsResourceRecord:
  data: 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog.
  name: _acme-challenge_ujmmovf2vn55tgye.myorg.example.com
  type: CNAME
domain: myorg.example.com
name: projects/myProject/locations/global/dnsAuthorizations/myAuthorization
updateTime: '2022-01-14T13:35:01.571086137Z'

Terraform

כדי ליצור הרשאת DNS, אפשר להשתמש במשאב google_certificate_manager_dns_authorization.

resource "google_certificate_manager_dns_authorization" "default" {
  name        = "${local.name}-dnsauth-${random_id.tf_prefix.hex}"
  description = "The default dns auth"
  domain      = local.domain
  labels = {
    "terraform" : true
  }
}

כדי ללמוד איך להחיל הגדרות ב-Terraform או להסיר אותן, ראו פקודות בסיסיות ב-Terraform.

API

כדי ליצור הרשאת DNS, שולחים בקשת POST אל ה-method‏ dnsAuthorizations.create:

POST /v1/projects/PROJECT_ID/locations/global/dnsAuthorizations?dns_authorization_id=AUTHORIZATION_NAME
{
  "domain": "DOMAIN_NAME",
  "type": "PER_PROJECT_RECORD" //optional
}

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

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • AUTHORIZATION_NAME: השם של אישור ה-DNS.
  • DOMAIN_NAME: השם של דומיין היעד שעבורו יוצרים את אישור ה-DNS הזה. שם הדומיין חייב להיות שם דומיין שמוגדר במלואו, כמו myorg.example.com.

יצירת אישור בניהול Google שמפנה להרשאת ה-DNS

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

המסוף

  1. נכנסים לדף Certificate Manager במסוף Google Cloud .

    מעבר אל Certificate Manager

  2. בכרטיסייה אישורים, לוחצים על הוספת אישור.

  3. בשדה שם האישור, מזינים שם ייחודי לאישור.

  4. אופציונלי: בשדה Description, מזינים תיאור של האישור. התיאור מאפשר לכם לזהות את האישור.

  5. בקטע מיקום, בוחרים באפשרות גלובלי.

  6. בקטע היקף, בוחרים באפשרות ברירת מחדל.

  7. בשדה Certificate type (סוג האישור), בוחרים באפשרות Create Google-managed certificate (יצירת אישור בניהול Google).

  8. בקטע סוג רשות האישורים, בוחרים באפשרות ציבורי.

  9. בשדה שמות דומיינים, מציינים רשימה מופרדת בפסיקים של שמות דומיינים של האישור. כל שם דומיין צריך להיות שם דומיין שמוגדר במלואו, כמו myorg.example.com. שם הדומיין יכול להיות גם שם דומיין עם תו כללי, כמו *.example.com.

  10. בקטע סוג הרשאה, בוחרים באפשרות הרשאת DNS.

    בדף מופיעים אישורי ה-DNS של שמות הדומיינים. אם לשם דומיין אין הרשאה משויכת ב-DNS, פועלים לפי השלבים הבאים כדי ליצור אחת:

    1. לוחצים על יצירת הרשאת DNS חסרה.
    2. בשדה DNS authorization name (שם הרשאת DNS), מציינים את השם של הרשאת ה-DNS. סוג ההרשאה של DNS שמוגדר כברירת מחדל הוא FIXED_RECORD. כדי לנהל אישורים באופן עצמאי בכמה פרויקטים, מסמנים את תיבת הסימון הרשאה לכל פרויקט.
    3. לוחצים על יצירת הרשאת DNS.
  11. בשדה Labels (תוויות), מציינים את התוויות שרוצים לשייך לאישור. כדי להוסיף תווית, לוחצים על Add label ומציינים מפתח וערך לתווית.

  12. לוחצים על יצירה.

    האישור החדש מופיע ברשימת האישורים.

gcloud

כדי ליצור אישור גלובלי שמנוהל על ידי Google עם הרשאת DNS, מריצים את הפקודה certificate-manager certificates create עם הדגל dns-authorizations:

gcloud certificate-manager certificates create CERTIFICATE_NAME \
    --domains="DOMAIN_NAME,*.DOMAIN_NAME" \
    --dns-authorizations="AUTHORIZATION_NAMES"

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

  • CERTIFICATE_NAME: שם האישור.
  • DOMAIN_NAME: השם של דומיין היעד. שם הדומיין חייב להיות שם דומיין שמוגדר במלואו, כמו myorg.example.com, או דומיין עם תו כללי לחיפוש, כמו *.myorg.example.com. הקידומת של כוכבית ונקודה (*.) מציינת תעודת wildcard.
  • AUTHORIZATION_NAMES: רשימה מופרדת בפסיקים של שמות הרשאות DNS שיצרתם עבור האישור.

Terraform

משתמשים במשאב google_certificate_manager_certificate.

resource "google_certificate_manager_certificate" "root_cert" {
  name        = "${local.name}-rootcert-${random_id.tf_prefix.hex}"
  description = "The wildcard cert"
  managed {
    domains = [local.domain, "*.${local.domain}"]
    dns_authorizations = [
      google_certificate_manager_dns_authorization.default.id
    ]
  }
  labels = {
    "terraform" : true
  }
}

API

כדי ליצור את האישור, שולחים בקשת POST ל-method‏ certificates.create באופן הבא:

POST /v1/projects/PROJECT_ID/locations/global/certificates?certificate_id=CERTIFICATE_NAME
{
 "managed": {
  "domains": ["DOMAIN_NAME"],
  "dnsAuthorizations": [
   "projects/PROJECT_ID/locations/global/dnsAuthorizations/AUTHORIZATION_NAME",
  ],
 }
}

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

  • PROJECT_ID: מזהה הפרויקט ב- Google Cloud .
  • CERTIFICATE_NAME: שם האישור.
  • DOMAIN_NAME: השם של דומיין היעד. שם הדומיין חייב להיות שם דומיין שמוגדר במלואו, כמו myorg.example.com, או דומיין עם תו כללי לחיפוש, כמו *.myorg.example.com. הקידומת של כוכבית ונקודה (*.) מציינת תעודת wildcard.
  • AUTHORIZATION_NAMES: רשימה מופרדת בפסיקים של שמות הרשאות DNS.

הוספת רשומת ה-CNAME להגדרת ה-DNS

אם אתם משתמשים בפתרון DNS של צד שלישי כדי לנהל את ה-DNS, תוכלו לעיין במסמכי התיעוד שלו כדי להוסיף את רשומת ה-CNAME להגדרות ה-DNS. אם אתם משתמשים ב-Google Cloud כדי לנהל את ה-DNS, אתם צריכים לבצע את השלבים שמפורטים בקטע הזה.

המסוף

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

  1. נכנסים לדף DNS zones במסוף Google Cloud .

    מעבר לאזורים ב-Cloud DNS

  2. לוחצים על השם של תחום ה-DNS שרוצים להוסיף אליו את הרשומה.

  3. בדף פרטי האזור, לוחצים על הוספת רשומה רגילה.

  4. בדף יצירת סט הרשומות, בשדה שם ה-DNS, מזינים את התת-דומיין של תחום ה-DNS.

    כשמזינים את שם תת-הדומיין, צריך לוודא ששם תת-הדומיין, כולל הטקסט האפור שמוצג בשדה שם ה-DNS, זהה לערך המלא של השדה dnsResourceRecord.name שמוצג בפלט של הפקודה gcloud certificate-manager dns-authorizations describe.

    דוגמאות:

    • אם ערך השדה dnsResourceRecord.name הוא _acme-challenge.myorg.example.com., והטקסט האפור בשדה שם DNS הוא .example.com., מזינים _acme-challenge.myorg.

    • אם ערך השדה dnsResourceRecord.name הוא _acme-challenge.myorg.example.com. , והטקסט האפור בשדה שם DNS הוא .myorg.example.com., מזינים _acme-challenge.

    • אם הערך של השדה dnsResourceRecord.name הוא _acme-challenge_ujmmovf2vn55tgye.myorg.example.com., והטקסט האפור בשדה שם DNS הוא .myorg.example.com., מזינים _acme-challenge_ujmmovf2vn55tgye.

  5. בשדה סוג רשומת משאב בוחרים באפשרות CNAME.

  6. בשדה TTL, מזינים ערך מספרי חיובי לאורך החיים של רשומת המשאב, כלומר משך הזמן שבו אפשר לשמור אותה במטמון.

  7. ברשימה יחידת TTL, בוחרים את יחידת הזמן – לדוגמה, 30 minutes.

  8. בשדה Canonical name, מזינים את הערך המלא של השדה dnsResourceRecord.data כפי שהוא מוצג בפלט של הפקודה gcloud certificate-manager dns-authorizations describe.

  9. כדי להזין פרטים נוספים, לוחצים על הוספת פריט.

  10. לוחצים על יצירה.

gcloud

כשיוצרים אימות DNS, פקודת ה-CLI של gcloud מחזירה את רשומת ה-CNAME המתאימה. כדי להוסיף את רשומת ה-CNAME להגדרות ה-DNS בתחום ה-DNS של דומיין היעד, פועלים לפי השלבים הבאים:

  1. מתחילים את העסקה של רשומת ה-DNS:

    gcloud dns record-sets transaction start --zone="DNS_ZONE_NAME"
    

    מחליפים את DNS_ZONE_NAME בשם של אזור ה-DNS של היעד.

  2. מוסיפים את רשומת ה-CNAME לתחום ה-DNS של היעד:

    gcloud dns record-sets transaction add CNAME_RECORD \
        --name="VALIDATION_SUBDOMAIN_NAME.DOMAIN_NAME." \
        --ttl="30" \
        --type="CNAME" \
        --zone="DNS_ZONE_NAME"
    

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

    • CNAME_RECORD: ערך הנתונים המלא של רשומת ה-CNAME שמוחזרת על ידי פקודת Google Cloud CLI שיצרה את הרשאת ה-DNS המתאימה.
    • VALIDATION_SUBDOMAIN_NAME: תת-הדומיין של הקידומת בתחום ה-DNS, למשל _acme-challenge. אפשר להעתיק את השם מיומן הפקודות של gcloud certificate-manager dns-authorizations describe, כמו שמתואר במאמר יצירת הרשאת DNS.
    • DOMAIN_NAME: השם של דומיין היעד.שם הדומיין חייב להיות שם דומיין מלא (FQDN), כמו myorg.example.com. צריך גם לכלול את הנקודה בסוף אחרי שם דומיין היעד.
    • DNS_ZONE_NAME: השם של תחום ה-DNS של היעד.

    למידע נוסף על ההבדל בין הרשאות DNS של FIXED_RECORD לבין PER_PROJECT_RECORD, אפשר לעיין בדוגמאות הבאות. ההבדל היחיד בין שתי הדוגמאות הוא הערך של הדגל --name.

    הרשאה ל-DNS מסוג FIXED_RECORD

    gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \
        --name="_acme-challenge.myorg.example.com." \
        --ttl="30" \
        --type="CNAME" \
        --zone="myorg-example-com"
    

    הרשאה של DNS לרשומה בכל פרויקט

    gcloud dns record-sets transaction add 0e40fc77-a37d-4eb8-8fe1-eea2e18d12d9.4.authorize.certificatemanager.goog. \
        --name="_acme-challenge_ujmmovf2vn55tgye.myorg.example.com." \
        --ttl="30" \
        --type="CNAME" \
        --zone="myorg-example-com"
    
  3. מריצים את טרנזקציית רשומת ה-DNS כדי לשמור את השינויים:

    gcloud dns record-sets transaction execute --zone="DNS_ZONE_NAME"
    

    מחליפים את DNS_ZONE_NAME בשם של אזור ה-DNS של היעד.

Terraform

כדי להוסיף את רשומת ה-CNAME להגדרת ה-DNS, אפשר להשתמש במשאב google_dns_record_set.

resource "google_dns_record_set" "cname" {
  name         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].name
  managed_zone = google_dns_managed_zone.default.name
  type         = google_certificate_manager_dns_authorization.default.dns_resource_record[0].type
  ttl          = 300
  rrdatas      = [google_certificate_manager_dns_authorization.default.dns_resource_record[0].data]
}

אימות הסטטוס של האישור

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

המסוף

  1. נכנסים לדף Certificate Manager במסוף Google Cloud .

    מעבר אל Certificate Manager

  2. בכרטיסייה Certificates (אישורים), בודקים את העמודה Status (סטטוס) של האישור.

gcloud

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

gcloud certificate-manager certificates describe CERTIFICATE_NAME

מחליפים את CERTIFICATE_NAME בשם של אישור מנוהל על ידי Google.

הפלט אמור להיראות כך:

createTime: '2021-10-20T12:19:53.370778666Z'
expireTime: '2022-05-07T05:03:49Z'
managed:
  authorizationAttemptInfo:
  - domain: myorg.example.com
    state: AUTHORIZED
  dnsAuthorizations:
    - projects/myProject/locations/global/dnsAuthorizations/myCert
  domains:
  - myorg.example.com
  state: ACTIVE
name: projects/myProject/locations/global/certificates/myCert
pemCertificate: |
  -----BEGIN CERTIFICATE-----
  [...]
  -----END CERTIFICATE-----
sanDnsnames:
  -   myorg.example.com
updateTime: '2021-10-20T12:19:55.083385630Z'

אם מצב האישור לא משתנה ל-ACTIVE אחרי כמה שעות, צריך לבדוק שהוספתם נכון את רשומת CNAME להגדרות ה-DNS.

שלבים נוספים לפתרון בעיות זמינים במאמר בנושא פתרון בעיות ב-Certificate Manager.

פריסת האישור במאזן עומסים

כדי לפרוס אישור גלובלי שמנוהל על ידי Google, צריך לפעול לפי השלבים שבקטע הזה ולפרוס את האישור באמצעות מיפוי אישורים.

כדי לפרוס את האישור שמנוהל על ידי Google במאזן עומסים חיצוני אזורי של אפליקציות (ALB), במאזן עומסים פנימי אזורי של אפליקציות (ALB) או במאזן עומסים פנימי של אפליקציות (ALB) בכמה אזורים, צריך לצרף אותו ישירות לשרת ה-proxy של היעד.

יצירת מיפוי אישורים

יוצרים מפת אישורים שמפנה לרשומת מיפוי לאישורים שמשויכת לאישור שלכם:

gcloud

כדי ליצור מיפוי אישורים, משתמשים בפקודה gcloud certificate-manager maps create:

gcloud certificate-manager maps create CERTIFICATE_MAP_NAME

מחליפים את CERTIFICATE_MAP_NAME בשם של מיפוי האישורים של היעד.

Terraform

כדי ליצור מיפוי אישורים, אפשר להשתמש במשאב google_certificate_manager_certificate_map.

resource "google_certificate_manager_certificate_map" "certificate_map" {
  name        = "${local.name}-certmap-${random_id.tf_prefix.hex}"
  description = "${local.domain} certificate map"
  labels = {
    "terraform" : true
  }
}

יצירת רשומת מיפוי לאישורים

יוצרים רשומת מיפוי לאישורים ומשייכים אותה לאישור ולמפת האישורים:

gcloud

כדי ליצור רשומה במפת האישורים, משתמשים בפקודה gcloud certificate-manager maps entries create:

gcloud certificate-manager maps entries create CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME" \
    --certificates="CERTIFICATE_NAME" \
    --hostname="HOSTNAME"

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

  • CERTIFICATE_MAP_ENTRY_NAME: השם של רשומת המיפוי לאישורים.
  • CERTIFICATE_MAP_NAME: השם של מיפוי האישורים שאליו משויכת רשומת מיפוי האישורים.
  • CERTIFICATE_NAME: השם של האישור שרוצים לשייך לרשומה במפת האישורים.
  • HOSTNAME: שם המארח שרוצים לשייך לרשומה במפת האישורים.

    אם רוצים ליצור אישור שכולל גם דומיין עם תו כללי וגם דומיין בסיסי, צריך לציין את שם המארח עם דומיין בסיסי ותו כללי, כמו example.com ו-*.example.com. בנוסף, צריך לציין שני רשומות של מיפוי אישורים – אחת ל-example.com ואחת ל-*.example.com.

Terraform

כדי ליצור רשומה במפת האישורים עם דומיין בסיסי, משתמשים במשאב google_certificate_manager_certificate_map_entry.

resource "google_certificate_manager_certificate_map_entry" "first_entry" {
  name        = "${local.name}-first-entry-${random_id.tf_prefix.hex}"
  description = "example certificate map entry"
  map         = google_certificate_manager_certificate_map.certificate_map.name
  labels = {
    "terraform" : true
  }
  certificates = [google_certificate_manager_certificate.root_cert.id]
  hostname     = local.domain
}

כדי ליצור רשומה במיפוי האישורים עם דומיין עם תו כללי, משתמשים במשאב google_certificate_manager_certificate_map_entry.

resource "google_certificate_manager_certificate_map_entry" "second_entry" {
  name        = "${local.name}-second-entity-${random_id.tf_prefix.hex}"
  description = "example certificate map entry"
  map         = google_certificate_manager_certificate_map.certificate_map.name
  labels = {
    "terraform" : true
  }
  certificates = [google_certificate_manager_certificate.root_cert.id]
  hostname     = "*.${local.domain}"
}

אימות שרשומת מיפוי לאישורים פעילה

לפני שמצרפים את מפת האישורים המתאימה לפרוקסי היעד, צריך לוודא שרשומת מיפוי לאישורים פעילה.

כדי לאמת את רשומת מיפוי האישורים, משתמשים בפקודה gcloud certificate-manager maps entries describe:

gcloud certificate-manager maps entries describe CERTIFICATE_MAP_ENTRY_NAME \
    --map="CERTIFICATE_MAP_NAME"

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

  • CERTIFICATE_MAP_ENTRY_NAME: השם של רשומת המיפוי לאישורים.
  • CERTIFICATE_NAME: השם של האישור שרוצים לשייך לרשומה במפת האישורים.

הפלט אמור להיראות כך:

certificates:
createTime: '2021-09-06T10:01:56.229472109Z'
hostname: example.com
name: projects/my-project/locations/global/certificateMaps/myCertMap/certificateMapEntries/myCertMapEntry
state: ACTIVE
updateTime: '2021-09-06T10:01:58.277031787Z'

צירוף מיפוי האישורים לשרת ה-proxy של היעד

אפשר לצרף את מפת האישורים לשרת proxy חדש של יעד או לשרת proxy קיים של יעד.

gcloud

כדי לצרף את מיפוי האישורים לשרת proxy חדש ליעד, משתמשים בפקודה gcloud compute target-https-proxies create:

gcloud compute target-https-proxies create PROXY_NAME \
    --certificate-map="CERTIFICATE_MAP_NAME" \
    --url-map="URL_MAP" \
    --global

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

  • PROXY_NAME: שם של שרת proxy של היעד.
  • CERTIFICATE_MAP_NAME: השם של מפת האישורים שמפנה לרשומת המיפוי לאישורים ולאישור המשויך.
  • URL_MAP: השם של מפת URL

כדי לצרף את מיפוי האישורים לשרת proxy קיים של HTTPS, משתמשים בפקודה gcloud compute target-https-proxies update. אם אתם לא יודעים את השם של שרת ה-proxy הקיים ליעד, עוברים לדף Target proxies ורושמים את השם של שרת ה-proxy ליעד.

gcloud compute target-https-proxies update PROXY_NAME \
    --certificate-map="CERTIFICATE_MAP_NAME" \
    --global

אחרי שיוצרים או מעדכנים את פרוקסי היעד, מריצים את הפקודה הבאה כדי לוודא שהוא תקין:

gcloud compute target-https-proxies list

Terraform

כדי לצרף את מיפוי האישורים לשרת ה-proxy של היעד, אפשר להשתמש במשאב google_compute_target_https_proxy.

כשמגדירים שרת proxy ליעד, אם מצרפים אישורי TLS (SSL) ישירות וגם דרך מיפוי אישורים, שרת ה-proxy משתמש באישורים שמקושרים למיפוי האישורים ומתעלם מאישורי ה-TLS (SSL) שצורפו ישירות.

בדיקת האישורים שנפרסו

לכל אישור שפרסתם, בודקים את הקישוריות לכל דומיין שמכוסה באישור בכתובת ה-IP של מאזן העומסים באמצעות הפקודה הבאה:

openssl s_client -showcerts -servername DOMAIN_NAME -connect IP_ADDRESS:443

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

  • DOMAIN_NAME: השם של דומיין היעד
  • IP_ADDRESS: כתובת ה-IP של מאזן העומסים

מידע נוסף על בדיקת הקישוריות זמין במאמר בדיקה באמצעות OpenSSL

עדכון רשומות ה-DNS

מעבירים את התעבורה משירות הצד השלישי אל Cloud Load Balancing. כדאי לעיין במאמר בנושא עדכון רשומות ה-DNS מסוג A ו-AAAA כך שיפנו לכתובת ה-IP של מאזן העומסים.

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