Tמאמר זה ינחה אתכם בשלבים להתקנת תעודת ה-SSL שלכם על Nginx ולהגדרת הפניה אוטומטית מ-HTTP:// ל-HTTPS://.
1. העלאת התעודות לשרת שבו האתר שלכם מתארח
לאחר שתשלים את יצירת קוד ה-CSR ואת שלבי הפעלת ה-SSL, תקבל קובץ זיפ עם תעודות Sectigo (שהייתה ידועה בעבר כ-Comodo) במייל. בנוסף, ניתן להוריד אותן מלוח הבקרה של חשבון NiceNic שלך.
הערה: אם תבחר בשרת NGINX בעת הפעלת התעודה, תקבל קובץ זיפ המכיל קובץ תעודה עם סיומת '.crt' וקובץ חבילת רשות תעודה (CA bundle) עם סיומת '.ca-bundle'.
העלה את שני הקבצים לשרת שלך בכל שיטה שנוחה לך. לדוגמה, שימוש בלקוח FTP.
ניתן גם להוריד את קובץ ה-Bundle לכל תעודה על פי ההוראות כאן.
2. שילוב כל התעודות לקובץ יחיד
יש לוודא שכל התעודות (???_??????.crt ו-???_??????.ca-bundle) משולבות בקובץ '.crt' יחיד.
תעודת הדומיין שלך צריכה להיות הראשונה בקובץ, ואחריה שרשרת התעודות (CA Bundle).
גש לתיקייה שבה העלית את קבצי התעודה. הפעל את הפקודה הבאה לשילוב הקבצים:
$ cat ???_??????.crt ???_??????.ca-bundle >> ???_??????_chain.crt
שימו לב שאם קובצי התעודה הוצאו מחשבון NiceNic שלך, הפקודה המתאימה ביותר היא:
$ cat ???_??????.crt > ???_??????_chain.crt ; echo >> ???_??????_chain.crt ; cat ???_??????.ca-bundle >> ???_??????_chain.crt
3. יצירת בלוק שרת Nginx נפרד או שינוי קובץ התצורה הקיים
להתקנת תעודת ה-SSL על Nginx, יש להראות לשרת אילו קבצים להשתמש, על ידי א) יצירת קובץ תצורה חדש, או ב) עריכת הקובץ הקיים.
א) על ידי הוספת קובץ תצורה חדש לאתר, ניתן לוודא שאין תקלות עם קובץ תצורה נפרד. בנוסף, יהיה קל יותר לתחזק ולפתור בעיות בהתקנה במקרה של תקלה בתצורה החדשה.
אנו ממליצים ליצור קובץ תצורה חדש בתיקייה זו:
/etc/nginx/conf.d
ניתן לעשות זאת בעזרת הפקודה:
sudo nano /etc/nginx/conf.d/Your_??????*-ssl.conf
כאשר Your_??????*-ssl.conf הוא שם הקובץ שנוצר.
העתק והדבק אחד מבלוקי השרת למספר 443 שנמצאים מטה וערוך את הנתיבים. וודא ששם השרת והנתיב ל-webroot תואמים בין בלוק השרת לנמל 80 ובין זה של נמל 443. אם יש לך ערכים חשובים אחרים שצריך לשמור, העבר אותם גם לבלוק השרת החדש.
ב) עריכת קובץ התצורה הדיפולטי של שרת האינטרנט, שנקרא nginx.conf. הוא אמור להימצא באחת מהתיקיות הבאות:
/usr/local/nginx/conf
/etc/nginx
/usr/local/etc/nginx
ניתן גם להשתמש בפקודה זו כדי למצוא אותו:
sudo find / -type f -iname "nginx.conf"
לאחר שמצאת אותו, פתח את הקובץ עם:
sudo nano nginx.conf
העתק והדבק אחד מבלוקי השרת עבור פורט 443 שנמצאים מטה, וערוך את הנתיבים לפי בלוק השרת שלך עבור פורט 80 (עם שם שרת תואם, נתיב ל-webroot וכל ערכים חשובים אחרים). לחלופין, ניתן להעתיק את בלוק השרת של פורט 80, להדביק אותו מתחתיו, לעדכן את הפורט ולהוסיף את ההנחיות הדרושות הקשורות ל-SSL.
בחר את בלוק השרת:
מטה ניתן למצוא בלוק שרת עבור גרסת Nginx שלך.
הערה: להריץ את הפקודה הבאה לצפייה בגרסת Nginx שלך:
sudo nginx -v

הערה: החלף את ערכי שמות הקבצים, כמו ???_??????_chain.crt, בבלוק השרת עם הפרטים שלך, וערוך את הנתיבים אליהם באמצעות /path/to/.
בלוק שרת לגרסת Nginx 1.14 ומטה:
server {
listen 443;
ssl on;
ssl_certificate /path/to/certificate/???_??????_chain.crt;
ssl_certificate_key /path/to/???_private.key;
root /path/to/webroot;
server_name ???_??????.com;
}
הערה: ניתן לציין כמה שמות מארחים בתצורה כזו, במידת הצורך, למשל:
server {
listen 443;
ssl on;
ssl_certificate /path/to/certificate/???_??????_chain.crt;
ssl_certificate_key /path/to/???_private.key;
root /path/to/webroot;
server_name ???_??????.com www.???_??????.your;
}
בלוק שרת לגרסת Nginx 1.15 ומעלה:
server {
listen 443 ssl;
ssl_certificate /path/to/certificate/???_??????_chain.crt;
ssl_certificate_key /path/to/???_private.key;
root /path/to/webroot;
server_name ???_??????.com;
}
ssl_certificate צריך להיות מיועד לקובץ התעודות המשולב שיצרת קודם.
ssl_certificate_key צריך להיות מיועד למפתח הפרטי שנוצר עם קוד ה-CSR.
הנה כמה טיפים כיצד למצוא את המפתח הפרטי ב-Nginx.
חשוב: עבור תעודת Multi-?????? או Wildcard, יש להוסיף בלוק שרת נפרד עבור כל דומיין/תת-דומיין הכלול בתעודה. וודא לציין את הדומיין/תת-דומיין הרלוונטי יחד עם הנתיבים לאותם קבצי תעודה בבלוק השרת, כמתואר לעיל.
לאחר שהבלוק המתאים נוסף לקובץ, וודא לשמור את העריכות. אז ניתן לבדוק את השינויים שהוכנסו ע"י השלבים הבאים.
הרץ את הפקודה הזו כדי לוודא שסינטקס קובץ התצורה תקין:
sudo nginx -t

אם התקבלו שגיאות, בדוק שוב שהלכת לפי ההוראות כראוי. אל תהסס לפנות לצוות התמיכה שלנו אם יש לך שאלות.
הנה טיפ: כדי למצוא את יומני השגיאות לפתרון בעיות, פשוט הרץ:
sudo nginx -T | grep 'err??_log'
אם אף אחד מהקבצים שהוזכרו אינו קיים, הקבצים מקומנטים או אם לא צוין קובץ יומן שגיאות, יש לבדוק את יומן המערכת ברירת מחדל:
tail /var/log/nginx/err??.log -n 20
אם השרת מציג שההבדיקה הצליחה, הפעל מחדש את Nginx עם הפקודה הזו ליישום השינויים:
sudo nginx -s reload
עכשיו תעודת ה-SSL מותקנת. אתה יכול לבדוק את ההתקנה כאן.
הערות חשובות:
לפעמים, לאחר התקנת קובץ ה-SSL ששולב באמצעות שורת הפקודה, תקבל הודעת שגיאה 'Nginx/Apache err??: 0906D066:PEM routines:PEM_read_bio:bad end line', במקרה כזה, הפתרון נמצא במדריך ההתייחסות.
בעיה נפוצה נוספת בשלב זה היא הודעת שגיאה 'Nginx SSL: err??:0B080074:x509 certificate routines: X509_check_private_key:key values mismatch', ניתן למצוא עליה פרטים נוספים ודרכי פתרון במאמר זה.
4. הגדרת הפניית HTTPS
אנו ממליצים להתקין הפניה מ-HTTP ל-HTTPS. כך, מבקרי האתר שלך יוכלו לגשת רק לגרסה המאובטחת של האתר.
כדי לעשות זאת, יש להוסיף שורה אחת לקובץ התצורה של בלוק השרת עבור פורט 80.
טיפים:
ניתן להשתמש באחת מהפקודות הבאות כדי לחפש את קבצי התצורה שמופעלים כעת:
sudo nginx -T | grep -iw "configuration file"
sudo nginx -T | grep -iw "include"
הנתיבים הדיפולטיים לקובץ conf הם:
בלינוקס מבוסס RHEL: /etc/nginx/conf.d/default.conf
בלינוקס מבוסס Debian: /etc/nginx/sites-enabled/default
ניתן לפתוח את הקבצים כדי לבדוק מי מהם מכיל את בלוק השרת הנדרש. לשם כך, הרץ:
sudo nano name_of_the_file
כאשר תמצא את הקובץ המכיל את בלוק השרת עבור פורט 80 (פורט HTTP דיפולטי), הוסף את השורה הבאה:
return 301 https://$server_name$request_uri;
הערה: את חוק ההפניה למעלה יש להכניס כשורה האחרונה בבלוק השרת.