How to setup HTTPS with Laravel Homestead on a Windows host
Tags: webdev, beginners, php, laravel
Published: 2018-10-16 18:04:47

---
title: How to setup HTTPS with Laravel Homestead on a Windows host
published: true
tags: webdev, beginners, php, laravel
canonical_url: https://nikol.as/laravel-homestead-ssl-windows
---

_This guide assumes prior experience with Vagrant and Laravel Homestead._

Laravel Homestead is an easy-to-use Vagrant box for local Laravel development, but getting SSL to work on a Windows host can be tricky if you've never done it before. This guide will show you how to enable SSL and how to trust the certificate in Firefox.

Prerequisites:
* [Composer](https://getcomposer.org/)
* [Firefox](https://www.mozilla.org/firefox/)
* [Vagrant](https://www.vagrantup.com/)

Let's create a new Laravel project for demonstration purposes:

```sh
composer create-project --prefer-dist laravel/laravel ssl-example
```

Now we need to configure a Homestead instance for our project:
```sh
cd ssl-example
composer require laravel/homestead --dev
vendor\\bin\\homestead make
```

You should see the following output in your console:
```
Homestead Installed!
```

Edit `Homestead.yaml` and make the following changes:

```diff
-       map: homestead.test
+       map: laravel.localhost
        to: /home/vagrant/code/public
+ ssl: true
```

> Note: Feel free to change `laravel.localhost` throughout the guide to a local domain of your choice.

Your `Homestead.yaml` should now look similar to this:

```yaml
ip: 192.168.10.10
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
    - ~/.ssh/id_rsa
folders:
    -
        map: 'D:\Documents\GitHub\ssl-example'
        to: /home/vagrant/code
sites:
    -
        map: laravel.localhost
        to: /home/vagrant/code/public
databases:
    - homestead
name: ssl-example
hostname: ssl-example
ssl: true
```

Add the following line to `C:\Windows\System32\drivers\etc\hosts`:

> Note: The IP address should match `Homestead.yaml`

```
192.168.10.10 laravel.localhost
```

Install the Homestead Vagrant Box:
```sh
vagrant box add laravel/homestead
```

Let's start our Vagrant box:
```sh
vagrant up
```

If you are using this guide to add SSL to an existing VM, use this command instead:
```sh
vagrant reload --provision
```

Wait until the provisioning process has been completed.

You should now be able to visit [http://laravel.localhost](http://laravel.localhost) in your browser:

![Laravel over HTTP](https://nikol.as/img/2018/10/laravel-http.png)

Now we need to get the CA certificate from the VM:
```sh
vagrant ssh -c 'cat /etc/nginx/ssl/ca.homestead.ssl-example.crt' > ca.homestead.ssl-example.crt
```

> Note: Change `ssl-example` to match your `Homestead.yaml`.

You should now have `ca.homestead.ssl-example.crt` inside your `ssl-example` folder.

In Powershell, as admin, run the following command to add the certificate to the certificate store:
```ps1
certutil -addstore -enterprise -f "Root" ca.homestead.ssl-example.crt
```

> Note: You can now remove `ca.homestead.ssl-example.crt` from the `ssl-example` folder.

Last but not least, we need to get Firefox to trust the certificate.

In Firefox, navigate to `about:config`. Read [this introduction](https://support.mozilla.org/kb/about-config-editor-firefox) if your unfamiliar with the Configuration Editor for Firefox.

Set `security.enterprise_roots.enabled` to `true` and restart Firefox.

You should now be able to visit [https://laravel.localhost](https://laravel.localhost) in your browser.

![Laravel over HTTPS](https://nikol.as/img/2018/10/laravel-https.png)

Congratulations! 🎉