فعال‌سازی HTTPS در XAMPP یا محیط توسعه لوکال، یکی از پرتکرارترین نیازهای توسعه‌دهندگان وب است که با چند گام دقیق، به‌سادگی انجام می‌شود. XAMPP، به‌عنوان یکی از محبوب‌ترین محیط‌های توسعه محلی، به‌طور پیش‌فرض از HTTPS پشتیبانی نمی‌کند، اما با پیکربندی Apache و نصب گواهی، می‌توان HTTPS را فعال کرد و رفتار سایت را در بستر امن تست نمود. در این مقاله، چارچوبی عملی و گام‌به‌گام برای فعال‌سازی HTTPS در XAMPP ارائه می‌شود.

در پروژه‌های متعدد وردپرسی، دیده‌ام که فعال‌سازی HTTPS در XAMPP، از خطاهای زمان استقرار جلوگیری می‌کند چون رفتار سایت در بستر امن، از ابتدا شبیه‌سازی شده است.

چرا HTTPS در XAMPP لازم است؟

  • تست Service Worker و PWA.
  • تست OAuth و Redirect URI.
  • تست درگاه پرداخت.
  • تست Cookieهای Secure.
  • بررسی Mixed Content.
  • تست HTTP/2 و HTTP/3.
  • تست قابلیت‌های مرورگر در Secure Context.

پیش‌نیازها

  • XAMPP نصب‌شده روی ویندوز، macOS یا Linux.
  • دسترسی ادمین برای تغییر فایل‌ها و فایل hosts.
  • یک دامنه محلی (مثلاً example.local).
  • نصب mkcert یا OpenSSL (OpenSSL در XAMPP موجود است).
  • بکاپ از فایل‌های پیکربندی Apache.

تولید گواهی SSL

دو رویکرد اصلی برای تولید گواهی وجود دارد: mkcert (معتبر در مرورگر) و OpenSSL (خودامضا).

تولید با mkcert

mkcert ابزار توصیه‌شده است چون CA محلی نصب می‌کند و گواهی‌ها معتبر شناخته می‌شوند.

نصب

  • ویندوز: choco install mkcert یا دانلود از GitHub.
  • macOS: brew install mkcert
  • Linux: sudo apt install mkcert

تولید گواهی

mkcert -install
mkdir certs
cd certs
mkcert example.local "*.example.local" localhost 127.0.0.1

خروجی: example.local+3.pem و example.local+3-key.pem.

تولید با OpenSSL

OpenSSL در XAMPP موجود است:

cd C:\xampp\apache\bin
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout C:\xampp\apache\conf\ssl.key\example.local.key \
-out C:\xampp\apache\conf\ssl.crt\example.local.crt \
-subj "/C=IR/ST=Tehran/L=Tehran/O=Dev/CN=example.local"

نکته: این گواهی خودامضا است و مرورگرها هشدار نشان می‌دهند.

کپی گواهی در XAMPP

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

  • گواهی: C:\xampp\apache\conf\ssl.crt\
  • کلید: C:\xampp\apache\conf\ssl.key\

ویرایش httpd-ssl.conf

فایل C:\xampp\apache\conf\extra\httpd-ssl.conf را باز کنید و مسیر گواهی را تغییر دهید:

SSLCertificateFile "conf/ssl.crt/example.local.crt"
SSLCertificateKeyFile "conf/ssl.key/example.local.key"

اگر گواهی زنجیره‌ای دارید:

SSLCertificateChainFile "conf/ssl.crt/chain.pem"

ویرایش httpd-vhosts.conf

فایل C:\xampp\apache\conf\extra\httpd-vhosts.conf را باز کنید و Virtual Host را اضافه کنید:

<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/example"
ServerName example.local
Redirect permanent / https://example.local/
</VirtualHost>

<VirtualHost *:443>
DocumentRoot "C:/xampp/htdocs/example"
ServerName example.local
SSLEngine on
SSLCertificateFile "conf/ssl.crt/example.local.crt"
SSLCertificateKeyFile "conf/ssl.key/example.local.key"
</VirtualHost>

ویرایش فایل hosts

ویندوز

فایل C:\Windows\System32\drivers\etc\hosts را با Notepad (Run as Administrator) باز کنید و اضافه کنید:

127.0.0.1 example.local

macOS و Linux

فایل /etc/hosts را ویرایش کنید:

sudo nano /etc/hosts

و خط 127.0.0.1 example.local را اضافه کنید.

راه‌اندازی مجدد Apache

  1. باز کردن XAMPP Control Panel.
  2. توقف Apache.
  3. راه‌اندازی مجدد Apache.
  4. بررسی لاگ‌ها برای خطا.

پیکربندی وردپرس

در wp-config.php:

define( 'WP_HOME', 'https://example.local' );
define( 'WP_SITEURL', 'https://example.local' );
define( 'FORCE_SSL_ADMIN', true );

یا در دیتابیس:

UPDATE wp_options SET option_value = 'https://example.local' WHERE option_name IN ('home', 'siteurl');

رفع Mixed Content

URLهای قدیمی در دیتابیس را به‌روزرسانی کنید:

wp search-replace 'http://example.local' 'https://example.local' --all-tables

اعتماد به گواهی

روش سریع

در مرورگر: Advanced → Proceed.

روش ماندگار

پس از mkcert -install، مرورگرها به CA محلی اعتماد می‌کنند و هشدار نشان داده نمی‌شود.

رفع مشکلات رایج

مشکل: Apache راه‌اندازی نمی‌شود

بررسی لاگ error.log و پیکربندی httpd-ssl.conf.

مشکل: دسترسی به سایت با خطای SSL

بررسی گواهی، مسیر فایل‌ها و پیکربندی Virtual Host.

مشکل: Mixed Content

جستجو و جایگزینی URLها در دیتابیس.

مشکل: حلقه ریدایرکت

بررسی wp-config.php و .htaccess و httpd-vhosts.conf.

مشکل: خطای WP-CLI در محیط لوکال

افزودن موقت:

add_filter( 'https_ssl_verify', '__return_false' );

رویکردهای توصیه‌شده

  • استفاده از mkcert برای اعتماد کامل.
  • پیکربندی صحیح Virtual Host.
  • ریدایرکت HTTP به HTTPS در Apache.
  • رفع Mixed Content پیش از تست‌های پیشرفته.
  • مستندسازی راه‌اندازی SSL.
  • تست با چند مرورگر.
  • بکاپ از فایل‌های پیکربندی.
«فعال‌سازی HTTPS در XAMPP، تفاوت بین محیط لوکال واقعی و محیط شبیه‌سازی‌شده است.»

پرسش‌های پرتکرار

چگونه HTTPS را در XAMPP فعال کنم؟

با تولید گواهی (mkcert یا OpenSSL)، ویرایش httpd-ssl.conf و httpd-vhosts.conf، و راه‌اندازی مجدد Apache.

چرا Apache راه‌اندازی نمی‌شود؟

احتمالاً خطا در پیکربندی SSL یا مسیر گواهی. لاگ error.log را بررسی کنید.

چگونه به گواهی Self-Signed اعتماد کنم؟

با mkcert -install برای اعتماد ماندگار، یا با Advanced → Proceed در مرورگر.

آیا SSL محلی بر سئو اثر دارد؟

خیر، چون محیط لوکال ایندکس نمی‌شود.

چگونه Mixed Content را رفع کنم؟

با جستجو و جایگزینی URLهای HTTP در دیتابیس.

آیا روی macOS هم می‌توان XAMPP با SSL راه‌اندازی کرد؟

بله، با همان اصول ویندوز و مسیرهای متفاوت.

آیا می‌توان چند سایت محلی با HTTPS داشت؟

بله، با چند Virtual Host و گواهی‌های مستقل یا Wildcard.

آیا از mkcert در XAMPP استفاده کنم یا OpenSSL؟

mkcert توصیه می‌شود چون گواهی‌ها در مرورگر معتبر شناخته می‌شوند.

پایان‌بندی

فعال‌سازی HTTPS در XAMPP، یکی از نیازهای پرتکرار توسعه‌دهندگان وردپرس است که با گام‌های دقیق و ابزارهای مناسب، به‌سادگی انجام می‌شود. با پیکربندی صحیح، توسعه‌دهنده می‌تواند رفتار سایت را در بستر امن تست کند و از خطاهای زمان استقرار جلوگیری نماید.

از منظر مهندسی سطح ارشد، سه اصل در فعال‌سازی HTTPS در XAMPP تعیین‌کننده است: استفاده از mkcert برای اعتماد ماندگار، پیکربندی دقیق Virtual Host و ریدایرکت 301، و رفع Mixed Content پیش از تست‌های پیشرفته.

برای درک عمیق‌تر، مقاله ایجاد SSL برای سایت وردپرسی در محیط لوکال و مقاله راه‌اندازی SSL در وردپرس و انتقال سایت به HTTPS را مطالعه کنید.

اگر در پروژه‌های خود تجربه‌ای از HTTPS در XAMPP داشته‌اید، تجربه‌تان را در دیدگاه‌ها بنویسید. 🔒