65 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
'use strict';
 | 
						|
 | 
						|
//var le = require('letsencrypt');
 | 
						|
var LE = require('../');
 | 
						|
var db = {};
 | 
						|
 | 
						|
var config = {
 | 
						|
  server: LE.stagingServerUrl                               // or LE.productionServerUrl
 | 
						|
 | 
						|
, configDir: require('homedir')() + '/letsencrypt/etc'      // or /etc/letsencrypt or wherever
 | 
						|
 | 
						|
, privkeyPath: ':config/live/:hostname/privkey.pem'         //
 | 
						|
, fullchainPath: ':config/live/:hostname/fullchain.pem'     // Note: both that :config and :hostname
 | 
						|
, certPath: ':config/live/:hostname/cert.pem'               //       will be templated as expected
 | 
						|
, chainPath: ':config/live/:hostname/chain.pem'             //
 | 
						|
 | 
						|
, rsaKeySize: 2048
 | 
						|
 | 
						|
, debug: true
 | 
						|
};
 | 
						|
 | 
						|
var handlers = {
 | 
						|
  setChallenge: function (opts, hostname, key, val, cb) {   // called during the ACME server handshake, before validation
 | 
						|
    db[key] = {
 | 
						|
      hostname: hostname
 | 
						|
    , key: key
 | 
						|
    , val: val
 | 
						|
    };
 | 
						|
 | 
						|
    cb(null);
 | 
						|
  }
 | 
						|
, removeChallenge: function (opts, hostname, key, cb) {     // called after validation on both success and failure
 | 
						|
    db[key] = null;
 | 
						|
    cb(null);
 | 
						|
  }
 | 
						|
, getChallenge: function (opts, hostname, key, cb) {        // this is special because it is called by the webserver
 | 
						|
    cb(null, db[key].val);                                  // (see letsencrypt-cli/bin & letsencrypt-express/standalone),
 | 
						|
                                                            // not by the library itself
 | 
						|
  }
 | 
						|
, agreeToTerms: function (tosUrl, cb) {                     // gives you an async way to expose the legal agreement
 | 
						|
    cb(null, tosUrl);                                       // (terms of use) to your users before accepting
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
var le = LE.create(config, handlers);
 | 
						|
                                                            // checks :conf/renewal/:hostname.conf
 | 
						|
le.register({                                               // and either renews or registers
 | 
						|
  domains: ['example.com']                                  // CHANGE TO YOUR DOMAIN
 | 
						|
, email: 'user@email.com'                                   // CHANGE TO YOUR EMAIL
 | 
						|
, agreeTos: false                                           // set to true to automatically accept an agreement
 | 
						|
                                                            // which you have pre-approved (not recommended)
 | 
						|
, rsaKeySize: 2048
 | 
						|
}, function (err) {
 | 
						|
  if (err) {
 | 
						|
    // Note: you must have a webserver running
 | 
						|
    // and expose handlers.getChallenge to it
 | 
						|
    // in order to pass validation
 | 
						|
    // See letsencrypt-cli and or letsencrypt-express
 | 
						|
    console.error('[Error]: node-letsencrypt/examples/standalone');
 | 
						|
    console.error(err.stack);
 | 
						|
  } else {
 | 
						|
    console.log('success');
 | 
						|
  }
 | 
						|
});
 |