58 lines
1.7 KiB
JavaScript
58 lines
1.7 KiB
JavaScript
'use strict';
|
|
|
|
var LE = require('../');
|
|
var config = require('./config-minimal');
|
|
|
|
// Note: you should make this special dir in your product and leave it empty
|
|
config.le.webrootPath = __dirname + '/../tests/acme-challenge';
|
|
config.le.server = LE.stagingServer;
|
|
|
|
var le = LE.create(config.backend, config.le, {
|
|
sniRegisterCallback: function (args, expiredCert, cb) {
|
|
// In theory you should never get an expired certificate because
|
|
// the certificates automatically renew in the background starting
|
|
// about a week before they expire.
|
|
// (the default behavior is to randomly stagger renewals)
|
|
// so in this case we'll just return the expired certificate
|
|
if (expiredCert) { return cb(null, expiredCert); }
|
|
|
|
// If we get here that means this domain hasn't been registered yet
|
|
// Security Warning: you should either manually register domains
|
|
// and return null here or check that the sni header isn't being
|
|
// spoofed and this is actually a domain you own before registering
|
|
//
|
|
// cb(null, null);
|
|
|
|
var hostname = args.domains[0];
|
|
console.log("[TODO] check that '" + hostname + "' is one I expect");
|
|
|
|
args.agreeTos = true;
|
|
args.email = 'user@example.com';
|
|
|
|
le.register(args, cb);
|
|
}
|
|
});
|
|
|
|
|
|
//
|
|
// Express App
|
|
//
|
|
var app = require('express')();
|
|
app.use('/', le.middleware());
|
|
|
|
|
|
//
|
|
// HTTP & HTTPS servers
|
|
//
|
|
require('http').createServer(app).listen(config.plainPort, function () {
|
|
console.log('Listening http', this.address());
|
|
});
|
|
|
|
require('https').createServer({
|
|
key: config.tlsKey
|
|
, cert: config.tlsCert
|
|
, SNICallback: le.sniCallback
|
|
}, app).listen(config.tlsPort, function () {
|
|
console.log('Listening http', this.address());
|
|
});
|