AJ ONeal
9 years ago
4 changed files with 9 additions and 131 deletions
@ -0,0 +1,9 @@ |
|||
moved the tests to the examples folder |
|||
|
|||
```bash |
|||
node examples/commandline.js example.com,www.example.com user@example.com agree |
|||
``` |
|||
|
|||
Try it for yourself. |
|||
|
|||
Go watch [Let's Encrypt in (exactly) 90 seconds](https://daplie.com/articles/lets-encrypt-in-literally-90-seconds/) and swap out the Caddy instructions with the node instructions. |
@ -1,37 +0,0 @@ |
|||
'use strict'; |
|||
|
|||
var config = require('./config'); |
|||
var Letsencrypt = require('../'); |
|||
var leBinPath = '/home/user/.local/share/letsencrypt/bin/letsencrypt'; |
|||
var LEP = require('letsencrypt-python'); |
|||
var lep = LEP.create(leBinPath); |
|||
|
|||
require('./serve-acme-challenges').create({ |
|||
configDir: config.configDir |
|||
}); |
|||
|
|||
//var networkInterfaces = require('os').networkInterfaces();
|
|||
//var ipify = require('ipify');
|
|||
|
|||
var le = Letsencrypt.create( |
|||
lep |
|||
// set some defaults
|
|||
, { configDir: config.configDir |
|||
, workDir: config.workDir |
|||
, logsDir: config.logsDir |
|||
|
|||
, webroot: true |
|||
, webrootPath: config.webrootPath |
|||
|
|||
, server: LEP.stagingServer |
|||
} |
|||
, { cacheContextsFor: 1 * 60 * 60 * 1000 // 1 hour
|
|||
, cacheRenewChecksFor: 3 * 24 * 60 * 60 * 1000 // 3 days
|
|||
} |
|||
); |
|||
|
|||
le.register({ |
|||
agreeTos: true |
|||
, domains: ['lds.io'] |
|||
, email: 'coolaj86@gmail.com' |
|||
}); |
@ -1,92 +0,0 @@ |
|||
'use strict'; |
|||
|
|||
var fs = require('fs'); |
|||
var path = require('path'); |
|||
var https = require('https'); |
|||
var http = require('http'); |
|||
var express = require('express'); |
|||
var app = express(); |
|||
|
|||
module.exports.create = function (opts) { |
|||
function getSecureContext(domainname, opts, cb) { |
|||
|
|||
if (!opts) { opts = {}; } |
|||
|
|||
opts.key = fs.readFileSync(path.join(opts.configDir, 'live', domainname, 'privkey.pem')); |
|||
opts.cert = fs.readFileSync(path.join(opts.configDir, 'live', domainname, 'cert.pem')); |
|||
/* |
|||
opts.ca = fs.readFileSync(path.join(opts.configDir, 'live', domainname, 'chain.pem'), 'ascii') |
|||
.split('-----END CERTIFICATE-----') |
|||
.filter(function (ca) { |
|||
return ca.trim(); |
|||
}).map(function (ca) { |
|||
return (ca + '-----END CERTIFICATE-----').trim(); |
|||
}); |
|||
*/ |
|||
|
|||
cb(null, require('tls').createSecureContext(opts)); |
|||
} |
|||
|
|||
|
|||
// log the requests
|
|||
app.use('/', function (req, res, next) { |
|||
console.log('[' + req.ip + ']', req.method + ' ' + req.headers.host, req.protocol + req.url); |
|||
next(); |
|||
}); |
|||
// handle static requests to /.well-known/acme-challenge
|
|||
app.use( |
|||
'/.well-known/acme-challenge' |
|||
, express.static(opts.webrootPath, { dotfiles: undefined }) |
|||
); |
|||
|
|||
function serveHttps() { |
|||
//
|
|||
// SSL Certificates
|
|||
//
|
|||
var server; |
|||
var localCerts = require('localhost.daplie.com-certificates'); |
|||
var options = { |
|||
requestCert: false |
|||
, rejectUnauthorized: true |
|||
|
|||
// If you need to use SNICallback you should be using io.js >= 1.x (possibly node >= 0.12)
|
|||
, SNICallback: function (domainname, cb) { |
|||
var secureContext = getSecureContext(domainname); |
|||
cb(null, secureContext); |
|||
} |
|||
// If you need to support HTTP2 this is what you need to work with
|
|||
//, NPNProtocols: ['http/2.0', 'http/1.1', 'http/1.0']
|
|||
//, NPNProtocols: ['http/1.1']
|
|||
, key: localCerts.key |
|||
, cert: localCerts.cert |
|||
//, ca: null
|
|||
}; |
|||
|
|||
// Start the tls sni server4
|
|||
server = https.createServer(options); |
|||
server.on('error', function (err) { |
|||
console.error(err); |
|||
}); |
|||
server.on('request', app); |
|||
server.listen(opts.tlsSni01Port, function () { |
|||
console.log('[https] Listening', server.address()); |
|||
}); |
|||
} |
|||
|
|||
function serveHttp() { |
|||
// Start the http server4
|
|||
var insecureServer = http.createServer(); |
|||
insecureServer.on('error', function (err) { |
|||
console.error(err); |
|||
}); |
|||
// note that request handler must be attached *before* and handle comes in
|
|||
insecureServer.on('request', app); |
|||
insecureServer.listen(opts.http01Port, function () { |
|||
console.log('[http] Listening', insecureServer.address()); |
|||
}); |
|||
} |
|||
|
|||
|
|||
serveHttps(); |
|||
serveHttp(); |
|||
}; |
@ -1,2 +0,0 @@ |
|||
curl http://localhost:80/.well-known/acme-challenge/hello |
|||
curl https://localhost.daplie.com:5001/.well-known/acme-challenge/hello |
Loading…
Reference in new issue