Upgrade & Secure Your Future with DevOps, SRE, DevSecOps, MLOps!

We spend hours on Instagram and YouTube and waste money on coffee and fast food, but won’t spend 30 minutes a day learning skills to boost our careers.
Master in DevOps, SRE, DevSecOps & MLOps!

Learn from Guru Rajesh Kumar and double your salary in just one year.



Get Started Now!

Configuring HTTPS in Laravel on LAMPP (Linux)

Uncategorized

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! 🚀

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x