جشنواره پايیزی آرانیک 15٪ تخفیف محصولات سرور مجازی کد تخفیف: N5U91RC9YR
ارتباط با ما
تهران، خیابان شیراز جنوبی، نبش کوچه یاس، پلاک 23 ، طبقه 3
88057080 - 021
aranik@aranik.net
راه اندازی SSL در لینوکس با وبسرور های Apache/Nginx
آموزش راه اندازی SSL (رایگان و خریداری شده) در لینوکس با وبسرور های Apache/Nginx
سرورها با استفاده از این فناوری میتوانند ترافیک امنی را بین خود و کلاینتهایشان برقرار کنند. سیستم گواهیSSL نیز به کاربران کمک میکند که هویت سایتی که به آن وصل شدهاند را تأیید کنند.
در این راهنما روش راه اندازی یک SSL به صورت رایگان و همچنین خریداری شده را برای استفاده از وبسرور Nginx و Apache روی سرور Ubuntu توضیح میدهیم.
پیشنیازها:
– دامنه ای که می خواهید مجوز SSL را روی آن نصب کنید به IP سرور شما متصل شده باشد.
– برای راه اندازی SSL تجاری ابتدا میبایست فایل مربوط به گواهی از پیش خریداری شده باشد. ایجاد فایل CSR
- گواهی رایگان
1- نصب Certbot
Certbot می تواند به طور خودکار گواهی را بر روی سرورهای وب nginx و Apache نصب کند. برای انجام این کار، باید یک بسته اضافی نصب کنید و بسته مناسب را برای وب سرور خود انتخاب کنید.
در Debian/Ubuntu:
sudo apt update
برای Apache :
sudo apt install certbot python3-certbot-apache
برای Nginx :
sudo apt install certbot python3-certbot-nginx
در CentOS/RHEL:
sudo yum install epel-release
برای Apache :
sudo yum install certbot python3-certbot-apache
برای Nginx :
sudo yum install certbot python3-certbot-nginx
2- دریافت و نصب گواهینامه SSL
Certbot به صورت خودکار پیکربندی Apache را انجام میدهد و گواهینامههای SSL را برای دامنه شما فعال میکند.
برای Apache :
sudo certbot –apache
برای Nginx :
sudo certbot –nginx
3- تنظیم خودکار تمدید گواهینامه
Let’s Encrypt گواهینامههای SSL را برای 90 روز صادر میکند، بنابراین باید تمدید خودکار آن را تنظیم کنید.یک کرون جاب برای Certbot اضافه کنید که هر روز اجرا شود.
برای Apache :
sudo crontab -e
سپس خط زیر را اضافه کرده و فایل را ذخیره کنید.
0 0 * * * /usr/bin/certbot renew –quiet
برای اطمینان از اینکه تمدید به درستی کار میکند، میتوانید آن را به صورت دستی تست کنید:
sudo certbot renew –dry-run
- گواهی از پیش خریداری شده
معمولاً شما سه فایل برای تنظیم نیاز دارید. البته لازم به ذکر است که در اکثر اوقات میتوان به دو فایل اول بسنده کرد.
• کلید خصوصی (private key): این فایل را هنگام ایجاد CSR (درخواست گواهی) دریافت کردهاید. معمولاً با پسوند .key.
• گواهینامه SSL (certificate): این فایل از ارائهدهنده گواهی به شما داده شده است و معمولاً با پسوند .crt یا .cer.
• فایل زنجیرهای (chain) یا CA bundle: این فایل حاوی گواهینامههای میانی است و ممکن است توسط ارائهدهنده SSL به شما داده شود. معمولاً با پسوند .crt یا .pem.
پیکربندی در Apache
1- انتقال فایلهای SSL
ابتدا فایلهای کلید خصوصی، گواهینامه و زنجیره را به مسیر سرور (به عنوان مثال /etc/ssl/) کپی کنید:
sudo cp your_domain.key /etc/ssl/private/
sudo cp your_domain.crt /etc/ssl/certs/
sudo cp your_domain_chain.crt /etc/ssl/certs/
2- پیکربندی Virtual Host
فایل پیکربندی Virtual Host مربوط به دامنه خود را ویرایش کنید. معمولاً این فایل در مسیر /etc/apache2/sites-available/ در Debian/Ubuntu و در مسیر /etc/httpd/conf.d/ در CentOS/RHEL قرار دارد.
یک Virtual Host برای پورت 443 (HTTPS) به شکل زیر تنظیم کنید:
ServerName your_domain.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/your_domain.crt
SSLCertificateKeyFile /etc/ssl/private/your_domain.key
SSLCertificateChainFile /etc/ssl/certs/your_domain_chain.crt
AllowOverride All
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
3- فعال کردن SSL
برای فعالسازی SSL در Apache باید ماژول SSL را فعال کنید:
sudo a2enmod ssl
سپس Virtual Host مربوط به SSL را فعال کنید:
sudo a2ensite your_domain-ssl.conf
4- راهاندازی مجدد Apache
برای فعالسازی SSL در Apache باید ماژول SSL را فعال کنید:
sudo systemctl restart apache2
پیکربندی در Nginx
1- انتقال فایلهای SSL
ابتدا فایلهای کلید خصوصی، گواهینامه و زنجیره را به مسیر سرور (به عنوان مثال /etc/ssl/) کپی کنید:
sudo cp your_domain.key /etc/ssl/private/
sudo cp your_domain.crt /etc/ssl/certs/
sudo cp your_domain_chain.crt /etc/ssl/certs/
2- پیکربندی Virtual Host در Nginx
فایل پیکربندی دامنه خود را که معمولاً در مسیر /etc/nginx/sites-available/ قرار دارد ویرایش کنید.
تنظیمات SSL را به فایل اضافه کنید:
server {
listen 443 ssl;
server_name your_domain.com;
ssl_certificate /etc/nginx/ssl/your_domain.crt;
ssl_certificate_key /etc/nginx/ssl/your_domain.key;
ssl_trusted_certificate /etc/nginx/ssl/your_domain_chain.crt;
root /var/www/html;
location / {
try_files $uri $uri/ =404;
}
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
}
3- راهاندازی مجدد Nginx
sudo systemctl restart nginx
نکات نهایی:
فایلهای کلید خصوصی را به طور ایمن نگهدارید و اطمینان حاصل کنید که فقط کاربرانی که نیاز دارند به آن دسترسی داشته باشند.
در صورت هر گونه مشکل در راهاندازی، لاگهای وبسرور خود (مانند /var/log/apache2/error.log یا /var/log/nginx/error.log) را بررسی کنید.