update docs
This commit is contained in:
		
							parent
							
								
									6036292706
								
							
						
					
					
						commit
						77561ed770
					
				
							
								
								
									
										577
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										577
									
								
								README.md
									
									
									
									
									
								
							| @ -60,6 +60,296 @@ TODO | ||||
| 
 | ||||
| --> | ||||
| 
 | ||||
| # JavaScript API | ||||
| 
 | ||||
| <!-- | ||||
| <details> | ||||
| <summary>Greenlock API (shared among JS implementations)</summary> | ||||
| --> | ||||
| 
 | ||||
| <details> | ||||
| <summary>Greenlock.create({ packageAgent, maintainerEmail, staging })</summary> | ||||
| 
 | ||||
| ## Greenlock.create() | ||||
| 
 | ||||
| Creates an instance of greenlock with _environment_-level values. | ||||
| 
 | ||||
| ```js | ||||
| 
 | ||||
| var pkg = require('./package.json'); | ||||
| var gl = Greenlock.create({ | ||||
|     // Staging for testing environments | ||||
|     staging: true, | ||||
| 
 | ||||
|     // This should be the contact who receives critical bug and security notifications | ||||
|     // Optionally, you may receive other (very few) updates, such as important new features | ||||
|     maintainerEmail: 'jon@example.com', | ||||
|     // for an RFC 8555 / RFC 7231 ACME client user agent | ||||
|     packageAgent: pkg.name + '/' pkg.version | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| | Parameter       | Description                                                                          | | ||||
| | --------------- | ------------------------------------------------------------------------------------ | | ||||
| | maintainerEmail | the developer contact for critical bug and security notifications                    | | ||||
| | packageAgent    | if you publish your package for others to use, `require('./package.json').name` here | | ||||
| | staging         | use the Let's Encrypt staging URL instead of the production URL                      | | ||||
| | directoryUrl    | for use with other (not Let's Encrypt) ACME services, and the Pebble test server     | | ||||
| 
 | ||||
| <!-- | ||||
| | maintainerUpdates         | (default: false) receive occasional non-critical notifications                                                                                             | | ||||
|     maintainerUpdates: true // default: false | ||||
| --> | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
| <summary>Greenlock#manager.defaults()</summary> | ||||
| 
 | ||||
| ## Greenlock#manager.defaults() | ||||
| 
 | ||||
| Acts as a getter when given no arguments. | ||||
| 
 | ||||
| Otherwise sets default, site-wide values as described below. | ||||
| 
 | ||||
| ```js | ||||
| greenlock.manager.defaults({ | ||||
|     // The "Let's Encrypt Subscriber" (often the same as the maintainer) | ||||
|     // NOT the end customer (except where that is also the maintainer) | ||||
|     subscriberEmail: 'jon@example.com', | ||||
|     agreeToTerms: true | ||||
|     challenges: { | ||||
|       "http-01": { | ||||
|         module: "acme-http-01-webroot", | ||||
|         webroot: "/path/to/webroot" | ||||
|       } | ||||
|     } | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| | Parameter                 | Description                                                                                                                                                | | ||||
| | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||||
| | agreeToTerms              | (default: false) either 'true' or a function that presents the Terms of Service and returns it once accepted                                               | | ||||
| | challenges['http-01']     | provide an http-01 challenge module                                                                                                                        | | ||||
| | challenges['dns-01']      | provide a dns-01 challenge module                                                                                                                          | | ||||
| | challenges['tls-alpn-01'] | provide a tls-alpn-01 challenge module                                                                                                                     | | ||||
| | challenges[type].module   | the name of your challenge module                                                                                                                          | | ||||
| | challenges[type].xxxx     | module-specific options                                                                                                                                    | | ||||
| | servername                | the default servername to use for non-sni requests (many IoT clients)                                                                                      | | ||||
| | subscriberEmail           | the contact who agrees to the Let's Encrypt Subscriber Agreement and the Greenlock Terms of Service<br>this contact receives renewal failure notifications | | ||||
| | store                     | override the default storage module                                                                                                                        | | ||||
| | store.module              | the name of your storage module                                                                                                                            | | ||||
| | store.xxxx                | options specific to your storage module                                                                                                                    | | ||||
| 
 | ||||
| <!-- | ||||
| 
 | ||||
| | serverId        | an arbitrary name to distinguish this server within a cluster of servers | | ||||
| 
 | ||||
| --> | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
| <summary>Greenlock#add({ subject, altnames })</summary> | ||||
| 
 | ||||
| ## Greenlock#add() | ||||
| 
 | ||||
| Greenlock is a **Management Environment**. | ||||
| 
 | ||||
| Once you add a "site", it will begin to automatically renew, immediately. | ||||
| 
 | ||||
| The certificates will provided to the `store` callbacks as soon as they are ready, and whenever they renew. | ||||
| Failure to renew will be reported to the `notify` callback. | ||||
| 
 | ||||
| You can also retrieve them one-off with `get`. | ||||
| 
 | ||||
| ```js | ||||
| gl.add({ | ||||
|     subject: 'example.com', | ||||
|     altnames: ['example.com', 'www.example.com', 'exampleapi.com'] | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| | Parameter       | Description                                                                                  | | ||||
| | --------------- | -------------------------------------------------------------------------------------------- | | ||||
| | subject         | the first domain on, and identifier of the certificate                                       | | ||||
| | altnames        | first domain, plus additional domains<br>note: the order should always be the same           | | ||||
| | subscriberEmail | if different from the default (i.e. multi-tenant, whitelabel)                                | | ||||
| | challenges      | (same as main config) use if this site needs to use non-default http-01 or dns-01 validation | | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
| <summary>Greenlock#get({ servername })</summary> | ||||
| 
 | ||||
| ## Greenlock#get() | ||||
| 
 | ||||
| **Disclaimer**: This is only intended for testing, demos, and SNICallback | ||||
| (in [Greenlock Express](https://git.rootprojects.org/root/greenlock-express.js)). | ||||
| 
 | ||||
| Greenlock is intended to be left running to allow it to fetech and renew certifictates automatically. | ||||
| 
 | ||||
| It is intended that you use the `store` callbacks to new certificates instantly as soon as they renew. | ||||
| This also protects you from accidentally stampeding the Let's Encrypt API with hundreds (or thousands) | ||||
| of certificate requests. | ||||
| 
 | ||||
| -   [Store Callback Documentation](https://git.rootprojects.org/root/greenlock-store-test.js) | ||||
| 
 | ||||
| ```js | ||||
| return greenlock.get({ servername }).then(function(site) { | ||||
|     if (!site) { | ||||
|         console.log(servername + ' was not found in any site config'); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     var privkey = site.pems.privkey; | ||||
|     var fullchain = site.pems.cert + '\n' + site.pems.chain + '\n'; | ||||
|     console.log(privkey); | ||||
|     console.log(fullchain); | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| | Parameter  | Description                                                   | | ||||
| | ---------- | ------------------------------------------------------------- | | ||||
| | servername | any altname listed on the certificate (including the subject) | | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
| <summary>Greenlock#renew({ renewBefore })</summary> | ||||
| 
 | ||||
| ## Greenlock#renew() | ||||
| 
 | ||||
| This will renew only domains that have reached their `renewAt` or are within the befault `renewOffset`. | ||||
| 
 | ||||
| **Note**: This runs at regular intervals, multiple times a day, in the background. | ||||
| You are not required to call it. If you implement the `store` callbacks, the certificates | ||||
| will automatically be saved (and if you don't implement them, they all get saved to disk). | ||||
| 
 | ||||
| ```js | ||||
| return greenlock.renew({}).then(function(results) { | ||||
|     results.forEach(function(site) { | ||||
|         if (site.error) { | ||||
|             console.error(site.subject, site.error); | ||||
|             return; | ||||
|         } | ||||
|         console.log('Renewed certificate for', site.subject, site.altnames); | ||||
|     }); | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| | Parameter   | Type | Description                                                                     | | ||||
| | ----------- | ---- | ------------------------------------------------------------------------------- | | ||||
| | (optional)  |      | ALL parameters are optional, but some should be paired                          | | ||||
| | force       | bool | force silly options, such as tiny durations                                     | | ||||
| | renewBefore | ms   | Check domains that are scheduled to renew before the given date in milliseconds | | ||||
| 
 | ||||
| <!-- | ||||
| | issuedBefore  | ms   | Check domains issued before the given date in milliseconds                      | | ||||
| | expiresBefore | ms   | Check domains that expire before the given date in milliseconds                 | | ||||
| --> | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| <!-- | ||||
| 
 | ||||
| <details> | ||||
| <summary>Node.js</summary> | ||||
| --> | ||||
| 
 | ||||
| # Node | ||||
| 
 | ||||
| ```bash | ||||
| npm install --save @root/greenlock | ||||
| npm install --save greenlock-manager-fs | ||||
| npm install --save greenlock-store-fs | ||||
| npm install --save acme-http-01-standalone | ||||
| ``` | ||||
| 
 | ||||
| <!-- | ||||
| 
 | ||||
| TODO | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
| <summary>Express.js</summary> | ||||
| 
 | ||||
| ```js | ||||
| 'use strict'; | ||||
| 
 | ||||
| var Greenlock = require(@root/greenlock-express); | ||||
| 
 | ||||
| var greenlock = Greenlock.create({ | ||||
| // for security and critical bug notices | ||||
| maintainerEmail: 'jon@example.com' | ||||
| 
 | ||||
| // for | ||||
| maintainerNewsletter: true | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
| <summary>WebPack</summary> | ||||
| TODO | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
| <summary>VanillaJS for Browsers</summary> | ||||
| TODO | ||||
| </details> | ||||
| 
 | ||||
| --> | ||||
| 
 | ||||
| # HTTP-01 & DNS-01 Integrations | ||||
| 
 | ||||
| For Public Web Servers running on a VPS, the **default HTTP-01 challenge plugin** | ||||
| will work just fine for most people. | ||||
| 
 | ||||
| However, for | ||||
| 
 | ||||
| -   **Wildcard Certificates** | ||||
| -   **IoT Environments** | ||||
| -   **Enterprise On-Prem** | ||||
| -   **Private Networks** | ||||
| 
 | ||||
| Greenlock provides an easy way to integrate Let's Encrypt with your existing services | ||||
| through a variety of **DNS-01** infrastructure | ||||
| 
 | ||||
| Why | ||||
| Typically file propagation is faster and more reliably than DNS propagation. | ||||
| Therefore, http-01 will be preferred to dns-01 except when wildcards or **private domains** are in use. | ||||
| 
 | ||||
| http-01 will only be supplied as a defaut if no other challenge is provided. | ||||
| 
 | ||||
| You can use ACME (Let's Encrypt) with several ready-made integrations | ||||
| 
 | ||||
| # Ready-made Integrations | ||||
| 
 | ||||
| Greenlock Express integrates between Let's Encrypt's ACME Challenges and many popular services. | ||||
| 
 | ||||
| | Type        | Service                                                                             | Plugin                   | | ||||
| | ----------- | ----------------------------------------------------------------------------------- | ------------------------ | | ||||
| | dns-01      | CloudFlare                                                                          | acme-dns-01-cloudflare   | | ||||
| | dns-01      | [Digital Ocean](https://git.rootprojects.org/root/acme-dns-01-digitalocean.js)      | acme-dns-01-digitalocean | | ||||
| | dns-01      | [DNSimple](https://git.rootprojects.org/root/acme-dns-01-dnsimple.js)               | acme-dns-01-dnsimple     | | ||||
| | dns-01      | [DuckDNS](https://git.rootprojects.org/root/acme-dns-01-duckdns.js)                 | acme-dns-01-duckdns      | | ||||
| | http-01     | File System / [Web Root](https://git.rootprojects.org/root/acme-http-01-webroot.js) | acme-http-01-webroot     | | ||||
| | dns-01      | [GoDaddy](https://git.rootprojects.org/root/acme-dns-01-godaddy.js)                 | acme-dns-01-godaddy      | | ||||
| | dns-01      | [Gandi](https://git.rootprojects.org/root/acme-dns-01-gandi.js)                     | acme-dns-01-gandi        | | ||||
| | dns-01      | [NameCheap](https://git.rootprojects.org/root/acme-dns-01-namecheap.js)             | acme-dns-01-namecheap    | | ||||
| | dns-01      | [Name.com](https://git.rootprojects.org/root/acme-dns-01-namedotcom.js)         | acme-dns-01-namedotcom   | | ||||
| | dns-01      | Route53 (AWS)                                                                       | acme-dns-01-route53      | | ||||
| | http-01     | S3 (AWS, Digital Ocean, Scaleway)                                                   | acme-http-01-s3          | | ||||
| | dns-01      | [Vultr](https://git.rootprojects.org/root/acme-dns-01-vultr.js)                     | acme-dns-01-vultr        | | ||||
| | dns-01      | [Build your own](https://git.rootprojects.org/root/acme-dns-01-test.js)             | acme-dns-01-test         | | ||||
| | http-01     | [Build your own](https://git.rootprojects.org/root/acme-http-01-test.js)            | acme-http-01-test        | | ||||
| | tls-alpn-01 | [Contact us](mailto:support@therootcompany.com)                                     | -                        | | ||||
| 
 | ||||
| Search `acme-http-01-` or `acme-dns-01-` on npm to find more. | ||||
| 
 | ||||
| # Easy to Customize | ||||
| 
 | ||||
| <!-- greenlock-manager-test => greenlock-manager-custom --> | ||||
| @ -195,294 +485,7 @@ each domain before authorizing a certificate. | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| # JavaScript API | ||||
| 
 | ||||
| <!-- | ||||
| <details> | ||||
| <summary>Greenlock API (shared among JS implementations)</summary> | ||||
| --> | ||||
| 
 | ||||
| <details> | ||||
| <summary>Greenlock.create({ packageAgent, maintainerEmail, staging })</summary> | ||||
| 
 | ||||
| ### Greenlock.create() | ||||
| 
 | ||||
| Creates an instance of greenlock with _environment_-level values. | ||||
| 
 | ||||
| ```js | ||||
| 
 | ||||
| var pkg = require('./package.json'); | ||||
| var gl = Greenlock.create({ | ||||
|     // Staging for testing environments | ||||
|     staging: true, | ||||
| 
 | ||||
|     // This should be the contact who receives critical bug and security notifications | ||||
|     // Optionally, you may receive other (very few) updates, such as important new features | ||||
|     maintainerEmail: 'jon@example.com', | ||||
|     // for an RFC 8555 / RFC 7231 ACME client user agent | ||||
|     packageAgent: pkg.name + '/' pkg.version | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| | Parameter       | Description                                                                          | | ||||
| | --------------- | ------------------------------------------------------------------------------------ | | ||||
| | maintainerEmail | the developer contact for critical bug and security notifications                    | | ||||
| | packageAgent    | if you publish your package for others to use, `require('./package.json').name` here | | ||||
| | staging         | use the Let's Encrypt staging URL instead of the production URL                      | | ||||
| | directoryUrl    | for use with other (not Let's Encrypt) ACME services, and the Pebble test server     | | ||||
| 
 | ||||
| <!-- | ||||
| | maintainerUpdates         | (default: false) receive occasional non-critical notifications                                                                                             | | ||||
|     maintainerUpdates: true // default: false | ||||
| --> | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
| <summary>Greenlock#manager.defaults()</summary> | ||||
| 
 | ||||
| # Greenlock#manager.defaults() | ||||
| 
 | ||||
| Acts as a getter when given no arguments. | ||||
| 
 | ||||
| Otherwise sets default, site-wide values as described below. | ||||
| 
 | ||||
| ```js | ||||
| greenlock.manager.defaults({ | ||||
|     // The "Let's Encrypt Subscriber" (often the same as the maintainer) | ||||
|     // NOT the end customer (except where that is also the maintainer) | ||||
|     subscriberEmail: 'jon@example.com', | ||||
|     agreeToTerms: true | ||||
|     challenges: { | ||||
|       "http-01": { | ||||
|         module: "acme-http-01-webroot", | ||||
|         webroot: "/path/to/webroot" | ||||
|       } | ||||
|     } | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| | Parameter                 | Description                                                                                                                                                | | ||||
| | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||||
| | agreeToTerms              | (default: false) either 'true' or a function that presents the Terms of Service and returns it once accepted                                               | | ||||
| | challenges['http-01']     | provide an http-01 challenge module                                                                                                                        | | ||||
| | challenges['dns-01']      | provide a dns-01 challenge module                                                                                                                          | | ||||
| | challenges['tls-alpn-01'] | provide a tls-alpn-01 challenge module                                                                                                                     | | ||||
| | challenges[type].module   | the name of your challenge module                                                                                                                          | | ||||
| | challenges[type].xxxx     | module-specific options                                                                                                                                    | | ||||
| | servername                | the default servername to use for non-sni requests (many IoT clients)                                                                                      | | ||||
| | subscriberEmail           | the contact who agrees to the Let's Encrypt Subscriber Agreement and the Greenlock Terms of Service<br>this contact receives renewal failure notifications | | ||||
| | store                     | override the default storage module                                                                                                                        | | ||||
| | store.module              | the name of your storage module                                                                                                                            | | ||||
| | store.xxxx                | options specific to your storage module                                                                                                                    | | ||||
| 
 | ||||
| <!-- | ||||
| 
 | ||||
| | serverId        | an arbitrary name to distinguish this server within a cluster of servers | | ||||
| 
 | ||||
| --> | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
| <summary>Greenlock#add({ subject, altnames })</summary> | ||||
| 
 | ||||
| # Greenlock#add() | ||||
| 
 | ||||
| Greenlock is a **Management Environment**. | ||||
| 
 | ||||
| Once you add a "site", it will begin to automatically renew, immediately. | ||||
| 
 | ||||
| The certificates will provided to the `store` callbacks as soon as they are ready, and whenever they renew. | ||||
| Failure to renew will be reported to the `notify` callback. | ||||
| 
 | ||||
| You can also retrieve them one-off with `get`. | ||||
| 
 | ||||
| ```js | ||||
| gl.add({ | ||||
|     subject: 'example.com', | ||||
|     altnames: ['example.com', 'www.example.com', 'exampleapi.com'] | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| | Parameter       | Description                                                                                  | | ||||
| | --------------- | -------------------------------------------------------------------------------------------- | | ||||
| | subject         | the first domain on, and identifier of the certificate                                       | | ||||
| | altnames        | first domain, plus additional domains<br>note: the order should always be the same           | | ||||
| | subscriberEmail | if different from the default (i.e. multi-tenant, whitelabel)                                | | ||||
| | challenges      | (same as main config) use if this site needs to use non-default http-01 or dns-01 validation | | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
| <summary>Greenlock#get({ servername })</summary> | ||||
| 
 | ||||
| # Greenlock#get() | ||||
| 
 | ||||
| **Disclaimer**: This is only intended for testing, demos, and SNICallback | ||||
| (in [Greenlock Express](https://git.rootprojects.org/root/greenlock-express.js)). | ||||
| 
 | ||||
| Greenlock is intended to be left running to allow it to fetech and renew certifictates automatically. | ||||
| 
 | ||||
| It is intended that you use the `store` callbacks to new certificates instantly as soon as they renew. | ||||
| This also protects you from accidentally stampeding the Let's Encrypt API with hundreds (or thousands) | ||||
| of certificate requests. | ||||
| 
 | ||||
| -   [Store Callback Documentation](https://git.rootprojects.org/root/greenlock-store-test.js) | ||||
| 
 | ||||
| ```js | ||||
| return greenlock.get({ servername }).then(function(site) { | ||||
|     if (!site) { | ||||
|         console.log(servername + ' was not found in any site config'); | ||||
|         return; | ||||
|     } | ||||
| 
 | ||||
|     var privkey = site.pems.privkey; | ||||
|     var fullchain = site.pems.cert + '\n' + site.pems.chain + '\n'; | ||||
|     console.log(privkey); | ||||
|     console.log(fullchain); | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| | Parameter  | Description                                                   | | ||||
| | ---------- | ------------------------------------------------------------- | | ||||
| | servername | any altname listed on the certificate (including the subject) | | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
| <summary>Greenlock#renew()</summary> | ||||
| 
 | ||||
| # Greenlock#renew() | ||||
| 
 | ||||
| This will renew only domains that have reached their `renewAt` or are within the befault `renewOffset`. | ||||
| 
 | ||||
| **Note**: This runs at regular intervals, multiple times a day, in the background. | ||||
| You are not required to call it. If you implement the `store` callbacks, the certificates | ||||
| will automatically be saved (and if you don't implement them, they all get saved to disk). | ||||
| 
 | ||||
| ```js | ||||
| return greenlock.renew({}).then(function(results) { | ||||
|     results.forEach(function(site) { | ||||
|         if (site.error) { | ||||
|             console.error(site.subject, site.error); | ||||
|             return; | ||||
|         } | ||||
|         console.log('Renewed certificate for', site.subject, site.altnames); | ||||
|     }); | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| | Parameter   | Type | Description                                                                     | | ||||
| | ----------- | ---- | ------------------------------------------------------------------------------- | | ||||
| | (optional)  |      | ALL parameters are optional, but some should be paired                          | | ||||
| | force       | bool | force silly options, such as tiny durations                                     | | ||||
| | renewBefore | ms   | Check domains that are scheduled to renew before the given date in milliseconds | | ||||
| 
 | ||||
| <!-- | ||||
| | issuedBefore  | ms   | Check domains issued before the given date in milliseconds                      | | ||||
| | expiresBefore | ms   | Check domains that expire before the given date in milliseconds                 | | ||||
| --> | ||||
| 
 | ||||
| <!-- | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
| <summary>Node.js</summary> | ||||
| --> | ||||
| 
 | ||||
| # Node | ||||
| 
 | ||||
| ```bash | ||||
| npm install --save @root/greenlock | ||||
| npm install --save greenlock-manager-fs | ||||
| npm install --save greenlock-store-fs | ||||
| npm install --save acme-http-01-standalone | ||||
| ``` | ||||
| 
 | ||||
| <!-- | ||||
| 
 | ||||
| TODO | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
| <summary>Express.js</summary> | ||||
| 
 | ||||
| ```js | ||||
| 'use strict'; | ||||
| 
 | ||||
| var Greenlock = require(@root/greenlock-express); | ||||
| 
 | ||||
| var greenlock = Greenlock.create({ | ||||
| // for security and critical bug notices | ||||
| maintainerEmail: 'jon@example.com' | ||||
| 
 | ||||
| // for | ||||
| maintainerNewsletter: true | ||||
| }); | ||||
| ``` | ||||
| 
 | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
| <summary>WebPack</summary> | ||||
| TODO | ||||
| </details> | ||||
| 
 | ||||
| <details> | ||||
| <summary>VanillaJS for Browsers</summary> | ||||
| TODO | ||||
| </details> | ||||
| 
 | ||||
| --> | ||||
| 
 | ||||
| # HTTP-01 & DNS-01 Integrations | ||||
| 
 | ||||
| For Public Web Servers running on a VPS, the **default HTTP-01 challenge plugin** | ||||
| will work just fine for most people. | ||||
| 
 | ||||
| However, for | ||||
| 
 | ||||
| -   **Wildcard Certificates** | ||||
| -   **IoT Environments** | ||||
| -   **Enterprise On-Prem** | ||||
| -   **Private Networks** | ||||
| 
 | ||||
| Greenlock provides an easy way to integrate Let's Encrypt with your existing services | ||||
| through a variety of **DNS-01** infrastructure | ||||
| 
 | ||||
| Why | ||||
| Typically file propagation is faster and more reliably than DNS propagation. | ||||
| Therefore, http-01 will be preferred to dns-01 except when wildcards or **private domains** are in use. | ||||
| 
 | ||||
| http-01 will only be supplied as a defaut if no other challenge is provided. | ||||
| 
 | ||||
| You can use ACME (Let's Encrypt) with several ready-made integrations | ||||
| 
 | ||||
| # Ready-made Integrations | ||||
| 
 | ||||
| Greenlock Express integrates between Let's Encrypt's ACME Challenges and many popular services. | ||||
| 
 | ||||
| | Type        | Service                                                                             | Plugin                   | | ||||
| | ----------- | ----------------------------------------------------------------------------------- | ------------------------ | | ||||
| | dns-01      | CloudFlare                                                                          | acme-dns-01-cloudflare   | | ||||
| | dns-01      | [Digital Ocean](https://git.rootprojects.org/root/acme-dns-01-digitalocean.js)      | acme-dns-01-digitalocean | | ||||
| | dns-01      | [DNSimple](https://git.rootprojects.org/root/acme-dns-01-dnsimple.js)               | acme-dns-01-dnsimple     | | ||||
| | dns-01      | [DuckDNS](https://git.rootprojects.org/root/acme-dns-01-duckdns.js)                 | acme-dns-01-duckdns      | | ||||
| | http-01     | File System / [Web Root](https://git.rootprojects.org/root/acme-http-01-webroot.js) | acme-http-01-webroot     | | ||||
| | dns-01      | [GoDaddy](https://git.rootprojects.org/root/acme-dns-01-godaddy.js)                 | acme-dns-01-godaddy      | | ||||
| | dns-01      | [Gandi](https://git.rootprojects.org/root/acme-dns-01-gandi.js)                     | acme-dns-01-gandi        | | ||||
| | dns-01      | [NameCheap](https://git.rootprojects.org/root/acme-dns-01-namecheap.js)             | acme-dns-01-namecheap    | | ||||
| | dns-01      | [Name.com](https://git.rootprojects.org/root/acme-dns-01-namedotcom.js)         | acme-dns-01-namedotcom   | | ||||
| | dns-01      | Route53 (AWS)                                                                       | acme-dns-01-route53      | | ||||
| | http-01     | S3 (AWS, Digital Ocean, Scaleway)                                                   | acme-http-01-s3          | | ||||
| | dns-01      | [Vultr](https://git.rootprojects.org/root/acme-dns-01-vultr.js)                     | acme-dns-01-vultr        | | ||||
| | dns-01      | [Build your own](https://git.rootprojects.org/root/acme-dns-01-test.js)             | acme-dns-01-test         | | ||||
| | http-01     | [Build your own](https://git.rootprojects.org/root/acme-http-01-test.js)            | acme-http-01-test        | | ||||
| | tls-alpn-01 | [Contact us](mailto:support@therootcompany.com)                                     | -                        | | ||||
| 
 | ||||
| Search `acme-http-01-` or `acme-dns-01-` on npm to find more. | ||||
| 
 | ||||
| # Commercial Support | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user