diff --git a/README.md b/README.md index 6453c54..039b7db 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,8 @@ To start, check out the Greenlock™ is an Automated Certificate Management Environement 🔐. +| **Greenlock** | [Greenlock Express](https://git.rootprojects.org/root/greenlock-express.js) | [ACME.js](https://git.rootprojects.org/root/acme.js) | + It uses **Let's Encrypt** to generate Free SSL Certificates, including **Wildcard** SSL. It supports **Automated Renewal** of certs for Fully Automated HTTPS. @@ -60,6 +62,107 @@ TODO --> +# Quick Start + +Greenlock is fully-automated, **SSL Certificate Manager** for IoT, Web Hosting, and Enterprise On-Prem, Edge, and Hybrid Cloud. + +(though we started building it for [Home Servers](https://rootprojects.org/hub/)) + +You can use it for one-off certificates, like `certbot`, +but it is _much_ more powerful than that. + +By setting just a few callbacks to let it know where it should store private keys and certificates, +it will automatically renew any certificate that you add to it, as long as the process is running. + +Certificates are renewed every 45 days by default, and renewal checks will happen several times a day. + +
+1. Configure + +```js +'use strict'; + +var pkg = require('./package.json'); +var Greenlock = require('greenlock'); +var greenlock = Greenlock.create({ + packageAgent: pkg.name + '/' + pkg.version, + maintainerEmail: pkg.author, + staging: true, + manager: require('greenlock-manager-fs').create({ + configFile: '~/.config/greenlock/manager.json' + }), + notify: function(event, details) { + if ('error' === event) { + // `details` is an error object in this case + console.error(details); + } + } +}); + +greenlock.manager + .defaults({ + agreeToTerms: true, + subscriberEmail: 'webhosting@example.com' + }) + .then(function(fullConfig) { + // ... + }); +``` + +
+ +
+2. Add Domains + +The `subject` (primary domain on certificate) will be the id, +so it's very important that the order of the given domains +be deterministic. + +```js +var altnames = ['example.com', 'www.example.com']; + +greenlock + .add({ + subject: altnames[0], + altnames: altnames + }) + .then(function() { + // saved config to db (or file system) + }); +``` + +Issuance and renewal will start immediately, and run continually. + +
+ +
+3. Test for Success + +The `store` callbacks will be called every any of your certificates +are renewed. + +However, you can do a quick one-off check with `get`. + +It will return a certificate immediately (if available), +or wait for the renewal to complete (or for it to fail again). + +```js +greenlock + .get({ servername: subject }) + .then(function(pems) { + if (pems && pems.privkey && pems.cert && pems.chain) { + console.info('Success'); + } + //console.log(pems); + }) + .catch(function(e) { + console.error('Big bad error:', e.code); + console.error(e); + }); +``` + +
+ # JavaScript API