آموزش ساخت گواهی SSL خودامضا (Self-Signed) برای وب‌سرور Apache روی سیستم‌عامل Rocky Linux 9 / AlmaLinux 9

مقدمه

پروتکل TLS (Transport Layer Security) و نسخه قدیمی‌تر آن یعنی SSL، برای رمزنگاری و امن‌سازی ترافیک معمولی وب استفاده می‌شوند. با استفاده از این فناوری، سرورها می‌توانند داده‌ها را به صورت امن و بدون خطر شنود یا دستکاری توسط افراد ثالث به کلاینت‌ها ارسال کنند.

در این راهنما از وبلاگ پارمین کلود، نحوه ساخت و پیکربندی یک گواهی SSL خودامضا (Self-Signed) را برای وب‌سرور Apache روی سیستم‌عامل Rocky Linux 9 (یا AlmaLinux 9) بررسی خواهیم کرد.

نکته بسیار مهم: گواهی خودامضا، ارتباط بین سرور و کاربر را به طور کامل رمزنگاری می‌کند؛ اما چون توسط صادرکنندگان معتبر SSL (مانند Let’s Encrypt یا DigiCert) تأیید نشده است، مرورگرها هویت سرور شما را به طور خودکار تأیید نمی‌کنند و به کاربر خطای هشدار امنیتی (Security Warning) نشان می‌دهند.

به همین دلیل، گواهی‌های خودامضا برای محیط‌های عملیاتی (Production) عمومی مناسب نیستند و بیشتر برای پروژه‌های تست، محیط‌های توسعه، یا سرویس‌های داخلی شرکت‌ها استفاده می‌شوند. اگر قصد دارید وب‌سایت عمومی راه‌اندازی کنید، پیشنهاد می‌کنیم از گواهی‌های رایگان Let’s Encrypt استفاده نمایید.

پیش‌نیازها

قبل از شروع این آموزش، به موارد زیر نیاز دارید:

  • یک سرور با سیستم‌عامل Rocky Linux 9 یا AlmaLinux 9 (می‌توانید سرور ابری خود را در پارمین کلود تحویل بگیرید).

  • دسترسی به یک کاربر غیر Root با دسترسی‌های sudo.

  • نصب بودن وب‌سرور Apache (httpd).

برای نصب Apache و فعال‌سازی آن کافیست دستورات زیر را اجرا کنید:

Bash

sudo dnf install httpd -y
sudo systemctl enable --now httpd

در صورتی که فایروال (firewalld) روی سرور فعال است، پورت‌های HTTP و HTTPS را باز کنید:

Bash

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

گام اول — نصب ماژول mod_ssl

برای پشتیبانی وب‌سرور Apache از رمزنگاری SSL، ابتدا باید ماژول mod_ssl را نصب کنیم. این کار با مدیر پکیج dnf انجام می‌شود:

Bash

sudo dnf install mod_ssl -y

پس از نصب، یک‌بار وب‌سرور را ری‌استارت کنید تا کلیدها و تنظیمات اولیه SSL به‌درستی بارگذاری شوند:

Bash

sudo systemctl restart httpd

اکنون ماژول mod_ssl فعال و آماده استفاده است.

گام دوم — ساخت گواهی SSL خودامضا

حال که وب‌سرور آماده رمزنگاری است، گواهی جدید را تولید می‌کنیم. این گواهی شامل اطلاعات پایه وب‌سایت شماست و همراه یک کلید خصوصی (Private Key) ساخته می‌شود.

دستور زیر را جهت ساخت کلید و گواهی SSL در ابزار OpenSSL وارد کنید:

Bash

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/apache-selfsigned.key -out /etc/pki/tls/certs/apache-selfsigned.crt

توضیحات پارامترهای دستور:

  • openssl: ابزار اصلی مدیریت کلیدها و گواهی‌های OpenSSL.

  • req -x509: مشخص می‌کند که قصد داریم از استاندارد مدیریت گواهی X.509 استفاده کنیم.

  • -nodes: با این گزینه، رمزگذاری روی فایل کلید خصوصی غیرفعال می‌شود تا Apache بتواند هنگام روشن شدن سرور، بدون نیاز به وارد کردن کلمه عبور توسط کاربر، فایل را بخواند.

  • -days 365: مدت زمان اعتبار گواهی به روز (در اینجا یک سال).

  • -newkey rsa:2048: ساخت هم‌زمان یک کلید جدید RSA با طول ۲۰۴۸ بیت.

  • -keyout: مسیر ذخیره‌سازی فایل کلید خصوصی (Private Key).

  • -out: مسیر ذخیره‌سازی فایل گواهی اصلی (Certificate).

پس از اجرای دستور، سوالاتی از شما پرسیده می‌شود. مهم‌ترین بخش، گزینه Common Name است که باید آدرس آی‌پی (IP) سرور یا نام دامنه خود را در آن وارد کنید:

Plaintext

Country Name (2 letter code) [XX]:IR
State or Province Name (full name) []:Tehran
Locality Name (eg, city) [Default City]:Tehran
Organization Name (eg, company) [Default Company Ltd]:Parmin Cloud
Organizational Unit Name (eg, section) []:IT
Common Name (eg, your name or your server's hostname) []:your_domain_or_ip
Email Address []:admin@example.com

فایل‌های ساخته‌شده در مسیر /etc/pki/tls که مسیر استاندارد توزیع‌های مبتنی بر RedHat است قرار می‌گیرند.

گام سوم — تنظیم وب‌سرور Apache برای استفاده از SSL

در این مرحله، فایل کانفیگ اختصاصی برای استفاده از گواهی SSL می‌سازیم. تمام فایل‌های کانفیگ جدید با پسوند .conf باید در مسیر /etc/httpd/conf.d/ قرار گیرند.

یک فایل جدید با ویرایشگر متن ایجاد کنید:

Bash

sudo nano /etc/httpd/conf.d/your_domain_or_ip.conf

محتوای زیر را داخل فایل قرار دهید (آدرس ServerName را با دامنه یا IP سرور خود جایگزین کنید):

Apache

<VirtualHost *:443>
    ServerName your_domain_or_ip
    DocumentRoot /var/www/ssl-test
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/apache-selfsigned.crt
    SSLCertificateKeyFile /etc/pki/tls/private/apache-selfsigned.key
</VirtualHost>

سپس دایرکتوری سند و یک فایل نمونه برای تست ایجاد می‌کنیم:

Bash

sudo mkdir -p /var/www/ssl-test
echo "<h1>پیکربندی SSL در پارمین کلود با موفقیت انجام شد!</h1>" | sudo tee /var/www/ssl-test/index.html

تست صحت دستورات و کانفیگ Apache:

Bash

sudo apachectl configtest

اگر خروجی شامل Syntax OK بود، وب‌سرور را بارگذاری مجدد (Reload) کنید:

Bash

sudo systemctl reload httpd

اکنون آدرس سایت را با https:// در مرورگر باز کنید. مشاهده خطای هشدار امنیتی (Potential Security Risk) طبیعی است؛ روی گزینه Advanced کلیک کرده و ورود را تأیید کنید تا صفحه تست نمایش داده شود.

گام چهارم — هدایت (Redirect) ترافیک HTTP به HTTPS

برای امنیت بیشتر، بهتر است تمامی درخواست‌های عادی روی پورت 80 (HTTP) به صورت خودکار به پورت 443 (HTTPS) هدایت شوند.

مجدداً فایل کانفیگی که ساختید را باز کنید:

Bash

sudo nano /etc/httpd/conf.d/your_domain_or_ip.conf

بلوک زیر را به انتهای فایل اضافه کنید:

Apache

<VirtualHost *:80>
    ServerName your_domain_or_ip
    Redirect / https://your_domain_or_ip/
</VirtualHost>

تست ساختار و اعمال تغییرات:

Bash

sudo apachectl configtest
sudo systemctl reload httpd

اکنون اگر آدرس سایت را با http:// وارد کنید، مرورگر به طور خودکار به https:// منتقل می‌شود.

 

 

از همراهی شما با پارمین کلود سپاسگزاریم.

Click to rate this post!
[Total: 0 Average: 0]

نظرات کاربران

دیدگاهی بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *