├── README.md ├── package.json ├── self-signed-https.js ├── self-signed-https.ls ├── server.crt └── server.key /README.md: -------------------------------------------------------------------------------- 1 | # self-signed-https 2 | 3 | Creates a self-signed https server 4 | 5 | ## Installation 6 | 7 | npm install self-signed-https 8 | 9 | ## Usage 10 | 11 | A basic HTTPS hello world app written in express (paste into app.js): 12 | 13 | ```javascript 14 | var express = require('express') 15 | var selfSignedHttps = require('self-signed-https') 16 | 17 | var app = express() 18 | app.get('/', function(req, res) { 19 | res.send('hello world') 20 | }) 21 | 22 | selfSignedHttps(app).listen(443, '0.0.0.0') 23 | ``` 24 | 25 | You will need to run as root as it's listening on port 443 (change to a higher port like 3000 if you want to run without sudo): 26 | 27 | sudo node app.js 28 | 29 | Then, you can visit https://localhost in your web browser 30 | 31 | ## License 32 | 33 | MIT 34 | 35 | ## Credits 36 | 37 | Author: [Geza Kovacs](http://github.com/gkovacs) 38 | 39 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "self-signed-https", 3 | "version": "1.0.5", 4 | "description": "Creates a self-signed https server", 5 | "main": "self-signed-https.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "https://github.com/gkovacs/self-signed-https.git" 12 | }, 13 | "keywords": [ 14 | "self-signed", 15 | "https" 16 | ], 17 | "author": "Geza Kovacs (http://github.com/gkovacs)", 18 | "license": "MIT", 19 | "bugs": { 20 | "url": "https://github.com/gkovacs/self-signed-https/issues" 21 | }, 22 | "homepage": "https://github.com/gkovacs/self-signed-https" 23 | } 24 | -------------------------------------------------------------------------------- /self-signed-https.js: -------------------------------------------------------------------------------- 1 | // Generated by LiveScript 1.3.1 2 | (function(){ 3 | var https, path, fs; 4 | https = require('https'); 5 | path = require('path'); 6 | fs = require('fs'); 7 | module.exports = function(app){ 8 | var dirname, key, cert; 9 | dirname = path.dirname(fs.realpathSync(__filename)); 10 | key = fs.readFileSync(path.join(dirname, 'server.key')); 11 | cert = fs.readFileSync(path.join(dirname, 'server.crt')); 12 | return https.createServer({ 13 | key: key, 14 | cert: cert, 15 | requestCert: false, 16 | rejectUnauthorized: false 17 | }, app); 18 | }; 19 | }).call(this); 20 | -------------------------------------------------------------------------------- /self-signed-https.ls: -------------------------------------------------------------------------------- 1 | require! 'https' 2 | require! 'path' 3 | require! 'fs' 4 | 5 | module.exports = (app) -> 6 | # to generate self-signed certificate: 7 | # http://www.akadia.com/services/ssh_test_certificate.html 8 | # 9 | # openssl genrsa -des3 -out server.key 1024 10 | # openssl req -new -key server.key -out server.csr 11 | # cp server.key server.key.org 12 | # openssl rsa -in server.key.org -out server.key 13 | # openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt 14 | dirname = path.dirname(fs.realpathSync(__filename)) 15 | key = fs.readFileSync(path.join(dirname, 'server.key')) 16 | cert = fs.readFileSync(path.join(dirname, 'server.crt')) 17 | return https.createServer({ 18 | key: key 19 | cert: cert 20 | requestCert: false 21 | rejectUnauthorized: false 22 | }, app) 23 | -------------------------------------------------------------------------------- /server.crt: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICATCCAWoCCQCwMPXJbqapCDANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJV 3 | UzETMBEGA1UECBMKU29tZS1TdGF0ZTEhMB8GA1UEChMYSW50ZXJuZXQgV2lkZ2l0 4 | cyBQdHkgTHRkMB4XDTE0MTIyMjA4NTAyNVoXDTE1MTIyMjA4NTAyNVowRTELMAkG 5 | A1UEBhMCVVMxEzARBgNVBAgTClNvbWUtU3RhdGUxITAfBgNVBAoTGEludGVybmV0 6 | IFdpZGdpdHMgUHR5IEx0ZDCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5JPu 7 | uiDUxuQ/YVRaW45il0eYnK8GRERKDBXAXOSNAYNR59q2svRDf2/PC+HaWiRaNYO3 8 | XDMq3WaG/dKBK20LFidg0LdPJsk6Cw9DSckuxNZ6eLFHYp2vh8zHqb2m5Cx6R25m 9 | pIl51cXfcPj08rDh6jgzZncaQOQ2OoIHsEgHf0ECAwEAATANBgkqhkiG9w0BAQUF 10 | AAOBgQCKjslmEVF3RP48qwswHuCyb22lEBxRXaessmqpTIdXwWwo9VHO30yR5o3U 11 | SWYEKRI03aO8DJuaLbSDyWAcrtKq0RAWw2tPFOAtyTVFVz/r2I0FKtQluvSWrfIb 12 | A6Sqn53vyXzgo0VJijLi2ar9bsJUUgdmuobFqUbqFW9Mt9SLHQ== 13 | -----END CERTIFICATE----- 14 | -------------------------------------------------------------------------------- /server.key: -------------------------------------------------------------------------------- 1 | -----BEGIN RSA PRIVATE KEY----- 2 | MIICXAIBAAKBgQDkk+66INTG5D9hVFpbjmKXR5icrwZEREoMFcBc5I0Bg1Hn2ray 3 | 9EN/b88L4dpaJFo1g7dcMyrdZob90oErbQsWJ2DQt08myToLD0NJyS7E1np4sUdi 4 | na+HzMepvabkLHpHbmakiXnVxd9w+PTysOHqODNmdxpA5DY6ggewSAd/QQIDAQAB 5 | AoGBAOJDEVfLcfRjMd39auggXLWVGJtYoaJn2sh1q5IIZw/tVuFkXd9s7XezTMdd 6 | TRBX1bgNZy7sM20vtUaB3n0HFqV7cTSzjx21lUkz9d1kl3M6HfBT+V1Mi/P/8JDN 7 | CNx4jlrnqSWEy+HcgJ3s4mo7hwSUcRcvNG8fBoSPEtFW2sABAkEA80bXwCfSFMNB 8 | jmNwBTsm91UdgURfLilnB4oqZ6ZXvQBF4L1fXiBJkznd/9IvNj9MvYA4jfNV5PJV 9 | 14oIRGuIQQJBAPCISoegrbVE4HUTOXZVwjm6yb9uwjSteR8p0aGIgAXpyZa0pHEl 10 | 6dC3eOYbI52sGvMwjv9LpcuVaDCGaEPWNwECQHqqLN1Z9sa7UVHPd8tbcSFjDHaC 11 | mA95ltapZwpOSI0nFxTjx7N5Sj/u/K4iN+X9ct9WSK3ilVvUiU4d7l85bUECQDsp 12 | yutBYnjL0En7yI6K2ZNJloY3wB0k7j30E1QgNx09PBCNrkUGhlSITHyNAF2wD5Dx 13 | yLqS6N0CivYkmVDWSAECQCVjwCdqKfw9mKVewJrGs9A9VA5zmYd5ENZd8Kv7/Zqb 14 | uObkdNNxLXsuqsO3hb5gI/oI8QOVxRMjaeSWTNRsMts= 15 | -----END RSA PRIVATE KEY----- 16 | --------------------------------------------------------------------------------