Tenurial Guide for Learners: Configuring HTTPS in Laravel on LAMPP (Linux)
Introduction
This guide provides a step-by-step approach to setting up HTTPS for a Laravel project using LAMPP (Linux, Apache, MySQL, PHP, and Perl). This ensures secure communication between the browser and the web server.
Prerequisites
Before proceeding, ensure you have:
- LAMPP installed on your Linux system.
- A working Laravel project located inside
/opt/lampp/htdocs/your_laravel_project/
. - Basic knowledge of Linux terminal commands.
Step 1: Enable SSL in Apache
Apache SSL module needs to be enabled to support HTTPS.
1.1 Check if SSL Module is Enabled
Run the following command to check if SSL is active:
sudo /opt/lampp/bin/httpd -M | grep ssl
If SSL is not enabled, continue to the next step.
1.2 Enable SSL and Load Required Modules
Open the Apache configuration file:
sudo nano /opt/lampp/etc/httpd.conf
Uncomment the following lines by removing the #
:
LoadModule ssl_module modules/mod_ssl.so
Include etc/extra/httpd-ssl.conf
Save and exit (CTRL + X
, then Y
, then ENTER
).
Step 2: Configure Virtual Host for HTTPS
Modify the Apache SSL configuration file:
sudo nano /opt/lampp/etc/extra/httpd-ssl.conf
2.1 Define VirtualHost for Laravel
Find the <VirtualHost _default_:443>
block and update it as follows:
<VirtualHost *:443>
DocumentRoot "/opt/lampp/htdocs/your_laravel_project/public"
ServerName yourdomain.com
SSLEngine on
SSLCertificateFile "/opt/lampp/etc/ssl/cert.pem"
SSLCertificateKeyFile "/opt/lampp/etc/ssl/key.pem"
<Directory "/opt/lampp/htdocs/your_laravel_project/public">
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
Replace yourdomain.com
with your actual domain or localhost
if testing locally.
Step 3: Generate a Self-Signed SSL Certificate
If you don’t have an SSL certificate, create one using OpenSSL:
cd /opt/lampp/etc/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout key.pem -out cert.pem
Follow the prompts and enter necessary details (Country, State, City, etc.).
Step 4: Update Laravel Configuration
To ensure Laravel routes and assets load over HTTPS, update its configuration.
4.1 Update .env File
Edit Laravel’s .env
file:
APP_URL=https://yourdomain.com
4.2 Force HTTPS in Laravel Middleware
Modify the AppServiceProvider.php
file located in app/Providers/
:
use Illuminate\Support\Facades\URL;
public function boot()
{
if (env('APP_ENV') !== 'local') {
URL::forceScheme('https');
}
}
To enforce HTTPS even in a local environment, remove the if
condition.
Step 5: Restart Apache Server
Apply all changes by restarting the Apache server:
sudo /opt/lampp/lampp restart
Step 6: Test HTTPS Configuration
Now, try accessing your Laravel application via:
https://yourdomain.com
or
https://localhost
If you receive a certificate warning, it’s due to using a self-signed certificate. You can ignore it for development purposes or install a trusted SSL certificate.
Step 7: Redirect HTTP to HTTPS (Optional)
To automatically redirect all HTTP requests to HTTPS, update Laravel’s .htaccess
file in the public/
folder:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>
Conclusion
By following these steps, you have successfully configured HTTPS for your Laravel project using LAMPP on Linux. Your web application is now more secure, ensuring encrypted data transfer between the client and server.
If you need further assistance, feel free to reach out! 🚀