npm package: @forrest79/dev-certs
Description: Create SSL wildcards domain certificates with own certificate authority for and ONLY for development.
Latest version: 0.2.2

# Forrest79/DevCerts

[![Version](https://poser.pugx.org/forrest79/dev-certs/version)](//packagist.org/packages/forrest79/dev-certs)
[![Monthly Downloads](https://poser.pugx.org/forrest79/dev-certs/d/monthly)](//packagist.org/packages/forrest79/dev-certs)
[![License](https://poser.pugx.org/forrest79/dev-certs/license)](//packagist.org/packages/forrest79/dev-certs)
[![npm](https://img.shields.io/badge/npm-v0.2.1-blue)](//www.npmjs.com/package/@forrest79/dev-certs)

Create SSL wildcards domain certificates with own certificate authority for and ONLY for development.


## Requirements

Forrest79/DevCerts requires linux with openssl installed.


## Installation

The recommended way to install Forrest79/DevCerts is through Composer:

```sh
composer require --dev forrest79/dev-certs
```

or npm:

```sh
npm install @forrest79/dev-certs --save-dev
```


## Documentation

To generate certificate just call `bin/generate-certificate output_directory domain1 [domain2] [domainX]`. For every domain is generated certificate for `domain` and `*.domain`.

`output_directory` is directory, where new certificates will be generated
`domain1` is main domain and certificates and keys are named by this domain (`domain1.crt`, `domain1.key` and `domain1.pem` are generated in `output_directory`)
`domain2` .. `domainX` are other domains to be included in certificate

> For npm run script with `npm exec @forrest79/dev-certs`.

**Example:**

I want to generate certificate for domains `forrest79.net.test` and `trmota.cz.test` (`.test` is recommendation from Google).

```bash
bin/generate-certificate /home/forrest79/certs forrest79.net.test trmota.cz.test
```

To proper use in your system is recommended to import `certs/rootCA-DEVCERT.crt` to certificate storage, after that, all generated certificates will be marked as trusted and you get "green" lock icon. Firefox has own certificates storage system, you must import this directly to Firefox to make generated certificates trusted.

**How to import to Windows**
- Enter `Win + R` | `mmc`
- Click on `File` | `Add/Remove Snap-in...`
- In the Add or Remove Snap-ins window, select `Certificates` and click on the Add button
- Select the `Computer Account` radio button when prompted and click on `Next`
- Select `Local Computer` (selected by default) and click on `Finish`
- Back in the `Add or Remove Snap-ins` window, click on `OK`
- In the MMC main console, click on the plus (+) symbol to expand the Certificate snap-in.
- Navigate to `Trusted Root Certification Authorities` | `Certificates` pane
- Right-click within the `Certificates panel` and click on `All Tasks` | `Import to` start the `Certificate Import Wizard`
- Follow the wizard to import `rootCA-DEVCERTS.crt`.

**How to import to Linux**
@todo _Please let me know, if you know, how to do this :-)_


**How to import to MacOS**
@todo _Please let me know, if you know, how to do this :-)_


**How to import to Firefox**
Depends on your Firefox version. Search for button `View Certificates` in `Options`, `Advanced` or `Encryption`. Tab `Authority`, `Import...` and choose file `rootCA-DEVCERTS.crt`.


**How to use certificate in nginx**
Use this in your vhost configuration:

```
listen 443 ssl;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/certificate.key;
```

**How to use certificate in Apache**

Use this in your vhost configuration:

```
SSLEngine on
SSLCertificateFile "/path/to/certificate.crt"
SSLCertificateKeyFile "/path/to/certificate.key"
```