95 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # letiny
 | |
| Tiny acme client library and CLI to obtain ssl certificates (without using external commands like openssl).
 | |
| 
 | |
| 
 | |
| ## Usage:
 | |
| `npm install letiny`
 | |
| 
 | |
| 
 | |
| ### Using the "webroot" option
 | |
| This will create a file in `/var/www/example.com/.well-known/acme-challenge/` to verify the domain.
 | |
| ```js
 | |
| require('letiny').getCert({
 | |
|   email:'me@example.com',
 | |
|   domains:['example.com', 'www.example.com'],
 | |
|   webroot:'/var/www/example.com',
 | |
|   certFile:'./cert.pem',
 | |
|   keyFile:'./key.pem',
 | |
|   caFile:'./ca.pem',
 | |
|   agreeTerms:true
 | |
| }, function(err, cert, key, cacert) {
 | |
|   console.log(err || cert+'\n'+key+'\n'+cacert);
 | |
| });
 | |
| ```
 | |
| 
 | |
| ### Using the "challenge" option
 | |
| This allows you to provide the challenge data on your own, so you can obtain certificates on-the-fly within your software.
 | |
| ```js
 | |
| require('letiny').getCert({
 | |
|   email:'me@example.com',
 | |
|   domains:'example.com',
 | |
|   challenge:function(domain, path, data, done) {
 | |
|     // make http://+domain+path serving "data"
 | |
|     done();
 | |
|   },
 | |
|   certFile:'./cert.pem',
 | |
|   keyFile:'./key.pem',
 | |
|   caFile:'./ca.pem',
 | |
|   agreeTerms:true
 | |
| }, function(err, cert, key, cacert) {
 | |
|   console.log(err || cert+'\n'+key+'\n'+cacert);
 | |
| });
 | |
| ```
 | |
| 
 | |
| ### Options
 | |
| #### Required:
 | |
|  * `email`: Your email adress
 | |
|  * `domains`: Comma seperated string or array
 | |
|  * `agreeTerms`: You need to agree the terms
 | |
|  * `webroot` (string) or `challenge` (function)
 | |
| 
 | |
| #### Optional:
 | |
|  * `certFile`: Path to save certificate
 | |
|  * `keyFile`: Path to save private key
 | |
|  * `caFile`: Path to save issuer certificate
 | |
|  * `pfxFile`: Path to save PKCS#12 certificate
 | |
|  * `pfxPassword`: Password for PKCS#12 certificate
 | |
|  * `aes`: (boolean), use AES instead of 3DES for PKCS#12 certificate
 | |
|  * `newReg`: URL, use *https://acme-staging.api.letsencrypt.org/acme/new-reg* for testing
 | |
| 
 | |
| 
 | |
| ## Command line interface
 | |
| ```sudo npm install letiny -g```
 | |
| #### Options:
 | |
| ```
 | |
| -h, --help               output usage information
 | |
| -e, --email <email>      your email address
 | |
| -w, --webroot <path>     path for webroot verification
 | |
| -m, --manual             use manual verification
 | |
| -d, --domains <domains>  domains (comma seperated)
 | |
| -c, --cert <path>        path to save your certificate (cert.pem)
 | |
| -k, --key <path>         path to save your private key (privkey.pem)
 | |
| -i, --ca <path>          path to save issuer certificate (cacert.pem)
 | |
| --pfx <path>             path to save PKCS#12 certificate (optional)
 | |
| --password <password>    password for PKCS#12 certificate (optional)
 | |
| --aes                    use AES instead of 3DES for PKCS#12
 | |
| --agree                  agree terms of the ACME CA (required)
 | |
| --newreg <URL>           optional AMCE server newReg URL
 | |
| --debug                  print debug information
 | |
| ```
 | |
| When --pfx is used without --cert, --key and --ca no .pem files will be created.
 | |
| 
 | |
| #### Examples:
 | |
| ```
 | |
| letiny -e me@example.com -w /var/www/example.com -d example.com --agree
 | |
| letiny -e me@example.com -m -d example.com -c cert.pem -k key.pem -i ca.pem --agree
 | |
| letiny -e me@example.com -m -d example.com,www.example.com --agree
 | |
| letiny -e me@example.com -m -d example.com --pfx cert.pfx --password secret --agree
 | |
| letiny --email me@example.com --webroot ./ --domains example.com --agree
 | |
| ```
 | |
| 
 | |
| 
 | |
| ## Licence
 | |
| MPL 2.0
 | |
| 
 |