I am trying to configure my ExpressJS app for https connection. The Express server runs at localhost:8080 and the secure one localhost:8443.
Here is the server.js code related to https:
var app = express();var https = require('https');const options = { cert: fs.readFileSync('/etc/letsencrypt/live/fire.mydomain.me/fullchain.pem'), key: fs.readFileSync('/etc/letsencrypt/live/fire.mydomain.me/privkey.pem')};app.listen(8080, console.log("Server running"));https.createServer(options, app).listen(8443, console.log("Secure server running on port 8443"));
And here is my Nginx configuration:
server { listen 80; listen [::]:80; server_name fire.mydomain.me; location / { proxy_pass http://localhost:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }}server { listen 443; listen [::]:443; server_name fire.mydomain.me; location / { proxy_pass https://localhost:8443; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; }}
What I did :
- Generating SSL certificate with Letsencrypt certonly tool for the domain fire.mydomain.me.
- Configuring nginx.
- Configuring the server.js node app.
- Adding TCP rules for the 443 port in Ufw.
I tried
Commenting the not-ssl server line in server.js to force the connections to go through ssl configuration: this serve the page when I try to go to fire.mydomain.me:443 but not to "https:// fire.mydomain.me". In both cases, no SSL. Trying to go to https:// fire.mydomain.me generate this message "This website doensn't provide a secure connection" in Google Chrome.
I followed this tutorial in the first place to set my ssl node config :https://medium.com/@yash.kulshrestha/using-lets-encrypt-with-express-e069c7abe625#.93jgjlgsc