diff --git a/example/letsencrypt.js b/example/letsencrypt.js index 895241e..63a97f6 100644 --- a/example/letsencrypt.js +++ b/example/letsencrypt.js @@ -2,59 +2,91 @@ var LeCore = require('letiny-core'); -var email = process.argv[2] || 'user@example.com'; // CHANGE THIS -var domains = [process.argv[3] || 'example.com']; // CHANGE THIS - -var accountPrivateKeyPem = '...'; // leCrypto.generateRsaKeypair(bitLen, exp, cb) -var domainPrivateKeyPem = '...'; // (same) +var email = process.argv[2] || 'user@example.com'; // CHANGE TO YOUR EMAIL +var domains = [process.argv[3] || 'example.com']; // CHANGE TO YOUR DOMAIN +var acmeDiscoveryUrl = LeCore.stagingServerUrl; var challengeStore = require('./challenge-store'); var certStore = require('cert-store'); var serve = require('./serve'); -LeCore.getAcmeUrls( - LeCore.stagingServerUrl // or choose LeCore.productionServerUrl -, function (err, urls) { +var accountPrivateKeyPem = null; +var domainPrivateKeyPem = null; +var acmeUrls = null; + +console.log('Using server', acmeDiscoveryUrl); +console.log('Creating account for', email, 'and registering certificates for', domains, 'to that account'); +init(); + + +function init() { + getPrivateKeys(function () { + + LeCore.getAcmeUrls(acmeDiscoveryUrl, function (urls) { + // in production choose LeCore.productionServerUrl + + acmeUrls = urls; + runDemo(); + + }); + }); +} + +function getPrivateKeys() { + LeCore.leCrypto.generateRsaKeypair(2048, 65537, function (pems) { + + accountPrivateKeyPem = pems.privateKeyPem; + LeCore.leCrypto.generateRsaKeypair(2048, 65537, function (pems) { + + domainPrivateKeyPem = pems.privateKeyPem; + + }); + }); +} + +function runDemo() { LeCore.registerNewAccount( - { newRegUrl: urls.newReg - , email: email - , accountPrivateKeyPem: accountPrivateKeyPem - , agreeToTerms: function (tosUrl, done) { - // agree to these exact terms + { newRegUrl: acmeUrls.newReg + , email: email + , accountPrivateKeyPem: accountPrivateKeyPem + , agreeToTerms: function (tosUrl, done) { - console.log('[tosUrl]'); - console.log(tosUrl); - done(null, tosUrl); + // agree to these exact terms + console.log('[tosUrl]'); + console.log(tosUrl); + done(null, tosUrl); + } } - } - , function (err, regr) { + , function (err, regr) { - // Note: you should save the registration - // record to disk (or db) - console.log('[regr]'); - console.log(regr); + // Note: you should save the registration + // record to disk (or db) + console.log('[regr]'); + console.log(regr); - LeCore.getCertificate( - { domainPrivateKeyPem: domainPrivateKeyPem - , accountPrivateKeyPem: accountPrivateKeyPem - , setChallenge: challengeStore.set - , removeChallenge: challengeStore.remove - , domains: domains - } - , function (err, certs) { + LeCore.getCertificate( + { domainPrivateKeyPem: domainPrivateKeyPem + , accountPrivateKeyPem: accountPrivateKeyPem + , setChallenge: challengeStore.set + , removeChallenge: challengeStore.remove + , domains: domains + } + , function (err, certs) { - // Note: you should save certs to disk (or db) - certStore - - } - ); + // Note: you should save certs to disk (or db) + certStore.set(domains[0], certs, function () { - } + console.log('[certs]'); + console.log(certs); + + }); + + } + ); + } ); - - } -); +} // // Setup the Server