خلاصه مطلب (TL;DR)
- گواهینامه SSL چیست؟ پروتکل امنیتی که ارتباط بین مرورگر کاربر و سرور را رمزگذاری میکند و اطلاعات حساس را محافظت میکند.
- مراحل اصلی نصب: ایجاد کلید خصوصی (Private Key)، تولید فایل CSR، خرید گواهینامه، پیکربندی Apache، فعالسازی HTTPS.
- پیشنیازها: دسترسی SSH به سرور، نصب OpenSSL، Apache با mod_ssl، دامنه فعال.
- زمان تقریبی: ۱۵ تا ۳۰ دقیقه (بدون احتساب زمان صدور گواهینامه).
امروزه داشتن گواهینامه SSL برای هر وبسایتی ضروری است. گوگل از سال ۲۰۱۴ استفاده از HTTPS را به عنوان یک سیگنال رتبهبندی در نظر گرفته و مرورگرهای مدرن سایتهای بدون SSL را به عنوان «ناامن» نشان میدهند. در این راهنمای جامع، نحوه ایجاد فایل CSR و نصب گواهینامه SSL در سرور آپاچی را قدم به قدم آموزش میدهیم.
اگر به دنبال خرید گواهینامه SSL معتبر با قیمت مناسب هستید، میتوانید از سرویس SSL برتینا استفاده کنید که شامل انواع گواهینامههای DV، OV و EV میشود.
از تجربه ما: تیم فنی برتینا سالانه صدها گواهینامه SSL را برای مشتریان هاست، سرور مجازی و سرور اختصاصی نصب و پیکربندی میکند. این راهنما بر اساس بهترین شیوههای امنیتی ۲۰۲۵-۲۰۲۶ و تجربه عملی ما تهیه شده است.
انواع گواهینامه SSL و تفاوتهای آنها
قبل از شروع نصب، مهم است که نوع مناسب گواهینامه را انتخاب کنید. در جدول زیر تفاوتهای اصلی انواع گواهینامه SSL را مشاهده میکنید:
| ویژگی | DV (Domain Validation) | OV (Organization Validation) | EV (Extended Validation) |
|---|---|---|---|
| سطح اعتبارسنجی | فقط دامنه | دامنه + سازمان | دامنه + سازمان + بررسی گسترده |
| زمان صدور | چند دقیقه | ۱ تا ۳ روز | ۵ تا ۱۵ روز |
| قیمت تقریبی | رایگان تا ۵۰ دلار | ۵۰ تا ۲۰۰ دلار | ۲۰۰ تا ۷۰۰ دلار |
| مناسب برای | بلاگ، سایت شخصی | کسبوکارها، SMB | بانکها، فروشگاههای بزرگ |
| نمایش اطلاعات سازمان | خیر | بله | بله (کامل) |
| پشتیبانی از Wildcard | بله | بله | خیر |
پیشنیازهای نصب گواهینامه SSL در آپاچی
قبل از شروع، مطمئن شوید که پیشنیازهای زیر را دارید:
- دسترسی SSH به سرور: برای اجرای دستورات به دسترسی root یا sudo نیاز دارید. اگر سرور مجازی یا سرور اختصاصی دارید، این دسترسی را خواهید داشت.
- Apache نسخه ۲.۴.۳۷ یا بالاتر: برای پشتیبانی از TLS 1.3 به این نسخه یا جدیدتر نیاز دارید.
- OpenSSL نسخه ۱.۱.۱ یا بالاتر: برای پشتیبانی کامل از TLS 1.3 ضروری است.
- ماژول mod_ssl: باید روی آپاچی فعال باشد.
- دامنه فعال: دامنه باید به IP سرور شما اشاره کند.
برای بررسی نسخههای نصب شده، دستورات زیر را اجرا کنید:
# بررسی نسخه Apache
apache2 -v
# بررسی نسخه OpenSSL
openssl version
# بررسی فعال بودن mod_ssl
apache2ctl -M | grep ssl
مرحله اول: ایجاد کلید خصوصی و فایل CSR
CSR (Certificate Signing Request) فایلی است که اطلاعات دامنه و سازمان شما را شامل میشود و برای درخواست گواهینامه SSL به مرجع صدور (CA) ارسال میشود.
گام ۱: اتصال به سرور از طریق SSH
با استفاده از ترمینال یا نرمافزار SSH Client به سرور متصل شوید:
ssh root@your-server-ip
گام ۲: ایجاد دایرکتوری برای ذخیره فایلها
بهتر است فایلهای SSL را در یک مسیر مشخص نگهداری کنید:
sudo mkdir -p /etc/ssl/private
sudo mkdir -p /etc/ssl/certs
sudo chmod 700 /etc/ssl/private
گام ۳: تولید کلید خصوصی و CSR
دستور زیر یک کلید خصوصی ۲۰۴۸ بیتی و فایل CSR را به صورت همزمان ایجاد میکند:
openssl req -new -newkey rsa:2048 -nodes -sha256 \
-keyout /etc/ssl/private/yourdomain.key \
-out /etc/ssl/certs/yourdomain.csr
نکته امنیتی: برای امنیت بیشتر میتوانید از کلید ۴۰۹۶ بیتی استفاده کنید. کافی است rsa:2048 را به rsa:4096 تغییر دهید.
گام ۴: وارد کردن اطلاعات
پس از اجرای دستور، سوالاتی از شما پرسیده میشود. به ترتیب زیر پاسخ دهید:
| فیلد | توضیح | نمونه |
|---|---|---|
| Country Name (C) | کد دو حرفی کشور | IR |
| State (ST) | استان | Tehran |
| Locality (L) | شهر | Tehran |
| Organization (O) | نام سازمان | My Company Ltd |
| Organizational Unit (OU) | بخش (اختیاری) | IT Department |
| Common Name (CN) | نام دامنه (FQDN) | www.example.com |
| Email Address | ایمیل مدیر | admin@example.com |
توجه برای Wildcard SSL: اگر میخواهید گواهینامه Wildcard بگیرید (برای همه زیردامنهها)، در فیلد Common Name باید از ستاره استفاده کنید. مثال: *.example.com
گام ۵: بررسی محتوای CSR
برای اطمینان از صحت اطلاعات، محتوای CSR را بررسی کنید:
openssl req -text -noout -verify -in /etc/ssl/certs/yourdomain.csr
مرحله دوم: خرید و دریافت گواهینامه SSL
گام ۱: کپی محتوای CSR
محتوای فایل CSR را مشاهده و کپی کنید:
cat /etc/ssl/certs/yourdomain.csr
خروجی شبیه زیر خواهد بود:
-----BEGIN CERTIFICATE REQUEST-----
MIICvDCCAaQCAQAwdzELMAkGA1UEBhMCSVIxDjAMBgNVBAgMBVRlaHJhbjEOMAwG
...
-----END CERTIFICATE REQUEST-----
گام ۲: سفارش گواهینامه
محتوای کامل CSR (شامل خطوط BEGIN و END) را در فرم سفارش گواهینامه وارد کنید. پس از تایید، فایلهای زیر را دریافت خواهید کرد:
- yourdomain.crt: گواهینامه اصلی
- ca-bundle.crt: زنجیره گواهینامههای میانی (Intermediate CA)
مرحله سوم: نصب و پیکربندی گواهینامه در آپاچی
گام ۱: آپلود فایلهای گواهینامه
فایلهای دریافتی را در سرور آپلود کنید:
# آپلود فایلها با SCP
scp yourdomain.crt root@your-server-ip:/etc/ssl/certs/
scp ca-bundle.crt root@your-server-ip:/etc/ssl/certs/
گام ۲: فعالسازی mod_ssl
اگر ماژول SSL فعال نیست، آن را فعال کنید:
# در Ubuntu/Debian
sudo a2enmod ssl
# در CentOS/RHEL
sudo yum install mod_ssl
گام ۳: ایجاد یا ویرایش VirtualHost برای SSL
فایل پیکربندی سایت را ویرایش کنید:
sudo nano /etc/apache2/sites-available/yourdomain-ssl.conf
محتوای زیر را وارد کنید (تنظیمات بهینه برای TLS 1.2 و TLS 1.3):
<VirtualHost *:443>
ServerName www.yourdomain.com
ServerAlias yourdomain.com
DocumentRoot /var/www/yourdomain/public_html
# SSL Configuration
SSLEngine on
SSLCertificateFile /etc/ssl/certs/yourdomain.crt
SSLCertificateKeyFile /etc/ssl/private/yourdomain.key
SSLCertificateChainFile /etc/ssl/certs/ca-bundle.crt
# Modern SSL Settings (TLS 1.2 & TLS 1.3 only)
SSLProtocol -all +TLSv1.2 +TLSv1.3
SSLCipherSuite ECDHE+AESGCM:ECDHE+CHACHA20:DHE+AESGCM:DHE+CHACHA20:!aNULL:!MD5:!DSS
SSLHonorCipherOrder on
# OCSP Stapling
SSLUseStapling on
# Security Headers
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
# Logging
ErrorLog ${APACHE_LOG_DIR}/yourdomain_ssl_error.log
CustomLog ${APACHE_LOG_DIR}/yourdomain_ssl_access.log combined
</VirtualHost>
# OCSP Stapling Cache (outside VirtualHost)
SSLStaplingCache shmcb:logs/stapling_cache(150000)
گام ۴: فعالسازی سایت و ماژولهای مورد نیاز
# فعالسازی ماژول headers
sudo a2enmod headers
# فعالسازی سایت SSL
sudo a2ensite yourdomain-ssl.conf
گام ۵: ریدایرکت HTTP به HTTPS
برای اینکه تمام ترافیک HTTP به HTTPS هدایت شود، VirtualHost پورت ۸۰ را ویرایش کنید:
<VirtualHost *:80>
ServerName www.yourdomain.com
ServerAlias yourdomain.com
# Redirect all HTTP to HTTPS
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}$1 [R=301,L]
</VirtualHost>
ماژول Rewrite را فعال کنید:
sudo a2enmod rewrite
گام ۶: تست پیکربندی و ریاستارت آپاچی
قبل از ریاستارت، پیکربندی را تست کنید:
# تست پیکربندی
sudo apachectl configtest
# اگر Syntax OK بود، ریاستارت کنید
sudo systemctl restart apache2
# یا در CentOS/RHEL
sudo systemctl restart httpd
مهم: اگر خطایی در تست پیکربندی مشاهده کردید، آن را برطرف کنید. ریاستارت کردن با پیکربندی نادرست باعث از کار افتادن سرویس میشود!
روش جایگزین: نصب SSL رایگان با Let's Encrypt
اگر به گواهینامه DV رایگان نیاز دارید، میتوانید از Let's Encrypt استفاده کنید. Certbot تمام مراحل را به صورت خودکار انجام میدهد:
نصب Certbot
# Ubuntu/Debian
sudo apt update
sudo apt install certbot python3-certbot-apache
# CentOS/RHEL
sudo dnf install certbot python3-certbot-apache
دریافت و نصب خودکار گواهینامه
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
تنظیم تمدید خودکار
گواهینامههای Let's Encrypt هر ۹۰ روز منقضی میشوند. Certbot به صورت خودکار یک کرونجاب ایجاد میکند:
# تست تمدید خودکار
sudo certbot renew --dry-run
# بررسی وضعیت تایمر
sudo systemctl status certbot.timer
تست و اعتبارسنجی گواهینامه SSL
تست از طریق مرورگر
آدرس https://yourdomain.com را در مرورگر باز کنید و روی آیکون قفل کلیک کنید تا اطلاعات گواهینامه را ببینید.
تست از طریق خط فرمان
# بررسی اتصال SSL
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com
# بررسی تاریخ انقضا
echo | openssl s_client -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -dates
تست آنلاین با SSL Labs
برای بررسی جامع پیکربندی SSL، از ابزار رایگان SSL Labs Server Test استفاده کنید. با پیکربندی پیشنهادی این راهنما، باید امتیاز A یا A+ دریافت کنید.
عیبیابی مشکلات رایج SSL در آپاچی
| خطا | علت احتمالی | راهحل |
|---|---|---|
| ERR_SSL_PROTOCOL_ERROR | mod_ssl فعال نیست | a2enmod ssl و ریاستارت |
| Certificate Mismatch | دامنه در گواهینامه با URL متفاوت است | CSR جدید با دامنه صحیح بسازید |
| Certificate Chain Incomplete | CA Bundle تنظیم نشده | SSLCertificateChainFile را اضافه کنید |
| Permission Denied | دسترسی فایل کلید خصوصی | chmod 600 و مالکیت root |
| Port 443 in Use | سرویس دیگری پورت را گرفته | netstat -tlnp | grep 443 |
سوالات متداول درباره نصب SSL در آپاچی
تفاوت کلید خصوصی (Private Key) و CSR چیست؟
کلید خصوصی (Private Key) یک فایل محرمانه است که برای رمزگشایی اطلاعات استفاده میشود و هرگز نباید به اشتراک گذاشته شود. CSR (Certificate Signing Request) یک فایل حاوی اطلاعات عمومی دامنه و سازمان است که به مرجع صدور گواهینامه ارسال میشود. CSR با استفاده از کلید خصوصی امضا میشود اما خود کلید را شامل نمیشود.
آیا باید هر سال CSR جدید بسازم؟
خیر، لزوماً نیازی به ساخت CSR جدید نیست. اگر کلید خصوصی قبلی را دارید و اطلاعات سازمان تغییر نکرده، میتوانید از همان CSR برای تمدید استفاده کنید. با این حال، به دلایل امنیتی توصیه میشود هر ۲ تا ۳ سال یک بار کلید خصوصی جدید تولید کنید.
چرا باید TLS 1.3 استفاده کنم؟
TLS 1.3 جدیدترین و امنترین نسخه پروتکل امنیتی است که در سال ۲۰۱۸ منتشر شد. این نسخه سریعتر است (یک Handshake کمتر)، الگوریتمهای قدیمی و ناامن را حذف کرده، و Perfect Forward Secrecy را اجباری کرده است. تمام مرورگرهای مدرن از TLS 1.3 پشتیبانی میکنند.
گواهینامه Let's Encrypt چه محدودیتهایی دارد؟
Let's Encrypt فقط گواهینامه DV (Domain Validation) ارائه میدهد و برای گواهینامههای OV یا EV مناسب نیست. همچنین گواهینامهها هر ۹۰ روز منقضی میشوند و نیاز به تمدید خودکار دارند. برای سازمانهایی که به اعتبارسنجی سازمانی یا نمایش نام شرکت در گواهینامه نیاز دارند، باید از گواهینامههای OV یا EV خریداری شده استفاده کنند.
اگر کلید خصوصی را گم کنم چه کنم؟
اگر کلید خصوصی گم شود، گواهینامه صادر شده دیگر قابل استفاده نیست. باید کلید خصوصی و CSR جدید بسازید و گواهینامه را مجدداً صادر کنید (Reissue). بیشتر مراجع صدور گواهینامه این کار را به صورت رایگان انجام میدهند. همیشه از کلید خصوصی نسخه پشتیبان در مکانی امن نگهداری کنید.
OCSP Stapling چیست و چرا مهم است؟
OCSP Stapling روشی است که سرور به جای مرورگر کاربر، وضعیت ابطال گواهینامه را از مرجع صدور دریافت و به مرورگر ارائه میکند. این کار باعث میشود اتصال سریعتر برقرار شود (یک درخواست کمتر)، حریم خصوصی کاربر حفظ شود (IP کاربر به CA ارسال نمیشود)، و قابلیت اطمینان بالاتر برود (اگر OCSP سرور CA در دسترس نباشد).
نیاز به کمک در نصب SSL دارید؟
اگر در نصب گواهینامه SSL با مشکل مواجه شدید یا ترجیح میدهید این کار توسط متخصصین انجام شود، میتوانید از خدمات برتینا استفاده کنید:
- گواهینامه SSL برتینا: خرید انواع گواهینامه DV، OV و EV با قیمت مناسب و پشتیبانی رایگان نصب
- هاست لینوکس برتینا: نصب SSL رایگان با یک کلیک از طریق کنترل پنل
- سرور مجازی (VPS): با دسترسی root برای کنترل کامل پیکربندی SSL
- سرور اختصاصی: برای پروژههای بزرگ با نیازهای امنیتی بالا
تیم پشتیبانی فنی برتینا ۲۴ ساعته آماده کمک به شما در نصب و پیکربندی SSL است.



