המחבר בחר בקרן סיוע COVID-19 כדי לקבל תרומה כחלק מתוכנית "כתוב למענה לתרומות".
הקדמה
רוב התעודות של Let's Encrypt מונפקות באמצעות אימות HTTP, שמאפשר התקנת תעודות בקלות על שרת יחיד. אולם, אימות HTTP לא תמיד מתאים להנפקת תעודות לשימוש באתרים שמאוזנים במערך, ולא ניתן להשתמש בו כדי להנפיק תעודות כוכביות.
אימות DNS מאפשר אימות של בקשות להנפקת תעודות באמצעות רשומות DNS, במקום לספק תוכן דרך HTTP. זה אומר שאפשר להנפיק תעודות באותו זמן עבור אשף שרתי אינטרנט הפועלים מאחורי מאזן מעמסה, או עבור מערכת שאינה נגישה ישירות דרך האינטרנט. תעודות כוכביות גם נתמכות באימות DNS.
הכלי acme-dns-certbot משמש להתחברות Certbot לשרת DNS של מקבל שלישי, בו מודרכים מסמכים באופן אוטומטי דרך API בזמן שמבקשים מסמך. היתרון של זה הוא שאתה לא צריך לשלב את Certbot ישירות עם חשבון הספק שלך לשרת DNS, וגם לא צריך לספק לו גישה בלתי מוגבלת לתצורת ה DNS שלך, מה שמועיל לביטחון.
האזורים DNS הממוצעים DNS zones משמשים כדי להוריד את החיפושים עבור רשומים אומרים על המסמך לשרת DNS של המקבל שלישי, כך שאחרי שההגדרה הראשונית הסתיימה, ניתן לבקש כמה מסמכים שהוא רצה בלי לבצע אימוץ ידני בעצם.
היתרון עיקרי נוסף של acme-dns-certbot הוא שהוא יכול להשתמש בו ליישם מסמכים עבור שרתים פרטיים שעשויים לרוץ מאחורי מעבד העל, או שאינם נגישים ישירות דרך HTTP. הדרך המסורתית של אימוץ מסמכים HTTP אינה ניתנת במקרים אלה, אלא אם תשים את הקובצים המאמרים על כל שרת. הכלי acme-dns-certbot יעיל גם אם רוצים להשתמש בו ליישם מסמך עבור שרת שאינו נגיש דרך האינטרנט, כמו מערכת פנימית או סביבת בדיקה.
בהדרכה זו, תשתמשו בקש 'hook' acme-dns-certbot עבור Certbot כדי ליישם מסמך Let's Encrypt באמצעות אימוץ דרך DNS.
תנאי קבע
כדי להשלים את המדריך הזה, תדרשו:
- שרת Ubuntu 18.04 שנהגה על ידי הבאת אחריות על השיטת התחלת השרת עם Ubuntu 18.04, כולל משתמש sudo שאינו ראשון לשם.
-
שם רשת שאתה יכול לרשום סימן טעימת טLS עליו, כולל את היכולת להוסיף רשומים DNS. בדוגמה הספציפית הזו, אנחנו נשתמש ב
your-domain
ובsubdomain.your-domain
, בנוסף ל*.your-domain
עבור סימן טעימת טLS גלובלי. אך אם נדרשה, זה יכול להיערך עבור שם רשת אחר, תת רשומים או סימנים גלובליים אם נדרשה.
ברגע שתהיו מוכנים לאחר הדברים האלה, תחברו לשרת שלכם בתור משתמש לא ראשון כדי להתחיל.
שלב 1 — התקנת Certbot
בשלב זה, תהיו מותקנים את Certbot, שהוא תוכנה שמשתמשת ליצור וניהול רישיונות Let’s Encrypt.
Certbot זמין באג 'נדה האופיינית של Ubuntu Apt, אך מומלץ להשתמש באג 'נדה שממשקים את הפיתוחאים של Certbot, בגלל שהיא תמיד מקבלת את הגירסה העדכנית של התוכנה.
התחל על ידי הוספת אג 'נדת Certbot:
תצטרכו ללחוץ ENTER
כדי לקבל את ההזמנה ולהוסיף את האג 'נדה חדשה למערכת שלכם.
בהמשך, תתקנו את ערימת התוכנה Certbot:
אחרי שהתקנה תיגמר, תוכלו לבדוק שCertbot נתקן בהצלחה:
זה ייצא דברים דומים למה שנראה אחרת:
בשלב זה תתקנו Certbot. בהמשך, תורידו ותתקנו את acme-dns-certbot הקש.
שלב 2 — התקנת acme-dns-certbot
עכשיו שהתוכנה הבסיסית של Certbot נתקנה, תוכלו לוריד ולתקן acme-dns-certbot, שיאפשר לCertbot לפעול במצב ודאיון DNS.
התחל על ידי הורידת הגירסה של הסקריpt:
הערה: כמיטב מנהג, תוודא שתבדוק את ה מאגר Github הזה ואת הסקripט לפני שיריצה. אתה גם יכול קודם להפרית את ה מאגר הזה ואז להשתמש בסקריpt acme-dns-certbot.py
. ההפריט הזה מספק שכבה נוספת של אבטחה, שמונעת מהסקריpt להיות מעל שלנו ופחות נפלאת לשינויים לא מוודאים.
אחרי שההורדה תישלמה, תסמיק את הסקripט כיוון שהוא יכול להיות מופעל:
אחר כך, תערבב את הקובץ בעזרת מתונך טקסט האהוב עלך ותשנה את השורה הראשונה על מנת לדחוף אותו להשתמש ב Python 3:
הוסף 3
לסוף השורה הראשונה:
#!/usr/bin/env python3
. . .
זה נדרש כדי לוודא שהסקריpt משתמש בגירסה העדכנית בעלת הסיומן המאצע של Python 3, במקום Python 2 המושגים.
אחר הסיום, שמו וסגר את הקובץ.
לבסוף, העבר את הסקריpt לתוך המידע של Certbot Let’s Encrypt כדי שCertbot יוכל להטעין אותו:
בשלב זה, הורידת והתקנת הקשר acme-dns-certbot.py. בהמשך, תוכל להתחיל בתהליך ההכנה ולהתקדם ליישום הרשימה הראשונה שלך.
שלב 3 — הגדרת acme-dns-certbot
על מנת להתחיל להשתמש בacme-dns-certbot, עליך לבצע תהליך הגדרה ראשוני ולהיות מסוגל להוציא לפחות סימן-מסמך אחד.
התחל על ידי בעיית המסמך של Certbot באמצעות אימות DNS. זה יריץ את הסקripт acme-dns-certbot ויגרם את התהליך הגדרה הראשון:
בעזרת הארגום --manual
אתה מעצבעת את כל התאמה האוטומטית של Certbot. במקרה זה, אתה פשוט מוציא סימן-מסמך ראשון, במקום להתאים אותו בשירות באופן אוטומטי בנוסף.
אתה מתגוגע בCertbot להשתמש בתוך הקטע acme-dns-certbot באמצעות הנגדל --manual-auth-hook
. אתה מפעיל את הארגום --preferred-challenges
כך שCertbot יתעדה על אימות DNS.
אתה גם חייב לספר לCertbot לעצור לפני שינסה לאימות את הסימן-מסמך, שעושה בעזרת הארגום --debug-challenges
. זה על מנת לאפשר לך להגיד את הרשימה CNAME
שהדרכה על ידי acme-dns-certbot, שעוסק בזה בשלב זה. בלי הארגום --debug-challenges
, Certbot לא יעצה, כך שלא תהיה מספיק זמן לבצע את השינוי הדNS הנחוץ.
אזהרה: דרך אגב, אחת מההערכות הללו עשויה להיות גרועה. הערכות האחרות נראות בסדר.
אחרי שתבצעו את כל הצעדים הרגילים של Certbot, תיעדו את המסר הבא שדומה לבא:
תזדקקו להוספת הוסף של השונה הנחוץ של DNS CNAME
להגדרת DNS עבור המקום שלכם. זה יעיל להעניק של שירות ה DNS ACME, שיאפשר ל acme-dns-certbot להגדיר את השונות הדירוג הנחוצות כדי לאמת את בקשת הסימנים.
אם אתם משתמשים ב DigitalOcean כספק של DNS, תוכלו להגדיר את השונה ה DNS בפניל השליטה שלכם:
מומחים מוצעים את ה TTL (זמן-לחיים) לעד 300 שניות כדי לסייע להבטיחה ששינויים בשונה יתקדמו במהירות.
ברגע שתיקחו את השונה ה DNS, תחזורו ל Certbot ולחצו על ENTER
כדי לאמת את בקשת הסימנים ולסיים את תהליך היציאה.
זה יקח מספר שניות, ואתם אז תראו מסר שאישר שהסימן ניצוף:
התרחש העסקה עם acme-dns-certbot לראשונה, נוספו השונות ה DNS הנחוצים, וניצוף סימן בהצלחה. בהמשך תסדרו את הרכיבה האוטומטית של הסימן שלכם.
שלב 4 — השתמשות בacme-dns-certbot
בשלב האחרון הזה, תשתמשות בacme-dns-certbot כדי להעתיק יותר מסמכים ולרפא את המסמכים הקיימים.
ראשית, מאז שהצלחתם להעתיק לפחות אחד מסמך באמצעות acme-dns-certbot, תוכלו להמשיך ולהעתיק מסמכים עבור אותם שמות DNS בלי להוסיף שוב שרשרת דיוקים CNAME
. אך אם תרצו להרוויח מסמך עבור חלקים הכנסים אחרים או שם מקום חדש לחלוטין, תצטרכו להוסיף שוב שרשרת CNAME
לחלקים הכנסים.
לדוגמה, תוכלו להעתיק מסמך ספר עצמי בלילה בלי לבצע את האימוץ המקורי שוב:
אך אם הייתם רוצים להעתיק מסמך עבור חלק כנסים, הייתם מודעים להוסיף שרשרת CNAME
לחלקים הכנסים:
זה יראה תוצאה דומה להגדרה המקורית שעשיתם בשלב 3:
עכשיו שתוכלו להשתמש בacme-dns-certbot להעתיק מסמכים, שווה לחשוב גם על תהליך הרפואה הזה.
אחרי שהמסמכים שלכם מתקרבים לסיומם, Certbot יכול לרפא אותם באופן אוטומטי לעברכם:
תהליך הרפואה יוכל להתחיל ולהגיע לסיום בלי תקשורת אדם, והוא יזכור את כל אפשרויות ההגדרה שאיתן סיפקתם בעת ההגדרה המקורית.
כדי לבדוק שזה פועל ללא הצטרפות לתאריך האחרון של התוקף, אתה יכול לגרום למתבצע מבצע ריק. זה ידמה את תהליך הרenewal ללא שינוי אפילו בהגדרה שלך.
אתה יכול לגרום למתבצע ריק בעזרת הפקודה הרגילה renew
, אבל עם הארגון --dry-run
:
זה ייצא משהו דומה לבאותה, שיספק את הבטחה שהתהליך החדש עובד נכון:
בשלב האחרון הזה, הוצאת סימן ניהול נוסף ואז בדקת את תהליך הרenewal האוטומטי בתוך Certbot.
סיכום
במאמר הזה, הגדרת את Certbot עם acme-dns-certbot כדי להעלות סימנים בעזרת אבטחת DNS. זה פתח את אפשרות השימוש בסימנים המקריים בנוסף לניהול רשת גדולה של שרתים אינטרנטיים נפרדים שעשויים להיות מאחורי מעבד העליזה.
תספק לעצמך להסתכל על האחסון של acme-dns-certbot עבור עדכונים בסקריpt, כי תמיד מומלץ להריץ את הגירסה הנתמכת האחרונה.
אם אתה מעוניין ללמוד עוד על acme-dns-certbot, אולי תרצה לסקיר את המסמך העליון עבור הפרוייקט acme-dns, שהוא הרכב הצד של acme-dns-certbot:
התוכנה acme-dns יכולה גם להוצאה לשימוש בעצמת שירות, שיהיה יעיל אם אתה פועל בסביבות בטיחות גבוהות או סביבות מורכבות.
אחרת, תוכל לעבור על הפרטים הטכניים של אימות ה DNS ACME על-ידי סקירת החלק המתאים ממסמך ה RFC הרשמי, שמתאר איך התהליך פועל: