2016-08-09 13:05:36 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								[](https://gitter.im/Daplie/letsencrypt-express?utm_source=badge& utm_medium=badge& utm_campaign=pr-badge& utm_content=badge)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| [letsencrypt ](https://github.com/Daplie/node-letsencrypt ) (library)
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| [letsencrypt-cli ](https://github.com/Daplie/letsencrypt-cli )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| [letsencrypt-express ](https://github.com/Daplie/letsencrypt-express )
							 
						 
					
						
							
								
									
										
										
										
											2016-08-17 23:00:23 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								| [letsencrypt-cluster ](https://github.com/Daplie/letsencrypt-cluster )
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 13:05:36 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								| [letsencrypt-koa ](https://github.com/Daplie/letsencrypt-koa )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								| [letsencrypt-hapi ](https://github.com/Daplie/letsencrypt-hapi )
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								|
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 21:24:15 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# le-challenge-webroot
  
						 
					
						
							
								
									
										
										
										
											2016-08-05 03:54:57 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-10-12 16:51:41 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								An fs-based strategy for node-letsencrypt for setting, retrieving,
							 
						 
					
						
							
								
									
										
										
										
											2016-08-05 03:54:57 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								and clearing ACME challenges issued by the ACME server
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								This places the acme challenge in an appropriate directory in the specified `webrootPath` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								and removes it once the challenge has either completed or failed.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  Safe to use with node cluster 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  Safe to use with ephemeral services (Heroku, Joyent, etc) 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Install
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								npm install --save le-challenge-fs@2 .x
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								Usage
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								-----
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```bash
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var leChallenge = require('le-challenge-fs').create({
							 
						 
					
						
							
								
									
										
										
										
											2016-10-12 16:51:41 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								  webrootPath: '~/letsencrypt/srv/www/:hostname/.well-known/acme-challenge'   // defaults to os.tmpdir()
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								, loopbackPort: 5001                                                          // defaults to 80
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								, loopbackTimeout: 3000                                                       // defaults to 3000ms
							 
						 
					
						
							
								
									
										
										
										
											2016-08-05 03:54:57 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								, debug: false
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								});
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								var LE = require('letsencrypt');
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								LE.create({
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								  server: LE.stagingServerUrl                               // Change to LE.productionServerUrl in production
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								, challenge: leChallenge
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								});
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								```
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 13:05:36 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								NOTE: If you request a certificate with 6 domains listed,
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								it will require 6 individual challenges.
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-05 03:54:57 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								Exposed Methods
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								---------------
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								For ACME Challenge:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2016-08-09 13:05:36 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  `set(opts, domain, key, val, done)`  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  `get(defaults, domain, key, done)`  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  `remove(defaults, domain, key, done)`  
						 
					
						
							
								
									
										
										
										
											2016-08-05 03:54:57 -04:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								For node-letsencrypt internals:
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  `getOptions()`  returns the internal defaults merged with the user-supplied options 
						 
					
						
							
								
									
										
										
										
											2016-10-14 09:50:27 -06:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								*  `loopback(defaults, domain, key, done)`  is like get, but tests externally 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								*  `test(defaults, domain, key, value, done)`  tests `set` , `loopback` , and `remove`  so we can be reasonably sure that the ACME server's challenge server will succeed