הקדמה
המדריך הזה יראה לך איך לרכוש ולהתקין אישור SSL מרשת מהימנה, מרשם הרשויות המסמכים המסחריות. תעודות SSL מאפשרות לשרתי האינטרנט להצפין את תעבורתם, וגם מציעות מנגנון לאימות זהות השרת למבקרים שלו. אתרים שמשתמשים ב-SSL נגישים דרך פרוטוקול https://
.
לפני סוף שנות ה-2010, רבים מהאתרים הקטנים לא תמיד השתמשו ב-SSL או HTTPS. מאז, הציפיות מבחינת אבטחה גבוהות יותר, ופרויקט Let’s Encrypt נוצר כדי לספק תעודות SSL חינמיות ומהימנות בתצורה גדולה, מאפשר לכמעט כולם להשתמש ב-HTTPS כפי שנדרש.
עם זאת, ישנן כמה הגבלות לתעודות של Let’s Encrypt. הן פגות מדי 3 חודשים, דרוש לך להפעיל בדרך כלל סקריפט רענון אוטומטי במקום, וניתן להן להיות מסובכות לשימוש בסביבות שבהן זה אינו אפשרי. Let’s Encrypt גם לא מספקת תעודות אימות מורחב המאמתות את הבעלות המשפטית על הנוכחות האינטרנטית שלך, או תעודות וילדקארד שיתאימו באופן אוטומטי לכל תת-דומיין אפשרי של האתר שלך (כגון shop.example.com) מבלי שתצטרך לרשום כל אחד מהם באופן ידני.
עבור רוב המשתמשים, אלו לא יהיו הגבלות משמעותיות. Let’s Encrypt היא אפשרות פופולרית לאתרים אישיים ומסחריים רבים. אך יש לך דרישות מסוימות לתוכנה עסקית או לפעולה מסחרית גדולה מאוד, יש לך בידך לשקול רכישת תעודה מ-CA מסחרית.
המדר הזה מכסה כיצד לבחור ולהטביע תעודת SSL מרשות תעודה מהימנה. לאחר שקיבלת את התעודה שלך, המדר יכסה את ההתקנה על שרתי האינג'ינקס והאפאצ'י.
דרישות ראשוניות
ישנם מספר דרישות ראשוניות לניסיון לקבל תעודת SSL מ-CA מסחרית:
-
שם דומיין רשום. המדר ישתמש ב־
example.com
לכל אורךו. ניתן לרכוש שם דומיין מ־Namecheap, לקבל אחד בחינם מ־Freenom, או להשתמש ברשם הדומיינים שלך. -
גישה לאחת מכתובות הדוא"ל ברשומת WHOIS של הדומיין שלך או לכתובת דוא"ל "סוג מנהל" בדומיין עצמו. סוכנויות אישור התעודות SSL שמונות תקפים יאמתו בדרך כלל את שליטת הדומיין על ידי שליחת הודעת אימות לאחת מהכתובות ברשומת WHOIS של הדומיין, או לכתובת דוא"ל ניהולית כללית בדומיין עצמו. כדי לקבל תעודת אימות מורחבת, יידרש לך גם לספק לסוכנות האישור תיעוד להקמת זהות המשפץ באתר האינטרנט, בין היתר.
-
הגדרת רשומות DNS עבור השרת שלך. אם אתה משתמש ב-DigitalOcean, ראה את תיעוד ה-DNS שלנו לקבלת פרטים נוספים על איך להוסיף אותן.
המדריך הזה יספק הוראות הגדרה עבור שרת Ubuntu 22.04 שהוקם על ידי ביצוע המדריך הגדרת השרת הראשונית עבור Ubuntu 22.04, כולל משתמש חסום ב-sudo וגישה לא כ-root, וגם חומת אש. רוב הגרסאות המודרניות של Linux יעבדו באופן דומה.
עליך גם להתקין שרת אינטרנט כמו Nginx או Apache, בהתאם להוראות ב-איך להתקין את Nginx על Ubuntu 22.04 או ב-איך להתקין את שרת האינטרנט Apache על Ubuntu 22.04. וודא שיש לך בלוק שרת (או מארח וירטואלי Apache) עבור התחום שלך.
שלב 1 – בחירת רשות התעודות שלך
אם אינך בטוח איזו רשות תעודות להשתמש, ישנם כמה גורמים לשיקול.
חברות בתוכנית לתעודות שורש
הנקודה החשובה ביותר היא שה-CA שתבחר הוא חבר בתוכניות תעוזיביות הקיימות של רוב המערכות הפעלה נפוצות ודפדפני האינטרנט, כלומר הוא CA "מהימן", והתעוזיבות לשורש שלו מותרת על ידי דפדפנים נפוצים ותוכנות אחרות. אם תעוזיב תעודת SSL של האתר שלך נחתמת על ידי CA מהימן, זהו נחשב כזה שהזהות שלו תקפה על ידי תוכנות שמאמינות ב-CA.
רוב ה-CA המסחריים שתתקל בהם יהיו חברים בתוכניות רוב ה-CA המסובסדות, אך זה לא יזיק לבדוק לפני שאתה רוכש את התעודה שלך. לדוגמה, Apple מפרסמת את רשימת התעודות השורש SSL המהימות שלה.
סוגי תעודות
ודא שבוחר CA שמציע את סוג התעודה שאתה צריך. רבים מספקים גרסאות שונות של סוגי תעודות אלו תחת מגוון של שמות ומבני מחירים. הנה תיאור קצר של כל סוג:
- דומיין יחיד: משמש לדומיין יחיד, לדוגמה,
example.com
. שימו לב שדומיינים נוספים, כמוwww.example.com
, לא כלולים - ווילדקארד: משמש לדומיין וכל תתי-דומיינים שלו. לדוגמה, תעודת ווילדקארד עבור
*.example.com
יכולה גם לשמש עבורwww.example.com
ו־store.example.com
- רב-דומיין: ידוע גם בשם תעודת SAN או UC, אלו יכולות לשמש עם רבים דומיינים ותתי-דומיינים המתווספים לשדה שם אלטרנטיבי לנושא. לדוגמה, תעודת רב-דומיין יכולה לשמש עם
example.com
,www.example.com
, ו־example.net
בנוסף לסוגי התעודות שצוינו לעיל, קיימים שלושה רמות שונות של אימותים שמפיקות גופי אישור (CA):
- אימות דומיין (DV): תעודות DV מונפקות לאחר שה-CA אימת את הבעלות או השליטה של המבקש בדומיין המדובר
- אימות ארגון (OV): תעודות OV יכולות להתפקד רק לאחר שה-CA המונפקת אימתה את הזהות המשפטית של המבקש
- אימות מורחב (EV): תעודות EV יכולות להתפקד רק לאחר שה-CA המונפקת אימתה את הזהות המשפטית, בנוסף לדברים אחרים, של המבקש, על פי סט קשוח של הנחיות. מטרת סוג זה של תעודה היא לספק משקל נוסף לאימות על תוקפן של זהות הארגון שלך למבקרי האתר שלך. תעודות EV יכולות להיות רבות-דומיין או רבות-תת־דומיין, אך לא רבות־כלליות
תכונות נוספות
הרבה ספקי CA מציעים מגוון רחב של תכונות "בונוס" כדי להבדיל את עצמם משאר ספקי התעודות SSL. חלק מהתכונות הללו עשויות לחסוך לך כסף, לכן חשוב שתשקול את צרכיך נגד ההצעות לפני שתבצע רכישה. דוגמאות לתכונות להסתכל עליהן כוללות חידושי תעודה חינם או תעודת מחיר עבור דומיין יחיד העובדת עבור www.
ושם הדומיין הבסיסי, לדוגמה www.example.com
עם SAN של example.com
שלב 2 – יצירת CSR ומפתח פרטי
לאחר שהכול סודר עבורך ואתה יודע איזה סוג של תעודה נדרשת, הגיע הזמן ליצור בקשת חתימה לתעודה (CSR) ומפתח פרטי.
אם אתה מתכנן להשתמש ב-Apache HTTP או Nginx כשרת האינטרנט שלך, תוכל להשתמש בפקודת openssl
כדי ליצור את המפתח הפרטי ואת בקשת ה-CSR על השרת שלך. במדריך זה, תוכל לשמור את כל הקבצים הרלוונטיים בספריית הבית שלך, אך תרגיש חופשי לאחסן אותם בכל מיקום מאובטח על השרת שלך:
כדי ליצור מפתח פרטי, שנקרא example.com.key
, ובקשת CSR, שנקראת example.com.csr
, הפעל את הפקודה הבאה (החלף את example.com
בשם הדומיין שלך):
- openssl req -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr
בנקודה זו, יתבקש ממך לספק מספר שורות של מידע שיכללו בבקשת התעודה שלך. החלק החשוב ביותר הוא שדה ה־Common Name
, שצריך להתאים לשם שברצונך להשתמש בו עם התעודה שלך – לדוגמה, example.com
, www.example.com
, או (לבקשת תעודת אינסוף) *.example.com
. אם אתה מתכנן לקבל תעודה עם אימות ארגוני (OV) או אימות הרחב (EV), ודא שכל השדות האחרים משקפים בדיוק את פרטי הארגון או העסק שלך. מתן "סיסמת אתגר" אינו נחוץ.
לדוגמה:
OutputCountry Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:New York
Locality Name (eg, city) []:New York
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:[email protected]
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
זה יצורף קובץ .key
ו־.csr
. הקובץ .key
הוא המפתח הפרטי שלך, ועליו להישמר באופן מאובטח. הקובץ .csr
הוא מה שתשלח ל-CA כדי לבקש את תעודת ה־SSL שלך.
- ls example.com*
Outputexample.com.csr example.com.key
יהיה עליך להעתיק ולהדביק את ה־CSR שלך בעת הגשת בקשת התעודה ל-CA שלך. כדי להדפיס את תוכן ה־CSR שלך, השתמש ב־cat
:
cat example.com.csr
עכשיו אתה מוכן לרכוש תעודה מ-CA.
שלב 3 – רכישה וקבלת תעודה
ישנם רבים ספקי CA מסחריים, וניתן להשוות ולהשוות בין האפשרויות המתאימות ביותר להגדרה שלך. לדוגמה, Namecheap פועל כספק רישיונות SSL, ושינתה ספקי CA עליונים בעבר כדי לספק את הערך הטוב ביותר. כיום, הם מציעים תעודות מ-Comodo CA. הנה דוגמא למגוון הצעותיהם כל עוד דצמבר 2022:
לאחר בחירת התעודה, יהיה עליך להעלות את ה-CSR שייצרת בשלב הקודם. ספק ה-CA שלך כנראה יכול לצפות ממך בצעד "מאשר", שישלח בקשת אימות לכתובת ברשומת ה-WHOIS של הדומיין שלך או לכתובת סוג "מנהל" של הדומיין שבשבילו אתה מקבל תעודה.
לאחר אישור התעודה, התעודה תישלח באימייל למנהל השמור על שמו. עליך להעתיק ולשמור אותם בשרת שלך באותו מקום שבו יצרת את המפתח הפרטי וה-CSR. תקף את התעודה בשם הדומיין ובסיומת .crt
, לדוגמה example.com.crt
, ותקף את התעודה האמצעית בשם intermediate.crt
.
התעודה מוכנה כעת להתקנה על השרת שלך, אך לפני כן ייתכן שתצטרך לבצע מספר שינויים בצריבת האש שלך.
שלב 4 – עדכון הצריבת האש שלך כדי לאפשר HTTPS
אם יש לך את הגנה מפני פשיטות מהמחשב (firewall) ufw
כפי שמומלץ במדריך ההתקנה שלנו ל-Ubuntu 22.04, יידרש להתאים את ההגדרות כך שיתאפשר תעבורת HTTPS. גם Nginx וגם Apache ירשימו כמה פרופילים עם ufw
בזמן ההתקנה.
ניתן לראות את ההגדרה הנוכחית על ידי הקלדת:
- sudo ufw status
אם אתה מקבל פלט הכולל רק Nginx HTTP
או Apache
, אז רק תעבורת HTTP מורשת לשרת האינטרנט:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
כדי לאפשר גם תעבורת HTTPS, עליך לאפשר את הפרופיל Nginx Full
או Apache
Full ולמחוק את ההרשאה המיותרת של פרופיל HTTP:
- sudo ufw allow 'Nginx Full'
- sudo ufw delete allow 'Nginx HTTP'
זה יצור תוצאה כמו זו:
- sudo ufw status
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)
בשלב הסופי, עליך להתקין את התעודה.
שלב 5 – התקנת תעודה על השרת שלך
לאחר קבלת התעודה מספק השירות שלך, עליך להתקין אותה על השרת האינטרנט שלך. זה כולל הוספת כמה שורות הקשורות ל-SSL להגדרת תוכנה של השרת האינטרנט שלך.
המדריך הזה יכסה את התקנת התקנת Nginx ו-Apache על Ubuntu 22.04, אך רוב גרסאות ה-Linux המודרניות יעבדו באופן דומה. המדריך מניח גם את ההנחות הבאות:
- המפתח הפרטי, תעודת ה-SSL ואם יש, גם תעודות הביניים של ה-CA, נמצאים בתיקייה הבית, ב-
/home/sammy
- המפתח הפרטי נקרא
example.com.key
- התעודת SSL נקראת
example.com.crt
- התעודה האמצעית של ה-CA שלך מתקבלת מספק השירות שלך ושמה בקובץ בשם
intermediate.crt
הערה: בסביבת הפעולה, יש לאחסן את הקבצים הללו במקום שבו רק תהליך השרת האינטרנט (לרוב root
) יכול לגשת אליהם, והמפתח הפרטי יש לשמור בביטחון. לדוגמה, Let’s Encrypt מאחסנת את התעודות שהיא יוצרת ב-/etc/letsencrypt
. דוגמאות להפקעה יתקבלו על פי מספר השרתים בגלל מורכבות הקונפיגורציה במציאות ייצוב.
Nginx
אלו השלבים להפעלת תעודת SSL ב-Nginx באופן ידני.
אם ה-CA שלך החזירה רק תעודה אמצעית, עליך ליצור קובץ תעודה "שמשולב" המכיל את התעודה שלך ואת תעודה האמצע של ה-CA.
בהנחה ששם הקובץ שלך הוא example.com.crt
, תוכל להשתמש בפקודת cat
להוספת קבצים יחד ויצירת קובץ משולב בשם example.com.chained.crt
:
- cat example.com.crt intermediate.crt > example.com.chained.crt
באמצעות nano
או עורך הטקסט המועדף עליך, פתח את קובץ בלוק השרת המוגדר כברירת מחדל של Nginx לעריכה:
- sudo nano /etc/nginx/sites-enabled/default
מצא את ההצהרה listen
, ושנה אותה ל-listen 443 ssl
:
…
server {
listen 443 ssl;
…
הבא, מצא את ההוראה של server_name
באותו בלוק שרת, ווודא שערך השדה שלה תואם לשם המשותף של התעוז. יש להוסיף גם את ההוראות ssl_certificate
ו- ssl_certificate_key
כדי לציין את נתיבי קובץ התעוז והמפתח הפרטי שלך:
…
server_name example.com;
ssl_certificate /home/sammy/example.com.chained.crt;
ssl_certificate_key /home/sammy/example.com.key;
…
כדי לאפשר רק פרוטוקולים וצפרורים של SSL הבטוחים ביותר, יש להוסיף את השורות הבאות לקובץ:
…
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
…
לבסוף, כדי להפנות ברירת המחדל של בקשות HTTP ל-HTTPS, ניתן להוסיף בלוק שרת נוסף בחלק העליון של הקובץ:
server {
listen 80;
server_name example.com;
rewrite ^/(.*) https://example.com/$1 permanent;
}
…
שמור וסגור את הקובץ. אם אתה משתמש ב־nano
, לחץ על Ctrl+X
, אז כאשר מתבקש, הקש על Y
ואז Enter.
לפני שתפעיל מחדש את Nginx, ניתן לאמת את התצורה שלך באמצעות nginx -t
:
- sudo nginx -t
אם אין בעיות, הפעל מחדש את Nginx כדי לאפשר SSL מעל HTTPS:
- sudo systemctl restart nginx
נסה לגשת אל האתר שלך דרך HTTPS, לדוגמה: https://example.com
. כדאי גם לנסות להתחבר דרך HTTP, לדוגמה: http://example.com
, כדי לוודא שההפניה עובדת כמו שצריך.
Apache
אלו השלבים להצגת תעוז באופן ידני על Apache.
באמצעות nano
או עורך טקסט אהוב עליך, פתח את קובץ השרת הווירטואלי המוגדר כברירת מחדל של Apache לעריכה:
- sudo nano /etc/apache2/sites-available/000-default.conf
מצא את הקטע <VirtualHost *:80>
ושנה אותו כך שהשרת שלך יקשיב על הפורט 443
:
…
<VirtualHost *:443>
…
הבא, הוסף את ההוראה ServerName
, אם היא עדיין לא קיימת:
…
ServerName example.com
…
לאחר מכן הוסף את השורות הבאות כדי לציין את נתיבי התעודה והמפתח שלך:
…
SSLEngine on
SSLCertificateFile /home/sammy/example.com.crt
SSLCertificateKeyFile /home/sammy/example.com.key
SSLCACertificateFile /home/sammy/intermediate.crt
…
בנקודה זו, השרת שלך מוגדר להאזין בפרוטוקול HTTPS בלבד (פתחה 443), כך שבקשות HTTP (פתח 80) לא ישוברו. כדי להפנות בקשות HTTP אל HTTPS, הוסף את השורות הבאות לראש הקובץ (החלף את השם בשני המקומות):
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
…
שמור וסגור את הקובץ. אם אתה משתמש ב־nano
, לחץ Ctrl+X
, לאחר מכן, כאשר מתבקש, לחץ Y
, ואז Enter.
הפעל את מודול ה־SSL של Apache על ידי הרצת הפקודה הבאה:
- sudo a2enmod ssl
עכשיו, הפעל מחדש את Apache כדי לטעון את התצורה החדשה ולאפשר TLS/SSL על HTTPS.
- sudo systemctl restart apache2
נסה את זה על ידי גישה לאתר שלך דרך HTTPS, לדוגמה https://example.com
. גם תרצה לנסות להתחבר דרך HTTP, לדוגמה http://example.com
, כדי לוודא שההפניה עובדת כראוי.
מסקנה
במדריך זה, למדת כיצד לקבוע מתי עשויים לך לרכוש תעודת SSL מסחרית ממוסד מכירות ולהשוות ולהשוות את האפשרויות הקיימות. גם למדת כיצד להגדיר את Nginx או Apache לתמיכה ב־HTTPS, וכיצד להתאים את התצורות שלהם לייצור.
הבא, תרצה לקרוא על מקרי שימוש אחרים ב־SSL, כגון בעת עבודה עם מאזני עומס.