مناسب برای: توسعه‌دهندگان PHP، کاربران WAMP، مدیران سایت، طراحان وب و افرادی که می‌خواهند SSL را در محیط لوکال ویندوز تست کنند

اگر با WAMP Server روی ویندوز کار می‌کنید، احتمالاً در حالت پیش‌فرض سایت‌های لوکال شما با آدرس‌هایی مثل http://localhost اجرا می‌شوند. اما در بسیاری از پروژه‌ها لازم است سایت را با HTTPS هم تست کنید؛ مخصوصاً زمانی که با درگاه پرداخت، APIهای نیازمند HTTPS، کوکی‌های امن، احراز هویت، سرویس‌های خارجی یا تنظیمات مربوط به SSL کار می‌کنید.

فعال کردن SSL روی WAMP باعث می‌شود بتوانید پروژه‌های لوکال خود را در محیطی نزدیک‌تر به سرور واقعی تست کنید. البته باید توجه داشته باشید گواهی‌ای که در این آموزش می‌سازیم، معمولاً یک گواهی Self-Signed یا لوکال است و برای محیط توسعه مناسب است، نه برای سایت عمومی روی اینترنت.

در این آموزش، قدم‌به‌قدم یاد می‌گیرید چطور OpenSSL را نصب کنید، برای WAMP یک کلید خصوصی و گواهی SSL بسازید، تنظیمات Apache را تغییر دهید، ماژول SSL را فعال کنید و در نهایت سایت لوکال خود را با HTTPS اجرا کنید.

اگر می‌خواهید ابتدا با مفهوم گواهی امنیتی و HTTPS آشنا شوید، پیشنهاد می‌کنیم مقاله SSL چیست؟ را هم بخوانید.

فهرست مطالب

SSL در WAMP Server چه کاربردی دارد؟

WAMP Server یک محیط توسعه لوکال برای اجرای Apache، PHP و MySQL/MariaDB روی ویندوز است. در حالت عادی، بیشتر پروژه‌ها در WAMP با HTTP اجرا می‌شوند؛ اما بعضی قابلیت‌ها فقط در HTTPS درست کار می‌کنند یا بهتر است در محیط امن تست شوند.

فعال کردن HTTPS روی WAMP برای این موارد کاربرد دارد:

  • تست پروژه‌هایی که در محیط واقعی باید با HTTPS اجرا شوند.
  • بررسی رفتار کوکی‌های امن یا Secure Cookies.
  • تست فرم‌های ورود، ثبت‌نام و پرداخت در محیط شبیه‌سازی‌شده.
  • کار با APIهایی که فقط درخواست‌های HTTPS را قبول می‌کنند.
  • بررسی خطاهای مربوط به SSL، HTTPS و Mixed Content.
  • آماده‌سازی بهتر پروژه قبل از انتقال به هاست یا سرور اصلی.

اگر هدف شما فعال کردن HTTPS روی سایت واقعی است، باید از گواهی معتبر عمومی استفاده کنید. اما برای تست لوکال روی WAMP، گواهی Self-Signed معمولاً کافی است.

پیش‌نیازهای فعال کردن SSL در WAMP

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

  • یک سیستم ویندوزی با دسترسی Administrator
  • WAMP Server نصب‌شده و سالم
  • OpenSSL مناسب نسخه ویندوز شما
  • دسترسی به مسیر نصب Apache داخل WAMP
  • آشنایی اولیه با فایل‌های تنظیمات Apache

در این آموزش فرض می‌کنیم WAMP شما در مسیر زیر نصب شده است:

C:\wamp64

اگر WAMP را در مسیر دیگری نصب کرده‌اید، در تمام مراحل باید مسیرها را مطابق نصب خودتان تغییر دهید.

مرحله ۱: نصب و بررسی WAMP Server

اگر هنوز WAMP را نصب نکرده‌اید، ابتدا نسخه مناسب سیستم‌عامل خود را نصب کنید. WAMP معمولاً در نسخه‌های ۳۲ بیت و ۶۴ بیت ارائه می‌شود؛ بنابراین باید نسخه‌ای را انتخاب کنید که با ویندوز شما سازگار باشد.

بعد از نصب، WAMP را اجرا کنید. اگر آیکن WAMP در کنار ساعت ویندوز سبز باشد، یعنی سرویس‌های اصلی مثل Apache و MySQL به‌درستی اجرا شده‌اند. اگر آیکن نارنجی یا قرمز است، قبل از فعال کردن SSL باید مشکل اجرای سرویس‌ها را برطرف کنید.

برای تست اولیه، این آدرس را در مرورگر باز کنید:

http://localhost

اگر صفحه WAMP یا پروژه لوکال شما نمایش داده شد، می‌توانید مراحل فعال کردن HTTPS را ادامه دهید.

مرحله ۲: نصب OpenSSL در ویندوز

برای ساخت کلید خصوصی و گواهی SSL، به OpenSSL نیاز داریم. OpenSSL یک ابزار خط فرمان برای کار با گواهی‌ها، کلیدها و عملیات رمزنگاری است.

بعد از نصب OpenSSL، معمولاً فایل اجرایی آن در مسیری شبیه زیر قرار می‌گیرد:

C:\Program Files\OpenSSL-Win64\bin

برای اینکه مطمئن شوید OpenSSL نصب شده، Command Prompt یا PowerShell را با دسترسی Administrator باز کنید و وارد مسیر OpenSSL شوید:

cd "C:\Program Files\OpenSSL-Win64\bin"

سپس دستور زیر را اجرا کنید:

openssl version

اگر نسخه OpenSSL نمایش داده شد، می‌توانید ادامه دهید. اگر با خطا مواجه شدید، مسیر نصب OpenSSL یا متغیرهای محیطی ویندوز را بررسی کنید.

مرحله ۳: ساخت پوشه برای فایل‌های SSL

برای نظم بهتر، یک پوشه داخل مسیر Apache بسازید تا فایل‌های SSL در آن نگهداری شوند. مسیر دقیق Apache ممکن است بسته به نسخه WAMP متفاوت باشد. مثلاً:

C:\wamp64\bin\apache\apache2.4.46\conf\key

اگر نسخه Apache شما متفاوت است، به‌جای apache2.4.46 مسیر نسخه نصب‌شده خودتان را وارد کنید.

در این پوشه قرار است دو فایل اصلی داشته باشیم:

  • private.key برای کلید خصوصی
  • certificate.crt برای گواهی SSL

مرحله ۴: ساخت Private Key با OpenSSL

حالا باید یک کلید خصوصی بسازیم. Command Prompt یا PowerShell را با دسترسی Administrator باز کنید و به مسیر OpenSSL بروید:

cd "C:\Program Files\OpenSSL-Win64\bin"

برای ساخت یک کلید خصوصی ۲۰۴۸ بیتی، دستور زیر را اجرا کنید:

openssl genrsa -out private.key 2048

این دستور فایل private.key را ایجاد می‌کند. سپس این فایل را به پوشه‌ای که برای SSL در Apache ساختید منتقل کنید:

C:\wamp64\bin\apache\apache2.4.46\conf\key

در بعضی آموزش‌ها از حالت رمزدار برای private key استفاده می‌شود؛ اما برای WAMP و Apache لوکال، اگر private key رمز داشته باشد ممکن است هنگام راه‌اندازی Apache نیاز به وارد کردن رمز ایجاد شود. برای محیط لوکال، معمولاً کلید بدون passphrase ساده‌تر است.

مرحله ۵: ساخت گواهی SSL لوکال

در این مرحله، یک گواهی Self-Signed برای محیط لوکال می‌سازیم. این گواهی برای توسعه و تست مناسب است، اما مرورگرها به‌صورت پیش‌فرض به آن اعتماد کامل ندارند؛ بنابراین ممکن است هشدار امنیتی نمایش دهند.

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

openssl req -new -x509 -key private.key -out certificate.crt -days 365 -sha256

هنگام اجرای دستور، چند سوال از شما پرسیده می‌شود؛ مثل کشور، استان، شهر، نام سازمان و Common Name. برای محیط لوکال، در بخش Common Name می‌توانید مقدار زیر را وارد کنید:

localhost

بعد از اجرای موفق دستور، فایل certificate.crt ایجاد می‌شود. این فایل را هم کنار private.key در پوشه زیر قرار دهید:

C:\wamp64\bin\apache\apache2.4.46\conf\key

در پایان این مرحله، باید این دو فایل را داشته باشید:

C:\wamp64\bin\apache\apache2.4.46\conf\key\private.key
C:\wamp64\bin\apache\apache2.4.46\conf\key\certificate.crt

مرحله ۶: فعال کردن ماژول SSL در Apache

برای اینکه Apache بتواند HTTPS را پشتیبانی کند، باید ماژول SSL فعال باشد. در WAMP معمولاً می‌توانید از منوی خود WAMP این کار را انجام دهید:

  1. روی آیکن WAMP کنار ساعت ویندوز کلیک کنید.
  2. به مسیر Apache بروید.
  3. وارد بخش Apache modules شوید.
  4. ماژول ssl_module را فعال کنید.

اگر می‌خواهید دستی بررسی کنید، فایل httpd.conf را باز کنید و مطمئن شوید خط زیر بدون علامت # فعال باشد:

LoadModule ssl_module modules/mod_ssl.so

اگر ابتدای خط علامت # وجود دارد، آن را حذف کنید.

مرحله ۷: تنظیم فایل httpd-ssl.conf

حالا باید فایل تنظیمات SSL در Apache را ویرایش کنیم. این فایل معمولاً در مسیری شبیه زیر قرار دارد:

C:\wamp64\bin\apache\apache2.4.46\conf\extra\httpd-ssl.conf

فایل را با یک ویرایشگر متن مثل Notepad++ باز کنید و بخش مربوط به VirtualHost روی پورت ۴۴۳ را بررسی کنید.

یک نمونه تنظیم ساده برای localhost می‌تواند شبیه این باشد:

<VirtualHost _default_:443>
    DocumentRoot "${SRVROOT}/htdocs"
    ServerName localhost:443

    SSLEngine on

    SSLCertificateFile "${SRVROOT}/conf/key/certificate.crt"
    SSLCertificateKeyFile "${SRVROOT}/conf/key/private.key"

    <Directory "${SRVROOT}/htdocs">
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog "${SRVROOT}/logs/ssl_error.log"
    TransferLog "${SRVROOT}/logs/ssl_access.log"

    CustomLog "${SRVROOT}/logs/ssl_request.log" \
    "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

اگر پروژه شما در پوشه دیگری قرار دارد، مقدار DocumentRoot و مسیر Directory را مطابق پروژه خود تغییر دهید.

مرحله ۸: بررسی فایل httpd.conf

در این مرحله باید مطمئن شوید فایل اصلی Apache، تنظیمات SSL را include می‌کند. فایل زیر را باز کنید:

C:\wamp64\bin\apache\apache2.4.46\conf\httpd.conf

خط زیر را پیدا کنید:

#Include conf/extra/httpd-ssl.conf

اگر این خط کامنت شده است، علامت # را حذف کنید تا به شکل زیر شود:

Include conf/extra/httpd-ssl.conf

همچنین مطمئن شوید Apache روی پورت ۴۴۳ listen می‌کند. معمولاً داخل فایل httpd-ssl.conf یا فایل‌های مربوطه باید این خط وجود داشته باشد:

Listen 443

اگر پورت ۴۴۳ توسط نرم‌افزار دیگری اشغال شده باشد، Apache نمی‌تواند روی HTTPS اجرا شود.

مرحله ۹: ریستارت WAMP و تست HTTPS

بعد از انجام تنظیمات، WAMP را ریستارت کنید:

  1. روی آیکن WAMP کلیک کنید.
  2. گزینه Restart All Services را انتخاب کنید.
  3. منتظر بمانید آیکن WAMP سبز شود.

حالا این آدرس را در مرورگر باز کنید:

https://localhost

اگر صفحه WAMP یا پروژه شما باز شد، فعال کردن HTTPS با موفقیت انجام شده است. اگر مرورگر هشدار داد که گواهی قابل اعتماد نیست، در محیط لوکال طبیعی است؛ چون گواهی Self-Signed ساخته‌اید. برای سایت واقعی باید از گواهی معتبر عمومی استفاده شود.

تست تنظیمات Apache با httpd -t

اگر WAMP سبز نشد یا Apache اجرا نشد، باید تنظیمات Apache را تست کنید. وارد مسیر bin مربوط به Apache شوید:

cd "C:\wamp64\bin\apache\apache2.4.46\bin"

سپس دستور زیر را اجرا کنید:

httpd -t

اگر همه چیز درست باشد، باید پیامی شبیه زیر ببینید:

Syntax OK

اگر خطایی وجود داشته باشد، Apache مسیر فایل و شماره خط خطا را نمایش می‌دهد. معمولاً با همین خروجی می‌توانید مشکل را سریع‌تر پیدا کنید.

خطاهای رایج هنگام فعال کردن SSL در WAMP

۱. آیکن WAMP نارنجی می‌ماند

اگر آیکن WAMP سبز نمی‌شود، معمولاً یکی از سرویس‌ها، مخصوصاً Apache، اجرا نشده است. دستور httpd -t را اجرا کنید تا خطای تنظیمات مشخص شود.

۲. پورت ۴۴۳ اشغال است

اگر نرم‌افزاری مثل IIS، Skype، VMware، Docker یا سرویس دیگری پورت ۴۴۳ را اشغال کرده باشد، Apache نمی‌تواند HTTPS را اجرا کند. باید آن سرویس را متوقف کنید یا پورت SSL را تغییر دهید.

۳. مسیر فایل certificate یا private key اشتباه است

اگر مسیرهای زیر در httpd-ssl.conf اشتباه باشند، Apache اجرا نمی‌شود:

SSLCertificateFile
SSLCertificateKeyFile

مسیر فایل‌ها را دقیقاً با محل قرارگیری certificate.crt و private.key تطبیق دهید.

۴. ماژول SSL فعال نیست

اگر ssl_module فعال نباشد، Apache دستورات SSL را نمی‌شناسد و خطا می‌دهد. در فایل httpd.conf مطمئن شوید این خط فعال است:

LoadModule ssl_module modules/mod_ssl.so

۵. مرورگر هشدار امنیتی نمایش می‌دهد

در گواهی Self-Signed این رفتار طبیعی است. مرورگر به‌صورت پیش‌فرض به گواهی‌هایی که توسط CA معتبر صادر نشده‌اند اعتماد نمی‌کند. برای محیط لوکال می‌توانید هشدار را بپذیرید، اما برای سایت عمومی نباید از Self-Signed SSL استفاده کنید.

۶. خطای Mixed Content بعد از فعال کردن HTTPS

اگر پروژه شما با HTTPS باز می‌شود اما بعضی فایل‌ها مثل CSS، JavaScript یا تصاویر از HTTP لود می‌شوند، ممکن است با خطای Mixed Content روبه‌رو شوید. لینک‌های داخلی و منابع پروژه را بررسی کنید و آن‌ها را به HTTPS یا مسیر نسبی تغییر دهید.

نکات مهم امنیتی و کاربردی

  • گواهی Self-Signed فقط برای محیط لوکال و تست مناسب است.
  • برای سایت عمومی، از SSL معتبر استفاده کنید.
  • Private Key را در اختیار دیگران قرار ندهید.
  • اگر چند پروژه لوکال دارید، بهتر است برای هر VirtualHost تنظیمات جداگانه داشته باشید.
  • بعد از تغییر فایل‌های Apache، همیشه WAMP را ریستارت و با httpd -t تست کنید.
  • اگر پروژه قرار است به هاست یا سرور واقعی منتقل شود، تنظیمات HTTPS را در محیط واقعی هم جداگانه بررسی کنید.

اگر قصد دارید SSL را روی سایت واقعی فعال کنید، علاوه بر نصب گواهی باید DNS، هاست، ریدایرکت HTTP به HTTPS و خطاهای احتمالی را هم بررسی کنید. برای درک بهتر این بخش‌ها، مقاله‌های SSL چیست؟، DNS چیست؟ و هاست چیست؟ می‌توانند مفید باشند.

جمع‌بندی

فعال کردن HTTPS و SSL روی WAMP Server کمک می‌کند پروژه‌های لوکال خود را در محیطی نزدیک‌تر به سایت واقعی تست کنید. برای این کار باید OpenSSL را نصب کنید، یک کلید خصوصی و گواهی Self-Signed بسازید، ماژول SSL را در Apache فعال کنید، فایل httpd-ssl.conf را تنظیم کنید و در نهایت WAMP را ریستارت و تست کنید.

مهم‌ترین نکته این است که SSL ساخته‌شده در این آموزش برای محیط لوکال مناسب است، نه برای سایت عمومی. برای سایت‌هایی که روی اینترنت در دسترس کاربران قرار دارند، باید از گواهی SSL معتبر استفاده شود تا مرورگرها بدون هشدار امنیتی سایت را نمایش دهند.

اگر WAMP بعد از تغییرات اجرا نشد، قبل از هر چیز دستور httpd -t را اجرا کنید. این دستور معمولاً سریع‌ترین راه برای پیدا کردن خطای تنظیمات Apache است.

سوالات متداول

آیا می‌توان روی WAMP Server گواهی SSL نصب کرد؟

بله. با فعال کردن ماژول SSL در Apache و تنظیم فایل httpd-ssl.conf می‌توانید HTTPS را روی WAMP فعال کنید.

آیا SSL ساخته‌شده با OpenSSL برای سایت واقعی مناسب است؟

خیر. گواهی Self-Signed که با OpenSSL برای محیط لوکال ساخته می‌شود، برای تست مناسب است. برای سایت عمومی باید از گواهی معتبر صادرشده توسط CA استفاده کنید.

چرا مرورگر برای https://localhost هشدار امنیتی نشان می‌دهد؟

چون گواهی شما Self-Signed است و مرورگر به‌صورت پیش‌فرض به آن اعتماد ندارد. این موضوع در محیط لوکال طبیعی است.

چرا WAMP بعد از فعال کردن SSL سبز نمی‌شود؟

احتمالاً در فایل‌های تنظیمات Apache خطا وجود دارد، مسیر certificate یا private key اشتباه است، ماژول SSL فعال نیست یا پورت ۴۴۳ توسط برنامه دیگری اشغال شده است.

چطور خطای تنظیمات Apache را پیدا کنم؟

وارد مسیر bin مربوط به Apache شوید و دستور httpd -t را اجرا کنید. اگر خطایی وجود داشته باشد، Apache مسیر فایل و شماره خط را نمایش می‌دهد.

برای فعال کردن HTTPS در WAMP حتماً OpenSSL لازم است؟

برای ساخت کلید خصوصی و گواهی SSL لوکال، OpenSSL یکی از رایج‌ترین و ساده‌ترین ابزارهاست.

آیا می‌توان برای دامنه لوکال هم SSL ساخت؟

بله. می‌توانید برای نام‌هایی مثل local.test یا دامنه‌های لوکال دیگر گواهی بسازید، اما باید VirtualHost و فایل hosts ویندوز را هم درست تنظیم کنید.

تفاوت SSL لوکال با SSL سایت واقعی چیست؟

SSL لوکال معمولاً Self-Signed است و فقط برای تست استفاده می‌شود. SSL سایت واقعی باید معتبر، قابل اعتماد برای مرورگرها و صادرشده توسط یک CA معتبر باشد.

آخرین به روز رسانی: 4 اردیبهشت 1405