مناسب برای: توسعهدهندگان 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 چه کاربردی دارد؟
- پیشنیازهای فعال کردن SSL در WAMP
- مرحله ۱: نصب و بررسی WAMP Server
- مرحله ۲: نصب OpenSSL در ویندوز
- مرحله ۳: ساخت پوشه برای فایلهای SSL
- مرحله ۴: ساخت Private Key با OpenSSL
- مرحله ۵: ساخت گواهی SSL لوکال
- مرحله ۶: فعال کردن ماژول SSL در Apache
- مرحله ۷: تنظیم فایل httpd-ssl.conf
- مرحله ۸: بررسی فایل httpd.conf
- مرحله ۹: ریستارت WAMP و تست HTTPS
- خطاهای رایج هنگام فعال کردن SSL در WAMP
- نکات مهم امنیتی و کاربردی
- سوالات متداول
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 این کار را انجام دهید:
- روی آیکن WAMP کنار ساعت ویندوز کلیک کنید.
- به مسیر Apache بروید.
- وارد بخش Apache modules شوید.
- ماژول
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 را ریستارت کنید:
- روی آیکن WAMP کلیک کنید.
- گزینه Restart All Services را انتخاب کنید.
- منتظر بمانید آیکن 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 معتبر باشد.
