نحوه نصب گواهینامه SSL روی سرور ابونتو

نصب گواهینامه امنیتی SSL/TLS برای تأمین امنیت وبسایت امری ضروری است. در این آموزش نصب SSL رایگان در آپاچی و همچنین روش نصب دستی آن بر روی سیستمعامل اوبونتو (و توزیعهای مشابه مانند دبیان) میپردازیم. این دستورالعملها هم برای نصب ssl روی سرور مجازی (VPS) و هم سرویس میزبانی اختصاصی کاربرد دارد.
بخش اول: نصب دستی گواهینامه SSL پولی (روش سنتی)
این روش برای نصب گواهینامه ssl که به صورت پولی از یک مرجع صدور (CA) خریداری شده، کاربرد دارد.
تولید CSR و ذخیره فایلها
برای نصب SSL بروی سرور مجازی Ubuntu جهت استفاده در وب سرور Apache، در ابتدا شما باید فایل CSR (Certificate Signing Request) گواهینامه خود را تولید و برای مرجع صدور (Certificate Authority) ارسال نمایید تا این گواهینامه تولید شود و فایلهای CRT و یا PEM را به همراه Private Key در اختیار شما قرار دهند.
سپس باید فایلهای CRT و Private Key را در محلی امن بروی سرور خود ذخیره فرمایید (محل پیشنهادی /etc/apache2/ssl). که برای ایجاد دایرکتوری فوق میتوانید از دستور زیر استفاده کنید:
mkdir -p /etc/apache2/ssl
سپس فایلها را با دستور زیر به این دایرکتوری منتقل کنید:
mv cert.crt /etc/apache2/ssl mv cert.key /etc/apache2/ssl
پیکربندی Virtual Host آپاچی
پس از ذخیره فایلها، باید پیکربندی وب سرور آپاچی را بهروزرسانی کنید. با دستور cd به محل فایلهای Config وب سرور خود جابجا شوید:
cd /etc/apache2/sites-available
در این دایرکتوری هر فایلی نشانگر یک VirtualHost در وب سرور شما میباشد که هر کدام نشانگر یک وبسایت بروی این وب سرور میباشند. به صورت معمولا پیشفرض دو فایل زیر در وب سرور apache وجود دارد: 000-default.conf و ssl-default.conf که این دو فایل نشانگر وبسایت پیشفرض با پروتکلهای HTTP و HTTPS میباشند.
شما باید برای استفاده از SSL دریافتی خود، فایل ssl-default.conf را ادیت کنید. در صورت وجود فایلهای دیگر مثل example.conf که نشانگر وبسایتی با دامنه Example میباشد، باید جهت استفاده SSL در آن وبسایت، فایل مذکور را ادیت کنید:
vi /etc/apache2/sites-available/example.conf
برای ورود به Insert Mode در برنامه vi پس از باز شدن فایل دکمهی i را فشار دهید.
در فایل example.conf و یا ssl-default.conf اطلاعات زیر را باید وارد کنید (یا بهروزرسانی کنید). دقت کنید که پورت فایل Config وبسایتی که شما میخواهید از طریق SSL رمزنگاری شود، باید 443 باشد:
<VirtualHost *:443> DocumentRoot /var/www/html/example ServerName www.example.com SSLEngine on SSLCertificateFile /etc/apache2/ssl/cert.crt SSLCertificateKeyFile /etc/apache2/ssl/cert.key #در صورت داشتن فایل زنجیره (سی ای باندل)،هشتگ ابتدای خط را حذف کرده و مسیر آن را تصحیح کنید: #SSLCertificateChainFile /etc/apache2/ssl/ca_bundle.crt </VirtualHost>
پس از ایجاد تغییرات برای ذخیره و خروج، دکمهی esc را فشار دهید و سپس :wq را تایپ کنید.
*:443: نشانگر Interface ای است که شما میخواهید بروی آن سرویس وب ارائه دهید.DocumentRoot: نشانگر مسیر فایلها و کدهای وبسایت شما میباشد.ServerName: نام کامل وبسایت شما.SSLEngine: وضعیت استفاده از SSL.SSLCertificateFile: مسیر فایلcert.crt.SSLCertificateKeyFile: مسیر فایلPrivate Key.
توجه فرمایید که این دستورات باید بین <VirtualHost *:443> و </VirtualHost> قرار گیرند.
فعالسازی و راهاندازی مجدد
پس از تغییر فایلهای Config جهت فعالسازی SSL بروی Apache، از دستور زیر استفاده کنید:
a2enmod ssl
سپس Virtual Host جدید یا بهروز شده را فعال کنید:
a2ensite example.com.conf
حالا پیکربندی را بررسی کنید:
apache2ctl configtest
و در نهایت سرویس Apache را مجددا راهاندازی کنید:
systemctl restart apache2
حالا شما میتوانید از طریق پروتکل HTTPS وبسایت خود را بررسی نمایید: https://example.com
بخش دوم: نصب SSL رایگان با Certbot
امروزه بهترین روش نصب ssl رایگان در آپاچی و انجینکس، استفاده از Certbot است که گواهینامههای Let's Encrypt را به صورت خودکار نصب و تمدید میکند.
نصب Certbot در اوبونتو
ابتدا Certbot را بر روی سیستمعامل اوبونتو نصب کنید.
sudo apt update sudo apt install certbot python3-certbot-apache
نصب SSL رایگان در آپاچی
با اجرای دستور زیر، Certbot به صورت خودکار گواهینامه را دریافت، نصب و پیکربندیهای لازم را در Virtual Host آپاچی اعمال میکند:
sudo certbot --apache -d yourdomain.com -d www.yourdomain.com
نصب SSL در انجینکس (Nginx)
برای نصب ssl رایگان روی nginx در دبیان یا اوبونتو، ابتدا پلاگین انجینکس را نصب کنید:
sudo apt install python3-certbot-nginx
سپس دستور زیر را اجرا کنید. Certbot به صورت خودکار Server Block انجینکس را ویرایش میکند:
sudo certbot --nginx -d yourdomain.com -d
بخش سوم: گواهی SSL لوکال هاست و انواع خطا
ساخت SSL در localhost برای توسعه
برای محیطهای توسعه، نیازی به نصب گواهینامه SSL معتبر ندارید. میتوانید با استفاده از OpenSSL یک گواهی ssl لوکال هاست (Self-Signed) برای ایجاد ssl در لوکال بسازید.
با استفاده از دستور زیر میتوانید یک گواهینامه خودامضا برای ساخت ssl در localhost تولید کنید:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout localhost.key -out localhost.crt
پس از تولید فایلهای localhost.key و localhost.crt، آنها را مانند روشهای دستی فوق در پیکربندی وب سرور خود وارد کنید.
انواع خطای SSL متداول
پس از نصب گواهینامه ssl ممکن است با انواع خطای ssl مواجه شوید. برخی از متداولترین آنها عبارتند از:
- NET::ERR_CERT_DATE_INVALID: تاریخ انقضای گواهینامه گذشته است. این تاثیر ممکن است به دلیل عدم تنظیم تمدید خودکار (برای Let's Encrypt) یا فراموشی تمدید باشد.
- NET::ERR_CERT_AUTHORITY_INVALID: مرورگر به مرجع صادرکننده گواهینامه اعتماد ندارد. این معمولا در گواهینامههای خودامضا (Localhost) یا در صورتی که فایل
CA Bundleبه درستی نصب نشده باشد، رخ میدهد. - SSL Handshake Failed: سرور و مرورگر نمیتوانند بر سر یک پروتکل رمزنگاری (مانند TLS 1.2 یا 1.3) به توافق برسند. این عملا به این معنی است که تنظیمات امنیتی سرور شما قدیمی است. این مورد در هنگام خرید سرویسهای میزبانی اختصاصی و عدم آپدیت آنها رخ میدهد و صرفا با یک آپدیت سیستم عامل و نرمافزارهای سرور، مشکل مرتفع میگردد.
- Mixed Content: این خطا امنیتی نیست، اما نشان میدهد که وبسایت شما با وجود استفاده از HTTPS، هنوز برخی منابع (تصاویر، CSS و…) را از طریق HTTP بارگذاری میکند که باید به HTTPS تغییر داده شوند.
Certbot: ابزار تمدید و نصب گواهینامه رایگان
امروزه، روشهای سنتی دریافت و نصب گواهینامههای SSL پولی جای خود را به ابزارهای خودکار و گواهینامههای رایگان دادهاند. Certbot یک ابزار بسیار کاربردی است که توسط بنیاد EFF توسعه یافته و به شما امکان میدهد گواهینامههای رایگان Let's Encrypt را به صورت خودکار دریافت، نصب و تمدید کنید. این روش نه تنها هزینهها را حذف میکند، بلکه فرآیند تمدید گواهینامه را نیز سادهتر میسازد و از خطای انقضای ناگهانی جلوگیری میکند. این ابزار از پلاگینهای خاصی برای وب سرورهای مختلف مانند آپاچی و انجینکس استفاده میکند تا تنظیمات پیکربندی لازم برای فعالسازی HTTPS را به صورت هوشمند اعمال کند.
اهمیت HTTPS و برخورد با خطاهای امنیتی
فعالسازی HTTPS با نصب گواهینامه امنیتی SSL/TLS یک ضرورت امنیتی است، اما تاثیر مهمی در اعتبار وبسایت در نزد کاربران و موتورهای جستجو دارد. مرورگرهای مدرن هنگام اتصال به سایتهایی که فاقد SSL هستند، هشدار «Not Secure» نمایش میدهند که میتواند باعث کاهش اعتماد کاربران شود. پس از نصب، ممکن است با خطاهای امنیتی مانند خطای انقضای تاریخ (Date Invalid) یا خطای زنجیره اعتماد (Authority Invalid) روبرو شوید. معمولا خطاهای مربوط به زنجیره اعتماد به دلیل نصب نکردن فایلهای واسط (CA Bundle) رخ میدهند، در حالی که خطاهای تاریخ نشان میدهند که گواهینامه منقضی شده و نیاز به تمدید دارد.
SSL خودامضا برای محیطهای توسعه (Localhost)
برای توسعهدهندگانی که نیاز دارند اپلیکیشنهای خود را قبل از استقرار بر روی سرور، در محیط محلی با HTTPS تست کنند، نیازی به نصب گواهینامه SSL معتبر و پولی نیست. در این شرایط، میتوان از گواهینامههای خودامضا (Self-Signed) برای محیط لوکال استفاده کرد. این گواهینامهها توسط خود شما صادر میشوند و اگرچه مرورگرها به آنها اعتماد نمیکنند و هشدار امنیتی نمایش میدهند، اما به شما این امکان را میدهند که محیط توسعه خود را شبیهسازی کنید. استفاده از ابزارهایی مانند OpenSSL فرآیند ایجاد کلید خصوصی و عمومی مورد نیاز را تسهیل میکند تا بتوانید به سرعت فایلهای مورد نیاز را تولید و در پیکربندی لوکال هاست خود وارد کنید.
سوالات متداول
بله، Certbot یک ابزار ایدهآل برای نصب SSL روی سرور مجازی (VPS) و سرویس میزبانی اختصاصی است، به شرطی که شما دسترسی سطح روت (Root) یا امتیاز sudo برای نصب نرمافزار و تغییر پیکربندیهای وب سرور (آپاچی یا انجینکس) را داشته باشید.
Certbot فرآیند تمدید را به صورت کاملاً خودکار انجام میدهد. هنگام نصب، Certbot یک Cron Job یا یک تایمر Systemd را در سرور شما (معمولا اوبونتو) تنظیم میکند که به صورت دورهای اجرا شده و بررسی میکند که آیا گواهینامههای شما در شرف انقضا هستند یا خیر. گواهینامههای Let’s Encrypt هر ۹۰ روز یکبار صادر میشوند و Certbot قبل از انقضا (مثلا ۳۰ روز مانده به انقضا) آنها را تمدید میکند.
بله، پورت 443 استاندارد جهانی برای ترافیک رمزنگاری شده HTTPS است. برای اینکه مرورگرها بتوانند به صورت امن به وبسایت شما متصل شوند، باید Virtual Host (در آپاچی) یا Server Block (در انجینکس) شما برای گوش دادن به پورت ۴۴۳ پیکربندی شده باشد.
اگر از پنلهای مدیریتی مانند cPanel یا Plesk استفاده میکنید، معمولا این پنلها دارای رابط کاربری و ابزارهای خودکار داخلی برای نصب گواهینامههای SSL (از جمله Let’s Encrypt) هستند. در این حالت، بهتر است از طریق رابط پنل مدیریتی اقدام کنید و نه از طریق خط فرمان، زیرا پنل مدیریتی تمام پیکربندیها را به صورت خودکار مدیریت میکند.



























شما میتوانید دیدگاه خود را در مورد این مطلب با ما با اشتراک بگذارید.