forked from root/acme.js
yay for promise-only tests working
This commit is contained in:
parent
ef0505ed69
commit
f486bca73e
|
@ -23,10 +23,11 @@ In progress
|
|||
* Mar 20, 2018 - SUCCESS - got a test certificate (hard-coded)
|
||||
* Mar 21, 2018 - can now accept values (not hard coded)
|
||||
* Mar 21, 2018 - *mostly* matches le-acme-core.js API
|
||||
* Apr 5, 2018 - completely match api for acme v1 (le-acme-core.js)
|
||||
|
||||
Todo
|
||||
|
||||
* completely match api for acme v1 (le-acme-core.js)
|
||||
* test wildcard
|
||||
* test http and dns challenges
|
||||
* export http and dns challenge tests
|
||||
* support ECDSA keys
|
||||
|
|
|
@ -35,7 +35,7 @@ module.exports.run = function run(web, chType, email, accountKeypair, domainKeyp
|
|||
console.log("Put the string '" + opts.keyAuthorization + "' into a file at '" + pathname + "'");
|
||||
console.log("echo '" + opts.keyAuthorization + "' > '" + pathname + "'");
|
||||
} else if ('dns-01' === opts.type) {
|
||||
pathname = acme2.acmeChallengeDnsPrefix + "." + opts.hostname;
|
||||
pathname = acme2.acmeChallengeDnsPrefix + "." + opts.hostname.replace(/^\*\./, '');
|
||||
console.log("Put the string '" + opts.dnsAuthorization + "' into the TXT record '" + pathname + "'");
|
||||
console.log("ddig TXT " + pathname + " '" + opts.dnsAuthorization + "'");
|
||||
} else {
|
||||
|
|
4
test.js
4
test.js
|
@ -39,8 +39,8 @@ function getEmail(web, chType) {
|
|||
var accountKeypair = RSA.import({ privateKeyPem: require('fs').readFileSync(__dirname + '/account.privkey.pem') });
|
||||
var domainKeypair = RSA.import({ privateKeyPem: require('fs').readFileSync(__dirname + '/privkey.pem') });
|
||||
//require('./test.compat.js').run(web, chType, email, accountKeypair, domainKeypair);
|
||||
require('./test.cb.js').run(web, chType, email, accountKeypair, domainKeypair);
|
||||
//require('./test.promise.js').run(web, chType, email, accountKeypair, domainKeypair);
|
||||
//require('./test.cb.js').run(web, chType, email, accountKeypair, domainKeypair);
|
||||
require('./test.promise.js').run(web, chType, email, accountKeypair, domainKeypair);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
103
test.promise.js
103
test.promise.js
|
@ -1,82 +1,85 @@
|
|||
'use strict';
|
||||
|
||||
/* global Promise */
|
||||
|
||||
module.exports.run = function run(web, chType, email) {
|
||||
module.exports.run = function run(web, chType, email, accountKeypair, domainKeypair) {
|
||||
var RSA = require('rsa-compat').RSA;
|
||||
var directoryUrl = 'https://acme-staging-v02.api.letsencrypt.org/directory';
|
||||
var acme2 = require('./compat').ACME.create({ RSA: RSA });
|
||||
var acme2 = require('./').ACME.create({ RSA: RSA });
|
||||
// [ 'test.ppl.family' ] 'coolaj86@gmail.com''http-01'
|
||||
console.log(web, chType, email);
|
||||
return;
|
||||
acme2.init(directoryUrl).then(function (body) {
|
||||
console.log(body);
|
||||
return;
|
||||
|
||||
acme2.init(directoryUrl).then(function () {
|
||||
var options = {
|
||||
agreeToTerms: function (tosUrl, agree) {
|
||||
agree(null, tosUrl);
|
||||
agreeToTerms: function (tosUrl) {
|
||||
return Promise.resolve(tosUrl);
|
||||
}
|
||||
, setChallenge: function (opts) {
|
||||
return new Promise(function (resolve, reject) {
|
||||
var pathname;
|
||||
|
||||
console.log("");
|
||||
console.log('identifier:');
|
||||
console.log(opts.identifier);
|
||||
console.log('hostname:');
|
||||
console.log(opts.hostname);
|
||||
console.log('type:');
|
||||
console.log(opts.type);
|
||||
console.log('token:');
|
||||
console.log(opts.token);
|
||||
console.log('thumbprint:');
|
||||
console.log(opts.thumbprint);
|
||||
console.log('keyAuthorization:');
|
||||
console.log(opts.keyAuthorization);
|
||||
console.log('dnsAuthorization:');
|
||||
console.log(opts.dnsAuthorization);
|
||||
console.log("");
|
||||
console.log("");
|
||||
console.log('identifier:');
|
||||
console.log(opts.identifier);
|
||||
console.log('hostname:');
|
||||
console.log(opts.hostname);
|
||||
console.log('type:');
|
||||
console.log(opts.type);
|
||||
console.log('token:');
|
||||
console.log(opts.token);
|
||||
console.log('thumbprint:');
|
||||
console.log(opts.thumbprint);
|
||||
console.log('keyAuthorization:');
|
||||
console.log(opts.keyAuthorization);
|
||||
console.log('dnsAuthorization:');
|
||||
console.log(opts.dnsAuthorization);
|
||||
console.log("");
|
||||
|
||||
console.log("Put the string '" + opts.keyAuthorization + "' into a file at '" + opts.hostname + "/" + opts.token + "'");
|
||||
console.log("\nThen hit the 'any' key to continue (must be specifically the 'any' key)...");
|
||||
|
||||
return new Promise(function (resolve) {
|
||||
function onAny() {
|
||||
process.stdin.pause();
|
||||
process.stdin.removeEventListener('data', onAny);
|
||||
process.stdin.setRawMode(false);
|
||||
|
||||
resolve();
|
||||
if ('http-01' === opts.type) {
|
||||
pathname = opts.hostname + acme2.acmeChallengePrefix + "/" + opts.token;
|
||||
console.log("Put the string '" + opts.keyAuthorization + "' into a file at '" + pathname + "'");
|
||||
console.log("echo '" + opts.keyAuthorization + "' > '" + pathname + "'");
|
||||
} else if ('dns-01' === opts.type) {
|
||||
pathname = acme2.acmeChallengeDnsPrefix + "." + opts.hostname.replace(/^\*\./, '');;
|
||||
console.log("Put the string '" + opts.dnsAuthorization + "' into the TXT record '" + pathname + "'");
|
||||
console.log("ddig TXT " + pathname + " '" + opts.dnsAuthorization + "'");
|
||||
} else {
|
||||
reject(new Error("[acme-v2] unrecognized challenge type"));
|
||||
return;
|
||||
}
|
||||
console.log("\nThen hit the 'any' key to continue...");
|
||||
|
||||
function onAny() {
|
||||
console.log("'any' key was hit");
|
||||
process.stdin.pause();
|
||||
process.stdin.removeListener('data', onAny);
|
||||
process.stdin.setRawMode(false);
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
|
||||
process.stdin.setRawMode(true);
|
||||
process.stdin.resume();
|
||||
process.stdin.on('data', onAny);
|
||||
});
|
||||
}
|
||||
, removeChallenge: function (opts) {
|
||||
// hostname, key
|
||||
console.log('[DEBUG] remove challenge', opts.hostname, opts.keyAuthorization);
|
||||
console.log("Remove the file '" + opts.hostname + "/" + opts.token + "'");
|
||||
|
||||
console.log('[acme-v2] remove challenge', opts.hostname, opts.keyAuthorization);
|
||||
return new Promise(function (resolve) {
|
||||
// hostname, key
|
||||
setTimeout(resolve, 1 * 1000);
|
||||
});
|
||||
}
|
||||
, challengeType: chType
|
||||
, email: email
|
||||
, accountKeypair: RSA.import({ privateKeyPem: require('fs').readFileSync(__dirname + '/account.privkey.pem') })
|
||||
, domainKeypair: RSA.import({ privateKeyPem: require('fs').readFileSync(__dirname + '/privkey.pem') })
|
||||
, accountKeypair: accountKeypair
|
||||
, domainKeypair: domainKeypair
|
||||
, domains: web
|
||||
};
|
||||
|
||||
acme2.registerNewAccount(options).then(function (account) {
|
||||
console.log('account:');
|
||||
acme2.accounts.create(options).then(function (account) {
|
||||
console.log('[acme-v2] account:');
|
||||
console.log(account);
|
||||
|
||||
acme2.getCertificate(options, function (fullchainPem) {
|
||||
console.log('[acme-v2] A fullchain.pem:');
|
||||
console.log(fullchainPem);
|
||||
}).then(function (fullchainPem) {
|
||||
console.log('[acme-v2] B fullchain.pem:');
|
||||
acme2.certificates.create(options).then(function (fullchainPem) {
|
||||
console.log('[acme-v2] fullchain.pem:');
|
||||
console.log(fullchainPem);
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue