Last active
December 13, 2016 17:17
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); | |
}); | |
}; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-----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----- |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-----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