הגדרת SSL עבור אתר כלשהו היא אתגר. מבקרי האתר, הדפדפנים ומנועי החיפוש מעניקים שווי גבוה לאתר מאובטח כראוי עם שכבת Secure Sockets Layer (SSL). בעבר, התהליך כלל רכישה, התקנה והגדרה של תעודת SSL. אך עם Cloudflare SSL, ניתן להשלים את תהליך הגדרת ה-SSL במספר לחיצות בלבד!
במאמר זה, תלמד איך להגדיר את האתר שלך עם הצפנת SSL באמצעות Cloudflare. לכן עבוד דרכך לחיבורי SSL מוצפנים מקצה לקצה!
דרישות מראש
כדי להמשיך עם המדריך הזה, ישנם מספר דרישות מראש המפורטות למטה:
- A Cloudflare account with an existing website and domain pointed to the Cloudflare nameservers.
- שרת Ubuntu Linux עם NGINX מותקן ומוגדר. המדריך הזה מדגיש את שימוש ב-Linux וב-NGINX, אך התהליך הכללי אותו ניתן להחיל עבור IIS או Apache.
הגדרת Cloudflare Universal SSL: רק ההתחלה
ישנם מספר דרכים להגדרת SSL באמצעות Cloudflare. לעתים קרובות, הדרך המהירה ביותר היא לבחור Universal SSL. למה? עם Universal SSL, במקום למצוא ולרכוש תעודת SSL, Cloudflare מספקת תעודה, ואז כל התעבורה שנשלחת דרך Cloudflare תשתמש באותה תעודה.
לאחר הפעלת Universal SSL, Cloudflare מציגה תעודת SSL תקפה לגולשים ולמנועי חיפוש. Cloudflare גם אינה דורשת הגדרת השרת או האתר לשימוש בתעודה זו – נחמד מאוד!
1. הפעל את דפדפן האינטרנט שלך והתחבר ללוח המחוונים Cloudflare dashboard.
2. נווט לאתר שלך מרשימת הדומיינים בחשבון, כפי שמוצג למטה.

3. כעת, לחץ על SSL/TLS כדי לראות את אפשרויות ההצפנה של האתר שלך.

4. בחר באפשרות גמיש כדי להפעיל את Universal SSL. לאחר בחירה, השינוי יחול מיידית. האתר שלך כעת מוצפן בין הדפדפן ל-Cloudflare!

הגדרת הצפנה של SSL מקצה לקצה מלאה
אף ש-Universal SSL הוא אפשרות נהדרת להתחלת הגנת אתרים, הוא משאיר את התעבורה בין השרת ל-Cloudflare בלתי מאובטחת. למרבה המזל, ישנם שני מצבי הצפנה להצפנת התעבורה מ-Cloudflare לשרת, Full ו- Full (strict), כל אחד עם דרישות התקנת תעודה שונות בעיקרן.
- Full – דורש תעודה על השרת, אך ייתכן ותהיה זו תעודה שנחתמת עצמית.
- שלם (מוחזק) – ייתכן והתעודה הצדדית שמותקנת חייבת להיות תעודה תקפה.
בואו נעבור על ההבחנה בין הצפנים הללו וכיצד להגדיר אותן.
הגדרת הצפנה מלאה של SSL/TLS עם תעודה שנחתמת באופן עצמא
בניגוד ל- Universal SSL, ההצפנה מלאה של SSL/TLS דורשת מהשרת שלך לספק תעודת SSL תקנית כדי להצפין את התעבורה מהשרת אל Cloudflare. ישנם דרכים רבות לבצע זאת, אך המדריך הזה מדגיש את השלבים בשרת Linux עם NGINX.
יצירת תעודה שנחתמת באופן עצמא
כדי להצפין את החיבור בין Cloudflare לשרת המקור שלך, תצטרך לקבל תעודת SSL. מאחר ומצב הצפנה של SSL/TLS מלא אינו דורש את התעודה להיות מאומתת לגמרי, ניתן להשתמש בתעודה שנחתמת באופן עצמא כדי להתחיל מהר.
1. התחבר באמצעות Secure Shell (SSH) לשרת האינטרנט שלך ב- Linux.
2. שנה (cd
) לתיקייה התקנית של SSL ב-Ubuntu (/etc/ssl
) על ידי הרצת הפקודה הבאה. cd /etc/ssl

/etc/ssl
directory3. כעת, יש ליצור את שני מפתחות הציבור והפרטי של האתר שלך באמצעות הפקודה openssl
. כדי לעשות זאת, הרץ את הפקודה openssl
שמופיעה למטה.
פקודה זו מבצעת כמה דברים:
- מבקשת תעודה X.509 הסופקת על ידי הפרמטר
-x509
. - כאשר מתייחס ל-NGINX, מאפשרת ל-NGINX לקרוא את התעודה בזמן הפעלתו באמצעות הפרמטר
-nodes
. - מגדירה את מספר הימים, שהתעודה תהיה תקפה.
- יוצר מפתח ציבור ופרטי חדש עם
-newkey
באמצעות הצפנה RSA בגודל 2048 ביט (rsa:2048
). - שומר את המפתח הפרטי בנתיב
/etc/ssl/private/nginx-selfsigned.key
באמצעות הפרמטר-keyout
. - שומר את המפתח הציבורי בנתיב
/etc/ssl/certs/nginx-selfsigned.crt
באמצעות הפרמטר-out
.
אם
openssl
מחזיר תקלה חמימה שלCan't load /root/.rnd into RNG
, יהיה עליך להפעיל הערה מתחת לשורה#RANDFILE = $ENV::HOME/.rnd
בקובץ/etc/ssl/openssl.cnf
. כל הגרסאות המודרניות שלopenssl
יחזרו לשימוש במכשיר ה-/dev/urandom
של המערכת לנתוני אנטרופיה רנדומליים ולא ידרשו קובץ מסוים להשקעה.
4. לאחר הרצת הפקודה בהצלחה, openssl יבקש ממך מידע. למטה תמצא את כל הערכים שסופקו עבור המדריך הזה.
- שם המדינה:
US
- שם המדינה או המחוז:
אילינוי
- שם העיר:
בלומינגטון
- שם הארגון:
חברת הבדיקה, בע"מ
- שם היחידה הארגונית: <ריק>
- שם המשטר:
test.adamlistek.me
- : כתובת דוא"ל:
[email protected]

5. לבסוף, אשרו שהתעודה קיימת באמצעות פקודת הבדיקה test
. אם פקודת הבדיקה test
מחזירה (echo $?
) 0
, אז הקובץ קיים כצפוי. ניתן לראות בתמונת המסך שאילו פקודות כל אחת החזירה ערך 0.

הגדרת NGINX
כעת שהתעודה נוצרה ונשמרה במיקוםי המפתח /etc/ssl/certs
ו- /etc/ssl/private
, עלינו להגדיר את NGINX כך שישתמש בתעודה וישרת את תוכן האתר.
הגדרות האתר של NGINX מוגדרות בבלוקי server
שנמצאים בדרך כלל בקבצי מארח וירטואליים. בדוגמה למטה, ההגדרה הבסיסית של האתר נשמרת בקובץ test.adamlistek.me.conf
ומתווספת לקובץ הראשי של nginx.conf
.
1. לראשונה, יש ליצור קובץ מארח וירטואלי חדש בשם שתבחרו, אך לדוגמה נתינתו test.adamlistek.me.conf
תחת התיקייה /etc/nginx/vhosts.d
. לאחר מכן, יש להעתיק את התוכן למטה לקובץ מארח וירטואלי ולשמור אותו.
יש להחליף את שם הדומיין
test.adamlistek.me
בשלכם, משום שזאת דוגמה בלבד. ואם תיקיית/etc/nginx/vhosts.d
לא קיימת, יש ליצור את התיקייה על ידי הרצתmkdir /etc/nginx/vhosts.d
.
2. אמת שקובץ התצורה הראשי של NGINX, /etc/nginx/nginx.conf
, מכיל את השורה הנדרשת של include
בתוך בלוק ה-http
, הממוקם בסופו של הבלוק.
3. הפעל מחדש את NGINX באמצעות הפקודה הבאה אם אתה במערכת systemd, שהיא מנהל שירות ומערכת מודרנית ל-Linux.
4. חזור אל Cloudflare, אמת שהתעוז המוגנת בעצמה פועלת. כדי לעשות זאת, השבת את ה-"orange-cloud" עבור רשומת הDNS בתוך מעמד הפרוקסי, כפי שמוצג למטה. כיבוי אפשרות "orange-cloud" מתעלם מ-Cloudflare ומשרת בקשות ישירות משרת האינטרנט.

5. ודאו כי האתר מחזיר את תעודת ה-SSL החדשה שנוצרה עצמאית על ידי ניווט לאתר בדפדפן האינטרנט שלך. עשיית כך תביא לדף אזהרה, המוצג למטה.

6. לבסוף, הפעלת קידוד Full TLS/SSL ב-Cloudflare. כדי לעשות זאת, הפעל מחדש את סטטוס הפרוקסי "ענן כתום" ב-Cloudflare על הרשומת DNS שביטלת בעבר. לאחר מכן נווט אל כרטיסיית ה-SSL/TLS ולחץ על כפתור הרדיו Full המוצג למטה.

ייצור תעודות מקור להצפנת SSL/TLS המלאה (רגועה)
מצב הצפנה מלא אינו מבטיח שהתעודה שמוצגת על ידי שרת האינטרנט מכילה שרשרת תעודות תקפה באופן אמיתי. לכן, במקום זאת, כדאי להשתמש בהצפנה לא רגועה, ו-Cloudflare תקבל כל תעודה שתוצג על ידי השרת.
Cloudflare מציעה אפשרות ליצירת תעודת TLS בחינם כדי לאבטח את חיבור שרת המקור שלך. אך ישנם שני צדדים שליליים לשימוש בתעודה מקור שסופקה על ידי Cloudflare. האחד הוא שעליך ליצור ולהתקין את התעודה באופן ידני. השני הוא שהתעודה נראית כמו תעודה שנחתמה עצמאית שאף דפדפן לא יאמין לה מלבד Cloudflare.
אפשר לאוטומטזציה של יצירת התעודה באמצעות נקודת הקצה API של יצירת תעודת Origin CA, אך זה מעבר לטווח של המדריך הזה.
1. נווטו אל שרת המקור על ידי ניווט אל כרטיסיית ה-SSL/TLS -> שרת מקורי, כפי שאתה רואה למטה, ולחצו על כפתור ה-יצירת תעודה.

2. כפי שניתן לראות למטה, האפשרויות הברירת מחדל כבר מוגדרות ליצירת תעודת כרטיס רשת עבור הדומיין עם 15 שנות תוקפות – נחמד! לכן השאר את האפשרויות הברירת מחדל ויצור את התעודה על ידי לחיצה על הכפתור צור בפינה הימנית-תחתונה של העמוד.
A wildcard certificate, shown as
*.domain.com
, means that any subdomain will also be covered by this certificate including www.

3. הוסף את התעודה שנוצרה למערכת הלינוקס שלך על ידי שמירת מפתחות הפרטי והציבוריים תחילה עם עורך הטקסט GNU nano. מאחר שישנם שני מפתחות לשמירה, תצטרך לשמור את קבצי המפתח אחד לכל פעם.
ודא ששמירת המפתח הפרטי מתבצעת מכיוון שהוא זמין רק על ידי זמן יצירת תעודה מקורית. אם איבדת את המפתח הזה בטעות, יש לבטל את התעודה ולהנפיק תעודה חדשה.
פתח טרמינל, ואז צור ופתח את קובץ המפתח הציבורי (nginx-test.adamlistek.me.crt
) ב-nano על ידי הרצת הפקודה הראשונה למטה.
באשף התעניינות, חזור אל Cloudflare והעתק את מפתח המקור (תעודת המקור) (מפתח הציבורי) על ידי לחיצה על האפשרות להעתיק, כפי שמוצג למטה. לאחר מכן הדבק (Ctrl+U) את מפתח הציבורי שהעתקת לקובץ המפתח הציבורי שנפתח ב-nano. שמור את השינויים (Ctrl+O) וצא (Ctrl+X) מ-nano.
לאחר שמירת קובץ המפתח הציבורי, חזור על אותו התהליך מיצירת קובץ המפתח, העתקת המפתח מ-Cloudfare, ושמירתו בקובץ המפתח. אך הפעם אתה יוצר את קובץ המפתח הפרטי (nginx-test.adamlistek.me.key
).

4. עכשיו שיצרת את המפתחות הציבורי והפרטי, הפנה את NGINX למיקום התעודות. עשה זאת על ידי שינוי קובץ התצורה test.adamlistek.me.conf
עם השורות הבאות, ששונו כך שיתאימו לדומיינך.
5. כדי ליישם את התעודות החדשות, הפעל מחדש את NGINX עם הפקודה הבאה.
6. עכשיו חזור ללשונית SSL/TLS ב-Cloudflare, עדכן את מצב ההצפנה של SSL/TLS על ידי לחיצה על Full (strict), כפי שאתה רואה למטה.

הפעלת הצפנת SSL/TLS מלאה (מחמירה) עם LetsEncrypt
החסרון הגדול ביותר בשימוש בתעודת מקור של Cloudflare הוא שהיא מוטמעת רק על ידי Cloudflare. אם נדרשת לך תעודת דפדפן מאושרת מלאה, באופן כללי כתקן מחזור או לשליטה נוספת, LetsEncrypt מציעה אפשרות ליצירת תעודה נכונה.
אם כי אפשר להשתמש בכל תעודה תקפה, LetsEncrypt היא בחירה נפוצה ליצירת תעודה תקפה. קיימים מספר לקוחות LetsEncrypt זמינים, אך המדריך הזה מדגים את לקוח acme.sh.
מאחר שאתה כבר ב-Cloudflare, אחת השיטות הטובות ביותר לספק DNS עם LetsEncrypt היא דרך האפשרות ה-DNS.
1. תחילה, פתח את הטרמינל שלך והתקן את acme.sh דרך הפקודה curl
.

2. השלב הבא הוא ליצור או לשנות את קובץ account.conf
הממוקם בתיקיית ההתקנה כדי להוסיף את מפתחות API של Cloudflare שנשמרו. את המפתחות האלו ניתן למצוא בקטע פרופיל —> טוקנים API בלוח המחוונים של Cloudflare.
אם ניתן ליצור טוקן מוגבל בהרשאות מסוימות, לצורך המדריך נעדיף להשתמש במפתח API גלובלי.
3. ליצור את התעודה באמצעות הפקודה הבאה. שים לב שהפקודה מפנה ללקוח acme.sh
להשתמש ב-Cloudflare (dns_cf
) כדי לאמת (--dns
) את בעלות התעודה. לאחר מכן, היא מגדירה את זמן ההמתנה (--dnsslep
) ל-20 שניות לפני שתינתן (--issue
) התעודה לדומיין (-d
) test.adamlistek.me.
כאשר הפקודה מושלמת, למטה תראה את הנתיבים בהם תוכל לאתר את התעודה שלך, מפתח התעודה, תעודת CA האמצעית, ותעודת השרשרת המלאה.

4. כמו בפעם הקודמת, לשנות את ההגדרות של אתר NGINX כדי לשנות את מיקום ה-ssl_certificate
וה-ssl_certificate_key
. וודא שמחליפים את /home/user
במיקום שבו ההתקנה שלך של acme.sh נמצא.
5. להחיל את ההגדרה החדשה על ידי איתור NGINX מחדש עם הפקודה הבאה.
6. לעדכן את מצב ההצפנה של SSL/TLS של Cloudflare על ידי המעבר אל לשונית SSL/TLS, ואז ללחוץ על מלא (מחמיר).

סיכום
במהלך המדריך הזה, למדת איך לאבטח את האתר שלך עם אפשרויות ה-ssl/tls שונות שסופקו על ידי cloudflare. הוספת letsencrypt לתצורת ה-ssl שלך ב-cloudflare מוסיפה אפשרות לשרת מקור גמיש ובניהול המשתמש כאחראי על תעוזה!
עם הידע באפשרויות השונות לאבטח את החיבור למבקר באתר, האם תעבוד דרך לתחום של חיבור מאובטח לשרת שלך עם cloudflare ssl?