Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I Configure Google Compute Engine to use HTTPS for nodejs server?

I want to run nodejs & socket.io server in google compute engine with https / SSL.

I installed self-signed certificate from https://cloud.google.com/compute/docs/load-balancing/http/ssl-certificates.

Now, How Do I enable nodejs server to use https protocol?

Thanks,

like image 304
Love Sharma Avatar asked May 16 '15 04:05

Love Sharma


People also ask

Can you create an https web server with node js?

js. To built an HTTPS server with nodeJs, we need an SSL (Secure Sockets Layer) certificate. We can create a self-signed SSL certificate on our local machine. Let's first create an SSL certificate on our machine first.


1 Answers

Below is the code, which I used for HTTPS in nodejs,

var app = require('express')();
var https = require('https');
var fs = require('fs');
var PORT = 443;

var options = {
  key: fs.readFileSync('XYZ.key'),
  cert: fs.readFileSync('ABC.crt')
};

var server = https.createServer(options, app).listen(PORT, function () {
  console.log("Express listening on port " + PORT);
});

// Post request.
var req_res = function (req, res) {
  console.log("[200] " + req.url);
  var fullBody = '';

  // Read post data.
  req.on('data', function (chunk) {
    fullBody += chunk.toString();

    if (fullBody.length > 1e6) {
      // FLOOD ATTACK OR FAULTY CLIENT, NUKE REQUEST
      req.connection.destroy();
    }
  });

  // Send response.
  req.on('end', function () {
    // empty 200 OK response for now
    res.writeHead(200, {
      'Content-Type': 'application/json'
    });
    res.end(JSON.stringify({
      'success': true
    }));
  });
};

// Hello World
app.get('/*', function (req, res) {
  res.status(200).send('Hello World...');
});

// Post request to receive notifications.
app.post('/post', req_res);

Regarding google compute engine, you just need to enable 443 port from firewall.

gcloud compute firewall-rules create allow-https --description "https server" --allow tcp:443 --format json
like image 171
Love Sharma Avatar answered Oct 13 '22 00:10

Love Sharma