diff --git a/README.md b/README.md index d8e9289..244afa7 100644 --- a/README.md +++ b/README.md @@ -22,26 +22,26 @@ Greenlock Express is a **Web Server** with **Fully Automated HTTPS** and renewal "use strict"; function httpsWorker(glx) { - // Serves on 80 and 443 - // Get's SSL certificates magically! + // Serves on 80 and 443 + // Get's SSL certificates magically! - glx.serveApp(function(req, res) { - res.end("Hello, Encrypted World!"); - }); + glx.serveApp(function(req, res) { + res.end("Hello, Encrypted World!"); + }); } var pkg = require("./package.json"); require("greenlock-express") - .init(function getConfig() { - // Greenlock Config + .init(function getConfig() { + // Greenlock Config - return { - package: { name: pkg.name, version: pkg.version }, - maintainerEmail: pkg.author, - cluster: false - }; - }) - .serve(httpsWorker); + return { + package: { name: pkg.name, version: pkg.version }, + maintainerEmail: pkg.author, + cluster: false + }; + }) + .serve(httpsWorker); ``` Manage via API or the config file: @@ -50,44 +50,44 @@ Manage via API or the config file: ```json { - "subscriberEmail": "letsencrypt-test@therootcompany.com", - "agreeToTerms": true, - "sites": { - "example.com": { - "subject": "example.com", - "altnames": ["example.com", "www.example.com"] - } - } + "subscriberEmail": "letsencrypt-test@therootcompany.com", + "agreeToTerms": true, + "sites": { + "example.com": { + "subject": "example.com", + "altnames": ["example.com", "www.example.com"] + } + } } ``` # Let's Encrypt for... -- IoT -- Enterprise On-Prem -- Local Development -- Home Servers -- Quitting Heroku +- IoT +- Enterprise On-Prem +- Local Development +- Home Servers +- Quitting Heroku # Features -- [x] Let's Encrypt v2 (November 2019) - - [x] ACME Protocol (RFC 8555) - - [x] HTTP Validation (HTTP-01) - - [x] DNS Validation (DNS-01) - - [ ] ALPN Validation (TLS-ALPN-01) - - Need ALPN validation? [contact us](mailto:greenlock-support@therootcompany.com) -- [x] Automated HTTPS - - [x] Fully Automatic Renewals every 45 days - - [x] Free SSL - - [x] **Wildcard** SSL - - [x] **Localhost** certificates - - [x] HTTPS-enabled Secure **WebSockets** (`wss://`) -- [x] Fully customizable - - [x] **Reasonable defaults** - - [x] Domain Management - - [x] Key and Certificate Management - - [x] ACME Challenge Plugins +- [x] Let's Encrypt v2 (November 2019) + - [x] ACME Protocol (RFC 8555) + - [x] HTTP Validation (HTTP-01) + - [x] DNS Validation (DNS-01) + - [ ] ALPN Validation (TLS-ALPN-01) + - Need ALPN validation? [contact us](mailto:greenlock-support@therootcompany.com) +- [x] Automated HTTPS + - [x] Fully Automatic Renewals every 45 days + - [x] Free SSL + - [x] **Wildcard** SSL + - [x] **Localhost** certificates + - [x] HTTPS-enabled Secure **WebSockets** (`wss://`) +- [x] Fully customizable + - [x] **Reasonable defaults** + - [x] Domain Management + - [x] Key and Certificate Management + - [x] ACME Challenge Plugins # QuickStart Guide @@ -127,7 +127,7 @@ works with everything. // A plain, node-style app function myPlainNodeHttpApp(req, res) { - res.end("Hello, Encrypted World!"); + res.end("Hello, Encrypted World!"); } // Wrap that plain app in express, @@ -152,9 +152,9 @@ module.exports = app; Greenlock Express is designed with these goals in mind: -- Simplicity and ease-of-use -- Performance and scalability -- Configurability and control +- Simplicity and ease-of-use +- Performance and scalability +- Configurability and control You can start with **near-zero configuration** and slowly add options for greater performance and customization @@ -164,21 +164,21 @@ later, if you need them. ```js require("greenlock-express") - .init(getConfig) - .serve(worker); + .init(getConfig) + .serve(worker); function getConfig() { - return { - // uses name and version as part of the ACME client user-agent - // uses author as the contact for support notices - package: require("./package.json") - }; + return { + // uses name and version as part of the ACME client user-agent + // uses author as the contact for support notices + package: require("./package.json") + }; } function worker(server) { - // Works with any Node app (Express, etc) - var app = require("my-express-app.js"); - server.serveApp(app); + // Works with any Node app (Express, etc) + var app = require("my-express-app.js"); + server.serveApp(app); } ``` @@ -222,14 +222,14 @@ This will update the config file (assuming the default fs-based management plugi ```json { - "subscriberEmail": "letsencrypt-test@therootcompany.com", - "agreeToTerms": true, - "sites": { - "example.com": { - "subject": "example.com", - "altnames": ["example.com", "www.example.com"] - } - } + "subscriberEmail": "letsencrypt-test@therootcompany.com", + "agreeToTerms": true, + "sites": { + "example.com": { + "subject": "example.com", + "altnames": ["example.com", "www.example.com"] + } + } } ``` @@ -269,10 +269,10 @@ npx greenlock add --subject example.com --altnames example.com,www.example.com Note: **Localhost**, **Wildcard**, and Certificates for Private Networks require [**DNS validation**](https://git.rootprojects.org/root/greenlock-exp). -- DNS Validation - - [**Wildcards**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/wildcards/) (coming soon) - - [**Localhost**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/localhost/) (coming soon) - - [**CI/CD**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/ci-cd/) (coming soon) +- DNS Validation + - [**Wildcards**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/wildcards/) (coming soon) + - [**Localhost**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/localhost/) (coming soon) + - [**CI/CD**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/ci-cd/) (coming soon) @@ -280,17 +280,17 @@ Note: **Localhost**, **Wildcard**, and Certificates for Private Networks require **These are in-progress** Check back tomorrow (Nov 2nd, 2019). -- [greenlock-express.js/examples/](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples) - - [Express](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/express/) - - [Node's **http2**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/http2/) - - [Node's https](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/https/) - - [**WebSockets**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/websockets/) - - [Socket.IO](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/socket-io/) - - [Cluster](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/cluster/) - - [**Wildcards**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/wildcards/) (coming soon) - - [**Localhost**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/localhost/) (coming soon) - - [**CI/CD**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/ci-cd/) (coming soon) - - [HTTP Proxy](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/http-proxy/) +- [greenlock-express.js/examples/](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples) + - [Express](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/express/) + - [Node's **http2**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/http2/) + - [Node's https](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/https/) + - [**WebSockets**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/websockets/) + - [Socket.IO](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/socket-io/) + - [Cluster](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/cluster/) + - [**Wildcards**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/wildcards/) (coming soon) + - [**Localhost**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/localhost/) (coming soon) + - [**CI/CD**](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/ci-cd/) (coming soon) + - [HTTP Proxy](https://git.rootprojects.org/root/greenlock-express.js/src/branch/master/examples/http-proxy/) # Easy to Customize @@ -300,10 +300,10 @@ Note: **Localhost**, **Wildcard**, and Certificates for Private Networks require - [greenlock.js/examples/](https://git.rootprojects.org/root/greenlock.js/src/branch/master/examples) --> -- [Custom Domain Management](https://git.rootprojects.org/root/greenlock-manager-test.js) -- [Custom Key & Cert Storage](https://git.rootprojects.org/root/greenlock-store-test.js) -- [Custom ACME HTTP-01 Challenges](https://git.rootprojects.org/root/acme-http-01-test.js) -- [Custom ACME DNS-01 Challenges](https://git.rootprojects.org/root/acme-dns-01-test.js) +- [Custom Domain Management](https://git.rootprojects.org/root/greenlock-manager-test.js) +- [Custom Key & Cert Storage](https://git.rootprojects.org/root/greenlock-store-test.js) +- [Custom ACME HTTP-01 Challenges](https://git.rootprojects.org/root/acme-http-01-test.js) +- [Custom ACME DNS-01 Challenges](https://git.rootprojects.org/root/acme-dns-01-test.js) # Ready-made Integrations @@ -345,12 +345,12 @@ We're working on more comprehensive documentation for this newly released versio Do you need... -- training? -- specific features? -- different integrations? -- bugfixes, on _your_ timeline? -- custom code, built by experts? -- commercial support and licensing? +- training? +- specific features? +- different integrations? +- bugfixes, on _your_ timeline? +- custom code, built by experts? +- commercial support and licensing? You're welcome to [contact us](mailto:aj@therootcompany.com) in regards to IoT, On-Prem, Enterprise, and Internal installations, integrations, and deployments. diff --git a/package-lock.json b/package-lock.json index 268f687..0e47c44 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "greenlock-express", - "version": "3.0.11", + "version": "3.0.13", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -39,30 +39,32 @@ "resolved": "https://registry.npmjs.org/@root/encoding/-/encoding-1.0.1.tgz", "integrity": "sha512-OaEub02ufoU038gy6bsNHQOjIn8nUjGiLcaRmJ40IUykneJkIW5fxDqKxQx48cszuNflYldsJLPPXCrGfHs8yQ==" }, - "@root/greenlock": { - "version": "3.0.24", - "resolved": "https://registry.npmjs.org/@root/greenlock/-/greenlock-3.0.24.tgz", - "integrity": "sha512-uJgHIdWEzZ1QeFN+Ydc2vKs91RDlZQTUF2R2WcklayWivXvBnr7QiyLDVtI5VZuJN6y5RQeWXmDQub/On+8wbg==", - "requires": { - "@root/acme": "^3.0.8", - "@root/csr": "^0.8.1", - "@root/keypairs": "^0.9.0", - "@root/mkdirp": "^1.0.0", - "@root/request": "^1.3.10", - "acme-http-01-standalone": "^3.0.5", - "cert-info": "^1.5.1", - "greenlock-manager-fs": "^3.0.1", - "greenlock-store-fs": "^3.2.0", - "safe-replace": "^1.1.0" - } - }, "@root/greenlock-express": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@root/greenlock-express/-/greenlock-express-3.0.11.tgz", - "integrity": "sha512-lmDJFxJQjYOHRtQy7tkthKmXxRAVily/N0C3fGRe30XmCOlRHJz6FG4BjQ8VGWCJ6sMZ2zKxa9JDmo8Ov10Vow==", + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@root/greenlock-express/-/greenlock-express-3.0.13.tgz", + "integrity": "sha512-SgFsP4rBDPRBp52yqb8kONw7ZCkgyYrBFJLg4xhfIMbsMct4dfqB+N5eJbeF/exJh4+BHM7tppvf31Xuz6EO2Q==", "requires": { - "@root/greenlock": "^3.0.17", + "@root/greenlock": "^3.0.25", "redirect-https": "^1.1.5" + }, + "dependencies": { + "@root/greenlock": { + "version": "3.0.25", + "resolved": "https://registry.npmjs.org/@root/greenlock/-/greenlock-3.0.25.tgz", + "integrity": "sha512-VC8H9MTkbqxlB2LGntmcq5cstkE0TdZLvxm25SO5i7c6abJBVMQafhTD415OXwoGimnmWTn6SZ93Fj73d9QX/w==", + "requires": { + "@root/acme": "^3.0.8", + "@root/csr": "^0.8.1", + "@root/keypairs": "^0.9.0", + "@root/mkdirp": "^1.0.0", + "@root/request": "^1.3.10", + "acme-http-01-standalone": "^3.0.5", + "cert-info": "^1.5.1", + "greenlock-manager-fs": "^3.0.1", + "greenlock-store-fs": "^3.2.0", + "safe-replace": "^1.1.0" + } + } } }, "@root/keypairs": { diff --git a/package.json b/package.json index b5ae8fa..7ac376b 100644 --- a/package.json +++ b/package.json @@ -1,52 +1,52 @@ { - "name": "greenlock-express", - "version": "3.0.11", - "description": "Free SSL and managed or automatic HTTPS for node.js with Express, Koa, Connect, Hapi, and all other middleware systems.", - "main": "greenlock-express.js", - "homepage": "https://greenlock.domains", - "files": [ - "*.js", - "lib", - "scripts" - ], - "scripts": { - "start": "node_todo server.js ./config.js", - "test": "node_todo test/greenlock.js" - }, - "directories": { - "example": "examples" - }, - "dependencies": { - "@root/greenlock": "^3.0.17", - "@root/greenlock-express": "^3.0.11", - "redirect-https": "^1.1.5" - }, - "trulyOptionalDependencies": { - "http-proxy": "^1.17.0", - "express": "^4.16.3", - "express-basic-auth": "^1.2.0", - "finalhandler": "^1.1.1", - "serve-index": "^1.9.1", - "serve-static": "^1.13.2", - "ws": "^5.2.1" - }, - "devDependencies": {}, - "repository": { - "type": "git", - "url": "https://git.rootprojects.org/root/greenlock-express.js.git" - }, - "keywords": [ - "Let's Encrypt", - "ACME", - "greenlock", - "Free SSL", - "Automated HTTPS", - "https", - "tls" - ], - "author": "AJ ONeal (https://solderjs.com/)", - "license": "MPL-2.0", - "bugs": { - "url": "https://git.rootprojects.org/root/greenlock-express.js/issues" - } + "name": "greenlock-express", + "version": "3.0.13", + "description": "Free SSL and managed or automatic HTTPS for node.js with Express, Koa, Connect, Hapi, and all other middleware systems.", + "main": "greenlock-express.js", + "homepage": "https://greenlock.domains", + "files": [ + "*.js", + "lib", + "scripts" + ], + "scripts": { + "start": "node_todo server.js ./config.js", + "test": "node_todo test/greenlock.js" + }, + "directories": { + "example": "examples" + }, + "dependencies": { + "@root/greenlock": "^3.0.25", + "@root/greenlock-express": "^3.0.13", + "redirect-https": "^1.1.5" + }, + "trulyOptionalDependencies": { + "http-proxy": "^1.17.0", + "express": "^4.16.3", + "express-basic-auth": "^1.2.0", + "finalhandler": "^1.1.1", + "serve-index": "^1.9.1", + "serve-static": "^1.13.2", + "ws": "^5.2.1" + }, + "devDependencies": {}, + "repository": { + "type": "git", + "url": "https://git.rootprojects.org/root/greenlock-express.js.git" + }, + "keywords": [ + "Let's Encrypt", + "ACME", + "greenlock", + "Free SSL", + "Automated HTTPS", + "https", + "tls" + ], + "author": "AJ ONeal (https://solderjs.com/)", + "license": "MPL-2.0", + "bugs": { + "url": "https://git.rootprojects.org/root/greenlock-express.js/issues" + } }