Skip to content

Instantly share code, notes, and snippets.

@flesler
Last active December 13, 2016 17:17
Show Gist options
  • Save flesler/ee3bc4c04f0439b15ae31b783331dd38 to your computer and use it in GitHub Desktop.
Save flesler/ee3bc4c04f0439b15ae31b783331dd38 to your computer and use it in GitHub Desktop.
Easily proxy HTTPS requests to an HTTP server - Test certificate is self-signed
const https = require('https');
const fs = require('fs');
module.exports = function (server) {
const options = {
key: fs.readFileSync('server.key'),
cert: fs.readFileSync('server.crt'),
};
const sourcePort = server.address().port;
// Support multiple ports, offset HTTPS by the same amount as the HTTP one
const port = sourcePort - (sourcePort < 8080 ? 80 : 8080) + 443;
return https.createServer(options, function (req, res) {
// Proxy to HTTP server transparently
server.emit('request', req, res);
}).listen(port, function () {
console.log('HTTPS proxy listening on port ' + this.address().port);
});
};
-----BEGIN CERTIFICATE-----
MIIC8TCCAdmgAwIBAgIJAIE0TL/UKVRHMA0GCSqGSIb3DQEBCwUAMA8xDTALBgNV
BAoMBFRlc3QwHhcNMTYxMjEyMjAxNzIxWhcNMTcxMjEyMjAxNzIxWjAPMQ0wCwYD
VQQKDARUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApu51Al3N
5DEShkSEkOWJuYK/yBuvkwQMJhq9RYa9rD8KbTz9AO9ir/3Q0EIURb+Zg1CCNaVy
Vs1ShLYzGfk/EagwtIB9umHy30cNRBRKN7VjwxreO3AYhNBIMXAt2EXuKYG3PbZ+
fuH6UTUa+yRSk98VVzabsfJHcUs311xnOj75VSeTkr0/rDy4frxZBU5fgOBaoiNW
jDB781g78qQ3fILFkPifFC0C6zWBu7WmXjQvvckUbVOq3/C018PyAwMNX5ZjdSAy
o1lGp39pbGbsswEKKZAvUx6/SBEH/k0wFVLzzHNYyrBXrhk6I+i/VRd2zQu/R95o
UGv59o12z9DDowIDAQABo1AwTjAdBgNVHQ4EFgQUVH67ybl6HrPa3eupE+wLrTJT
E4MwHwYDVR0jBBgwFoAUVH67ybl6HrPa3eupE+wLrTJTE4MwDAYDVR0TBAUwAwEB
/zANBgkqhkiG9w0BAQsFAAOCAQEAi4aPgG+yq7VJbta8XR5OXEE6xT0cs0V3LFN3
1INcvQ4oWKSnbgur446lY5L3T+q+JCGPzTM7rCQJtqM7fIUdrwKFz7smubaRTAQN
Jfq87fZMlRRn+4pJQHy78z286eDyt0EZsdOdo+jkGgB2k5hNM4Slpks5uWMxYi4O
3pVeTEY1UIDCy8ZiNI/0tlxK8QYuv403kJmOKATDpCVFiABYhaDUHFlqE7L8fULT
v6I5FshYjzC29l1VnDllYFDJLT4pcuLaIXVWZFdNTMTZ8ozAKb8mcFma9xRfjvhB
MkXAeZvQFlOfsfNQqmsKjU///3AFsDtj/Mz+snvcoNIHy0A54g==
-----END CERTIFICATE-----
const http = require('http');
const proxy = require('./proxy');
// HTTP server, has the actual logic
const server = http.createServer(function (req, res) {
res.end('HTTP server received ' + req.url);
}).listen(80, function() {
console.log('HTTP server listening on port ' + this.address().port);
});
// Init HTTPS proxy
proxy(server);
-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCm7nUCXc3kMRKG
RISQ5Ym5gr/IG6+TBAwmGr1Fhr2sPwptPP0A72Kv/dDQQhRFv5mDUII1pXJWzVKE
tjMZ+T8RqDC0gH26YfLfRw1EFEo3tWPDGt47cBiE0EgxcC3YRe4pgbc9tn5+4fpR
NRr7JFKT3xVXNpux8kdxSzfXXGc6PvlVJ5OSvT+sPLh+vFkFTl+A4FqiI1aMMHvz
WDvypDd8gsWQ+J8ULQLrNYG7taZeNC+9yRRtU6rf8LTXw/IDAw1flmN1IDKjWUan
f2lsZuyzAQopkC9THr9IEQf+TTAVUvPMc1jKsFeuGToj6L9VF3bNC79H3mhQa/n2
jXbP0MOjAgMBAAECggEAO5pY3QdxRFDhNF+ylanfiwVMRL7d6bhAPjq96d06TA4W
QvrLu1G+Aui1biap5l2LCn/sfgsc0DFvjUMg6906z6sl+M0IF0xx05ci/XPhLBLw
E/G7960GlCVqIXzUYaxWZSuTqc1HTTaSkfxMLe/CLFoy3Hj7DoZbS/B3d8XedcUC
cQsH9Myw5wc+GUcREDSuyzUK9ItjMm/E+TNwEZVFjY8cavAM7kO58uaIjnWCqBO4
N+wVjUPjMHCN09SWE3Tin1nLbZmzUcNWg8tyweCD5RnEfCWL6CKGi7EedA83ygHl
vD+BLXcoOxYDeJ6+BSck2wSXMIQeuIR3xoyzvZa7AQKBgQDeEbKiZzcacxBAliie
WfKtM8Woq2knGQ2EW8Hv4Di48/BNcme/oqKhaLLGZJnzC8rPnzzFySpyhjhzVMyZ
WvKxLEq9/1rMbVpu/5CVimmKuQSlhCSE3aKhHUmQWsH2Ks9VTEI0ZMoY2xGU7x+i
3o1e09uD9Se6D7/LCJ7efM930wKBgQDAcAhnlpls3NZKkRYyq0uafx/hCGy7VSv9
AgIydfX2aCNiCqZRJvcUgYrrxcGg+AUSn4Hrdvv3cyXDm57tyt1xmMWe5w4elJ7q
e4nBnrzQ+syW0Zi9IFf8Z0KWIIzCb52dpVTKol982jnPlNweQiUo12OrjqEopO/r
8UveJCdy8QKBgCP+3GTEtELeSdEeReE9FUAL90sa1cWXowBEW1BFmQwpxlbXZ4fB
lfjx3qCX5/hkffBfkFtC+1Vq+jV/llZ5ToN3eXoIrTAbvZ/mXwpOUENDMESgAcdj
oZvaAnWasHv1fnwGC2kwuS2EPPpWNFuTFXk8gAWItHLNYLpJYG8R7hMvAoGAagWP
a9r6HpMw8RYsX7AmUDFX0/h7R16uhI91vG1nHOHVFK//X9iS6lZQvoNOoavjx5Xf
02XTfkqPdMypbCOHi41624g7LDf/sfpsNCOLratvymwhtZk7QJF3ixTV2E38TZ2I
MLfy2eu1TBuchoM0y+KXRC6ptaXhlWF0xievIFECgYAJvcru5PCBGeK2M+PE6doQ
eMp1jsXNFdWBmXoIUgCPfp8yWetz9Ol6qgd6lZVgx46kVVPECQ59OHsB/SSzUk8n
PH0v9J2hkdUze8PpNT1bAZRVH+M9Lvhu8mTcZvnRoAsiAf7xhENQROGI1lHJI6Jp
b+AnYAb3rDY6uDOYTHJCBQ==
-----END PRIVATE KEY-----
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment