# Quick Guide of SSL

* Prerequisites
  * [OpenSSL](https://www.openssl.org/) tool
  * Openssl is preinstall on Linux / MacOS / Git Bash
  * For windows, need to build the binary. Alternatively, use Git Bash (Install Git)
* Generate SSL key And cert

```sh
$ openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr

// more sample
$ openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem
```



## Node JS implementation

* Reference Code for secure server
* Place key and cert file in the `cert` folder of the nodejs project

```js
const express = require('express');
const https = require('https');
const path = require('path');
const fs = require('fs');

const app = express();

app.use('/', (req, res, next) => {
    res.send('Hello from SSL Server');
});

const sslServer = https.createServer({
    key: fs.readFileSync(path.join(__dirname, 'cert', 'server.key')),
    cert: fs.readFileSync(path.join(__dirname, 'cert', 'server.csr))
}, app);

sslServer.listen(3443, () => console.log('Secure Server on port 3443'));
```

