'Laravel php artisan serve to mimic HTTPS

I have been searching around to see if there is a way I can mock SSL for local development using Laravel's artisan to serve HTTPS with no luck.

Is this possible and if so, how?

I understand this is a very general question, but I am not seeing anything on this in searches.



Solution 1:[1]

You can use ngrok for that

php artisan serve
cd <path-to-ngrok>
./ngrok http localhost:8000

https://ngrok.com/

Solution 2:[2]

Laravel uses the in-built PHP5.4 development server php -S (http://php.net/manual/en/features.commandline.webserver.php) for it's artisan serve command (see Illuminate\Foundation\Console\ServeCommand). This only supports plain HTTP, so no, this isn't possible. Your best bet would be to use a Vagrant box set up to work with SSL/TLS.

Solution 3:[3]

If you're using xampp, then you can setup HTTPS locally with xampp (this post is also useful for setting up HTTPS) and then you can:

  1. move your project to htdocs folder and visit it with https://localhost/projectFolder/public/

  2. or just create a special VirtualHost in httpd-vhosts.conf for this project (always point to that public folder, this is from where the project is running) and then visit it with https://localhost/ in this example (you can of course, run it on a subdomain if you want to)

    <VirtualHost *:80>
        ServerName localhost
        DocumentRoot "c:\pathToYourProject\projectFolder\public"
        <Directory "c:\pathToYourProject\projectFolder\public">
            Options All
            AllowOverride All
        </Directory>
    </VirtualHost>
    
    # this should ensure https (this is mentioned in the stackoverflow post, that I linked as useful
    <VirtualHost *:443>
        ServerName localhost
        DocumentRoot "c:\pathToYourProject\projectFolder\public"
        SSLEngine on
        SSLCertificateFile "conf\ssl.crt\server.crt"
        SSLCertificateKeyFile "conf\ssl.key\server.key"
        <Directory "c:\pathToYourProject\projectFolder\public">
            Options All
            AllowOverride All
        </Directory>
    </VirtualHost>
    

Theoretically, when you're using this method, you don't even need php artisan serve (tbh I'm not entirely sure if it has any purpose in this case).

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 ???? ????
Solution 2 kieranajp
Solution 3