forked from root/acme.js
		
	working even better
This commit is contained in:
		
							parent
							
								
									33e10c77d8
								
							
						
					
					
						commit
						7db66d710b
					
				@ -29,11 +29,12 @@ In progress
 | 
				
			|||||||
* Apr  5, 2018 - test subdomains and its wildcard
 | 
					* Apr  5, 2018 - test subdomains and its wildcard
 | 
				
			||||||
* Apr  5, 2018 - test http and dns challenges (success and failure)
 | 
					* Apr  5, 2018 - test http and dns challenges (success and failure)
 | 
				
			||||||
* Apr  5, 2018 - export http and dns challenge tests
 | 
					* Apr  5, 2018 - export http and dns challenge tests
 | 
				
			||||||
 | 
					* Apr 10, 2018 - tested backwards-compatibility using greenlock.js
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Todo
 | 
					Todo
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Apr  5, 2018 - appears that sometimes 'pending' status cannot be progressed to 'processing' nor 'deactivated'
 | 
					 | 
				
			||||||
* support ECDSA keys
 | 
					* support ECDSA keys
 | 
				
			||||||
 | 
					* Apr  5, 2018 - appears that sometimes 'pending' status cannot be progressed to 'processing' nor 'deactivated'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Let's Encrypt Directory URLs
 | 
					## Let's Encrypt Directory URLs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										26
									
								
								compat.js
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								compat.js
									
									
									
									
									
								
							@ -24,11 +24,30 @@ function create(deps) {
 | 
				
			|||||||
    acme2.accounts.create(options).then(resolveFn(cb), rejectFn(cb));
 | 
					    acme2.accounts.create(options).then(resolveFn(cb), rejectFn(cb));
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
  acme2.getCertificate = function (options, cb) {
 | 
					  acme2.getCertificate = function (options, cb) {
 | 
				
			||||||
    acme2.certificates.create(options).then(resolveFn(cb), rejectFn(cb));
 | 
					    options.agreeToTerms = options.agreeToTerms || function (tos) {
 | 
				
			||||||
 | 
					      return Promise.resolve(tos);
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    acme2.certificates.create(options).then(function (chainPem) {
 | 
				
			||||||
 | 
					      var privkeyPem = acme2.RSA.exportPrivatePem(options.domainKeypair);
 | 
				
			||||||
 | 
					      resolveFn(cb)({
 | 
				
			||||||
 | 
					        cert: chainPem.split(/[\r\n]{2,}/g)[0] + '\r\n'
 | 
				
			||||||
 | 
					      , privkey: privkeyPem 
 | 
				
			||||||
 | 
					      , chain: chainPem.split(/[\r\n]{2,}/g)[1] + '\r\n'
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }, rejectFn(cb));
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
  acme2.getAcmeUrls = function (options, cb) {
 | 
					  acme2.getAcmeUrls = function (options, cb) {
 | 
				
			||||||
    acme2.init(options).then(resolveFn(cb), rejectFn(cb));
 | 
					    acme2.init(options).then(resolveFn(cb), rejectFn(cb));
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					  acme2.getOptions = function () {
 | 
				
			||||||
 | 
					    var defs = {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    Object.keys(module.exports.defaults).forEach(function (key) {
 | 
				
			||||||
 | 
					      defs[key] = defs[deps] || module.exports.defaults[key];
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return defs;
 | 
				
			||||||
 | 
					  };
 | 
				
			||||||
  acme2.stagingServerUrl = module.exports.defaults.stagingServerUrl;
 | 
					  acme2.stagingServerUrl = module.exports.defaults.stagingServerUrl;
 | 
				
			||||||
  acme2.productionServerUrl = module.exports.defaults.productionServerUrl;
 | 
					  acme2.productionServerUrl = module.exports.defaults.productionServerUrl;
 | 
				
			||||||
  return acme2;
 | 
					  return acme2;
 | 
				
			||||||
@ -41,8 +60,9 @@ module.exports.defaults = {
 | 
				
			|||||||
, knownEndpoints:         [ 'keyChange', 'meta', 'newAccount', 'newNonce', 'newOrder', 'revokeCert' ]
 | 
					, knownEndpoints:         [ 'keyChange', 'meta', 'newAccount', 'newNonce', 'newOrder', 'revokeCert' ]
 | 
				
			||||||
, challengeTypes:         [ 'http-01', 'dns-01' ]
 | 
					, challengeTypes:         [ 'http-01', 'dns-01' ]
 | 
				
			||||||
, challengeType:          'http-01'
 | 
					, challengeType:          'http-01'
 | 
				
			||||||
, keyType:                'rsa' // ecdsa
 | 
					//, keyType:                'rsa' // ecdsa
 | 
				
			||||||
, keySize:                2048 // 256
 | 
					//, keySize:                2048 // 256
 | 
				
			||||||
 | 
					, rsaKeySize:             2048 // 256
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
Object.keys(module.exports.defaults).forEach(function (key) {
 | 
					Object.keys(module.exports.defaults).forEach(function (key) {
 | 
				
			||||||
  module.exports.ACME[key] = module.exports.defaults[key];
 | 
					  module.exports.ACME[key] = module.exports.defaults[key];
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										20
									
								
								node.js
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								node.js
									
									
									
									
									
								
							@ -452,6 +452,17 @@ ACME._getCertificate = function (me, options) {
 | 
				
			|||||||
    options.challengeTypes = [ options.challengeType ];
 | 
					    options.challengeTypes = [ options.challengeType ];
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (!me._kid) {
 | 
				
			||||||
 | 
					    if (options.accountKid) {
 | 
				
			||||||
 | 
					      me._kid = options.accountKid;
 | 
				
			||||||
 | 
					    } else {
 | 
				
			||||||
 | 
					      //return Promise.reject(new Error("must include KeyID"));
 | 
				
			||||||
 | 
					      return ACME._registerAccount(me, options).then(function () {
 | 
				
			||||||
 | 
					        return ACME._getCertificate(me, options);
 | 
				
			||||||
 | 
					      });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  if (me.debug) { console.log('[acme-v2] certificates.create'); }
 | 
					  if (me.debug) { console.log('[acme-v2] certificates.create'); }
 | 
				
			||||||
  return ACME._getNonce(me).then(function () {
 | 
					  return ACME._getNonce(me).then(function () {
 | 
				
			||||||
    var body = {
 | 
					    var body = {
 | 
				
			||||||
@ -491,7 +502,9 @@ ACME._getCertificate = function (me, options) {
 | 
				
			|||||||
      //console.log('[DEBUG] finalize:', me._finalize); return;
 | 
					      //console.log('[DEBUG] finalize:', me._finalize); return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      if (!me._authorizations) {
 | 
					      if (!me._authorizations) {
 | 
				
			||||||
        console.error("[acme-v2.js] authorizations were not fetched");
 | 
					        console.error("[acme-v2.js] authorizations were not fetched:");
 | 
				
			||||||
 | 
					        console.error(resp.body);
 | 
				
			||||||
 | 
					        return Promise.reject(new Error("authorizations were not fetched"));
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      if (me.debug) { console.log("47 &#&#&#&#&#&#&&##&#&#&#&#&#&#&#&"); }
 | 
					      if (me.debug) { console.log("47 &#&#&#&#&#&#&&##&#&#&#&#&#&#&#&"); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -534,7 +547,10 @@ ACME._getCertificate = function (me, options) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        return ACME._finalizeOrder(me, options, validatedDomains);
 | 
					        return ACME._finalizeOrder(me, options, validatedDomains);
 | 
				
			||||||
      }).then(function () {
 | 
					      }).then(function () {
 | 
				
			||||||
 | 
					        console.log('acme-v2: order was finalized');
 | 
				
			||||||
        return me._request({ method: 'GET', url: me._certificate, json: true }).then(function (resp) {
 | 
					        return me._request({ method: 'GET', url: me._certificate, json: true }).then(function (resp) {
 | 
				
			||||||
 | 
					          console.log('acme-v2: csr submitted and cert received:');
 | 
				
			||||||
 | 
					          console.log(resp.body);
 | 
				
			||||||
          return resp.body;
 | 
					          return resp.body;
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
      });
 | 
					      });
 | 
				
			||||||
@ -544,6 +560,8 @@ ACME._getCertificate = function (me, options) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
ACME.create = function create(me) {
 | 
					ACME.create = function create(me) {
 | 
				
			||||||
  if (!me) { me = {}; }
 | 
					  if (!me) { me = {}; }
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  me.debug = true;
 | 
				
			||||||
  me.acmeChallengePrefix = ACME.acmeChallengePrefix;
 | 
					  me.acmeChallengePrefix = ACME.acmeChallengePrefix;
 | 
				
			||||||
  me.acmeChallengeDnsPrefix = ACME.acmeChallengeDnsPrefix;
 | 
					  me.acmeChallengeDnsPrefix = ACME.acmeChallengeDnsPrefix;
 | 
				
			||||||
  me.acmeChallengePrefixes = ACME.acmeChallengePrefixes;
 | 
					  me.acmeChallengePrefixes = ACME.acmeChallengePrefixes;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user