2019-10-21 20:18:16 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# @root/greenlock
  
						 
					
						
							
								
									
										
										
										
											2019-10-16 00:26:05 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-20 02:51:19 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								🔐 Free SSL, Free Wildcard SSL, and Fully Automated HTTPS for Node.js and Browsers, issued by Let's Encrypt v2 via ACME
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:18:16 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Greenlock™  is the easiest way to integrate Let's Encrypt into your projects, products, and infrastructure.
							 
						 
					
						
							
								
									
										
										
										
											2019-10-20 02:51:19 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:18:16 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-    [x] **Wildcard**  Certificates 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-    [x] **IoT**  Environments 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-    [x] **Enterprise**  and **On-Prem**  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-    [x] **Private**  Networks 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-    [x] **Localhost**  Development 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-    [x] **Web Hosting**  Providers 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-    [x] **Commercial**  support 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								We've built it simple enough for Hobbyists, and robust enough for the Enterprise.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:30:57 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<!-- 
  
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:18:16 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# Localhost Development
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< details >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< summary > HTTPS on Localhost< / summary >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TODO
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / details >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# WebServer with Automatic HTTPS
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< details >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< summary > Learn more about the Greenlock Web Server< / summary >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TODO
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / details >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# Commandline
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< details >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< summary > Learn more about the Greenlock CLI< / summary >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TODO
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / details >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:30:57 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-->
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:18:16 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# JavaScript Library
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< details >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< summary > Greenlock API (shared among JS implementations)< / summary >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Instantiate
  
						 
					
						
							
								
									
										
										
										
											2019-10-20 02:51:19 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:18:16 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// Creates an instance of greenlock with certain default values
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								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',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									maintainerUpdates: true, // default: false
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									// 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 // default: false
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								});
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 04:38:05 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								| Parameter                 | Description                                                                                                                                                |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| ------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| servername                | the default servername to use for non-sni requests (many IoT clients)                                                                                      |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| maintainerEmail           | the developer contact for critical bug and security notifications                                                                                          |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| maintainerUpdates         | (default: false) receive occasional non-critical notifications                                                                                             |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| maintainerPackage         | if you publish your package for others to use, `require('./package.json').name`  here                                                                       |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| maintainerPackageVersion  | if you publish your package for others to use, `require('./package.json').version`  here                                                                    |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| 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 |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| agreeToTerms              | (default: false) either 'true' or a function that presents the Terms of Service and returns it once accepted                                               |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| store                     | override the default storage module                                                                                                                        |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| store.module              | the name of your storage module                                                                                                                            |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| store.xxxx                | options specific to your storage module                                                                                                                    |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| 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                                                                                                                                    |
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:18:16 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Add Approved Domains
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								gl.add({
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									subject: 'example.com',
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									altnames: ['example.com', 'www.example.com', 'exampleapi.com']
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								});
							 
						 
					
						
							
								
									
										
										
										
											2019-10-20 02:51:19 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:18:16 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| 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)                      |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| agreeToTerms    | if subscriber is different from the default                                        |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### Issue and Renew Certificates
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								This will renew only domains that have reached their `renewAt`  or are within the befault `renewOffset` .
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```js
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								return greenlock
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									.renew()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									.then(function(pems) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										console.info(pems);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									})
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									.then(function(results) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										results.forEach(function(site) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if (site.error) {
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												console.error(site.subject, site.error);
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return;
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											}
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										});
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									});
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| Parameter  | Type | Description                                                |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| ---------- | ---- | ---------------------------------------------------------- |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| (optional) | -    | ALL parameters are optional, but some should be paired     |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| force      | bool | force silly options, such as tiny durations                |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| duplicate  | bool | force the domain to renew, regardless of age or expiration |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								<!-- 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| servername  | string< br > hostname   | renew the certificate that has this domain in its altnames (for ServerName Indication / SNI lookup) |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| renewOffset | string< br > + duration | renew domains that have been **issued**  after the given duration. ex: '45d' (45 days _after_ )       |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| renewOffset | string< br > - duration | renew domains, by this duration, before they **expire** . ex: '-3w' (3 weeks _before_ )               |
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-->
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Note: only previous approved domains (via `gl.add()` ) may be renewed
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Note: this will NOT throw an **error** . It will return an array of certifates or errors.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								### More
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TODO
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / details >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< details >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< summary > Node.js< / summary >  
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:30:57 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:18:16 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								npm install --save @root/greenlock 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 04:38:05 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								npm install --save greenlock-manager-fs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								npm install --save greenlock-store-fs
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								npm install --save acme-http-01-standalone
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:30:57 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:18:16 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-27 04:38:05 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								<!-- 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:18:16 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								TODO
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / details >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< details >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< summary > Express.js< / summary >  
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:30:57 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:18:16 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								```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
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								});
							 
						 
					
						
							
								
									
										
										
										
											2019-10-20 02:51:19 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:30:57 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< / details >  
						 
					
						
							
								
									
										
										
										
											2019-10-20 02:51:19 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:18:16 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< details >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< summary > WebPack< / summary >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TODO
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / details >  
						 
					
						
							
								
									
										
										
										
											2019-10-20 02:51:19 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:18:16 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								< details >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< summary > VanillaJS for Browsers< / summary >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								TODO
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								< / details >  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:30:57 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-->
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:18:16 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# 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
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-10-21 20:30:57 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								-    [x] DNS-01 Challenges 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -    CloudFlare
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -    [Digital Ocean ](https://git.rootprojects.org/root/acme-dns-01-digitalocean.js )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -    [DNSimple ](https://git.rootprojects.org/root/acme-dns-01-dnsimple.js )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -    [DuckDNS ](https://git.rootprojects.org/root/acme-dns-01-duckdns.js )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -    [GoDaddy ](https://git.rootprojects.org/root/acme-dns-01-godaddy.js )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -    [Gandi ](https://git.rootprojects.org/root/acme-dns-01-gandi.js )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -    [NameCheap ](https://git.rootprojects.org/root/acme-dns-01-namecheap.js )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -    [Name.com ](https://git.rootprojects.org/root/acme-dns-01-namedotcom.js )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -    Route53 (AWS)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -    [Vultr ](https://git.rootprojects.org/root/acme-dns-01-vultr.js )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -    Build your own
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-    [x] HTTP-01 Challenges 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -    [In-Memory ](https://git.rootprojects.org/root/acme-http-01-standalone.js ) (Standalone)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -    [FileSystem ](https://git.rootprojects.org/root/acme-http-01-webroot.js ) (WebRoot)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -    S3 (AWS, Digital Ocean, etc)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-    [x] TLS-ALPN-01 Challenges 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								    -    Contact us to learn about Greenlock Pro