https
express server läuft jetzt mit https
This commit is contained in:
79
express-server/node_modules/acme-v2/tests/cb.js
generated
vendored
Normal file
79
express-server/node_modules/acme-v2/tests/cb.js
generated
vendored
Normal file
@ -0,0 +1,79 @@
|
||||
'use strict';
|
||||
|
||||
module.exports.run = function run(directoryUrl, RSA, web, chType, email, accountKeypair, domainKeypair) {
|
||||
// [ 'test.ppl.family' ] 'coolaj86@gmail.com''http-01'
|
||||
var acme2 = require('../').ACME.create({ RSA: RSA });
|
||||
acme2.init(directoryUrl).then(function () {
|
||||
var options = {
|
||||
agreeToTerms: function (tosUrl, agree) {
|
||||
agree(null, tosUrl);
|
||||
}
|
||||
, setChallenge: function (opts, cb) {
|
||||
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("");
|
||||
|
||||
if ('http-01' === opts.type) {
|
||||
pathname = opts.hostname + acme2.challengePrefixes['http-01'] + "/" + 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.challengePrefixes['dns-01'] + "." + opts.hostname.replace(/^\*\./, '');
|
||||
console.log("Put the string '" + opts.dnsAuthorization + "' into the TXT record '" + pathname + "'");
|
||||
console.log("ddig TXT " + pathname + " '" + opts.dnsAuthorization + "'");
|
||||
} else {
|
||||
cb(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);
|
||||
cb();
|
||||
}
|
||||
|
||||
process.stdin.setRawMode(true);
|
||||
process.stdin.resume();
|
||||
process.stdin.on('data', onAny);
|
||||
}
|
||||
, removeChallenge: function (opts, cb) {
|
||||
// hostname, key
|
||||
console.log('[acme-v2] remove challenge', opts.hostname, opts.keyAuthorization);
|
||||
setTimeout(cb, 1 * 1000);
|
||||
}
|
||||
, challengeType: chType
|
||||
, email: email
|
||||
, accountKeypair: accountKeypair
|
||||
, domainKeypair: domainKeypair
|
||||
, domains: web
|
||||
};
|
||||
|
||||
acme2.accounts.create(options).then(function (account) {
|
||||
console.log('[acme-v2] account:');
|
||||
console.log(account);
|
||||
|
||||
acme2.certificates.create(options).then(function (fullchainPem) {
|
||||
console.log('[acme-v2] fullchain.pem:');
|
||||
console.log(fullchainPem);
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
68
express-server/node_modules/acme-v2/tests/compat.js
generated
vendored
Normal file
68
express-server/node_modules/acme-v2/tests/compat.js
generated
vendored
Normal file
@ -0,0 +1,68 @@
|
||||
'use strict';
|
||||
|
||||
module.exports.run = function (directoryUrl, RSA, web, chType, email, accountKeypair, domainKeypair) {
|
||||
console.log('[DEBUG] run', web, chType, email);
|
||||
|
||||
var acme2 = require('../compat.js').ACME.create({ RSA: RSA });
|
||||
acme2.getAcmeUrls(acme2.stagingServerUrl, function (err/*, directoryUrls*/) {
|
||||
if (err) { console.log('err 1'); throw err; }
|
||||
|
||||
var options = {
|
||||
agreeToTerms: function (tosUrl, agree) {
|
||||
agree(null, tosUrl);
|
||||
}
|
||||
, setChallenge: function (hostname, token, val, cb) {
|
||||
var pathname;
|
||||
|
||||
if ('http-01' === cb.type) {
|
||||
pathname = hostname + acme2.acmeChallengePrefix + token;
|
||||
console.log("Put the string '" + val /*keyAuthorization*/ + "' into a file at '" + pathname + "'");
|
||||
console.log("echo '" + val /*keyAuthorization*/ + "' > '" + pathname + "'");
|
||||
console.log("\nThen hit the 'any' key to continue...");
|
||||
} else if ('dns-01' === cb.type) {
|
||||
// forwards-backwards compat
|
||||
pathname = acme2.challengePrefixes['dns-01'] + "." + hostname.replace(/^\*\./, '');
|
||||
console.log("Put the string '" + cb.dnsAuthorization + "' into the TXT record '" + pathname + "'");
|
||||
console.log("dig TXT " + pathname + " '" + cb.dnsAuthorization + "'");
|
||||
console.log("\nThen hit the 'any' key to continue...");
|
||||
} else {
|
||||
cb(new Error("[acme-v2] unrecognized challenge type: " + cb.type));
|
||||
return;
|
||||
}
|
||||
|
||||
function onAny() {
|
||||
console.log("'any' key was hit");
|
||||
process.stdin.pause();
|
||||
process.stdin.removeListener('data', onAny);
|
||||
process.stdin.setRawMode(false);
|
||||
cb();
|
||||
}
|
||||
|
||||
process.stdin.setRawMode(true);
|
||||
process.stdin.resume();
|
||||
process.stdin.on('data', onAny);
|
||||
}
|
||||
, removeChallenge: function (hostname, key, cb) {
|
||||
console.log('[DEBUG] remove challenge', hostname, key);
|
||||
setTimeout(cb, 1 * 1000);
|
||||
}
|
||||
, challengeType: chType
|
||||
, email: email
|
||||
, accountKeypair: accountKeypair
|
||||
, domainKeypair: domainKeypair
|
||||
, domains: web
|
||||
};
|
||||
|
||||
acme2.registerNewAccount(options, function (err, account) {
|
||||
if (err) { console.log('err 2'); throw err; }
|
||||
if (options.debug) console.debug('account:');
|
||||
if (options.debug) console.log(account);
|
||||
|
||||
acme2.getCertificate(options, function (err, fullchainPem) {
|
||||
if (err) { console.log('err 3'); throw err; }
|
||||
console.log('[acme-v2] A fullchain.pem:');
|
||||
console.log(fullchainPem);
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
77
express-server/node_modules/acme-v2/tests/fullchain-formats.js
generated
vendored
Normal file
77
express-server/node_modules/acme-v2/tests/fullchain-formats.js
generated
vendored
Normal file
@ -0,0 +1,77 @@
|
||||
'use strict';
|
||||
|
||||
/*
|
||||
-----BEGIN CERTIFICATE-----LF
|
||||
xxxLF
|
||||
yyyLF
|
||||
-----END CERTIFICATE-----LF
|
||||
LF
|
||||
-----BEGIN CERTIFICATE-----LF
|
||||
xxxLF
|
||||
yyyLF
|
||||
-----END CERTIFICATE-----LF
|
||||
|
||||
Rules
|
||||
* Only Unix LF (\n) Line endings
|
||||
* Each PEM's lines are separated with \n
|
||||
* Each PEM ends with \n
|
||||
* Each PEM is separated with a \n (just like commas separating an array)
|
||||
*/
|
||||
|
||||
// https://github.com/certbot/certbot/issues/5721#issuecomment-402362709
|
||||
var expected = "----\nxxxx\nyyyy\n----\n\n----\nxxxx\nyyyy\n----\n";
|
||||
var tests = [
|
||||
"----\r\nxxxx\r\nyyyy\r\n----\r\n\r\n----\r\nxxxx\r\nyyyy\r\n----\r\n"
|
||||
, "----\r\nxxxx\r\nyyyy\r\n----\r\n----\r\nxxxx\r\nyyyy\r\n----\r\n"
|
||||
, "----\nxxxx\nyyyy\n----\n\n----\r\nxxxx\r\nyyyy\r\n----"
|
||||
, "----\nxxxx\nyyyy\n----\n----\r\nxxxx\r\nyyyy\r\n----"
|
||||
, "----\nxxxx\nyyyy\n----\n----\nxxxx\nyyyy\n----"
|
||||
, "----\nxxxx\nyyyy\n----\n----\nxxxx\nyyyy\n----\n"
|
||||
, "----\nxxxx\nyyyy\n----\n\n----\nxxxx\nyyyy\n----\n"
|
||||
, "----\nxxxx\nyyyy\n----\r\n----\nxxxx\ryyyy\n----\n"
|
||||
];
|
||||
|
||||
function formatPemChain(str) {
|
||||
return str.trim().replace(/[\r\n]+/g, '\n').replace(/\-\n\-/g, '-\n\n-') + '\n';
|
||||
}
|
||||
function splitPemChain(str) {
|
||||
return str.trim().split(/[\r\n]{2,}/g).map(function (str) {
|
||||
return str + '\n';
|
||||
});
|
||||
}
|
||||
|
||||
tests.forEach(function (str) {
|
||||
var actual = formatPemChain(str);
|
||||
if (expected !== actual) {
|
||||
console.error('input: ', JSON.stringify(str));
|
||||
console.error('expected:', JSON.stringify(expected));
|
||||
console.error('actual: ', JSON.stringify(actual));
|
||||
throw new Error("did not pass");
|
||||
}
|
||||
});
|
||||
|
||||
if (
|
||||
"----\nxxxx\nyyyy\n----\n"
|
||||
!==
|
||||
formatPemChain("\n\n----\r\nxxxx\r\nyyyy\r\n----\n\n")
|
||||
) {
|
||||
throw new Error("Not proper for single cert in chain");
|
||||
}
|
||||
|
||||
if (
|
||||
"--B--\nxxxx\nyyyy\n--E--\n\n--B--\nxxxx\nyyyy\n--E--\n\n--B--\nxxxx\nyyyy\n--E--\n"
|
||||
!==
|
||||
formatPemChain("\n\n\n--B--\nxxxx\nyyyy\n--E--\n\n\n\n--B--\nxxxx\nyyyy\n--E--\n\n\n--B--\nxxxx\nyyyy\n--E--\n\n\n")
|
||||
) {
|
||||
throw new Error("Not proper for three certs in chain");
|
||||
}
|
||||
|
||||
splitPemChain(
|
||||
"--B--\nxxxx\nyyyy\n--E--\n\n--B--\nxxxx\nyyyy\n--E--\n\n--B--\nxxxx\nyyyy\n--E--\n"
|
||||
).forEach(function (str) {
|
||||
if ("--B--\nxxxx\nyyyy\n--E--\n" !== str) {
|
||||
throw new Error("bad thingy");
|
||||
}
|
||||
});
|
||||
|
||||
console.info('PASS');
|
85
express-server/node_modules/acme-v2/tests/promise.js
generated
vendored
Normal file
85
express-server/node_modules/acme-v2/tests/promise.js
generated
vendored
Normal file
@ -0,0 +1,85 @@
|
||||
'use strict';
|
||||
|
||||
/* global Promise */
|
||||
module.exports.run = function run(directoryUrl, RSA, web, chType, email, accountKeypair, domainKeypair) {
|
||||
var acme2 = require('../').ACME.create({ RSA: RSA });
|
||||
// [ 'test.ppl.family' ] 'coolaj86@gmail.com''http-01'
|
||||
acme2.init(directoryUrl).then(function () {
|
||||
var options = {
|
||||
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("");
|
||||
|
||||
if ('http-01' === opts.type) {
|
||||
pathname = opts.hostname + acme2.challengePrefixes['http-01'] + "/" + 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.challengePrefixes['dns-01'] + "." + opts.hostname.replace(/^\*\./, '');
|
||||
console.log("Put the string '" + opts.dnsAuthorization + "' into the TXT record '" + pathname + "'");
|
||||
console.log("dig 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) {
|
||||
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: accountKeypair
|
||||
, domainKeypair: domainKeypair
|
||||
, domains: web
|
||||
};
|
||||
|
||||
acme2.accounts.create(options).then(function (account) {
|
||||
console.log('[acme-v2] account:');
|
||||
console.log(account);
|
||||
|
||||
acme2.certificates.create(options).then(function (fullchainPem) {
|
||||
console.log('[acme-v2] fullchain.pem:');
|
||||
console.log(fullchainPem);
|
||||
});
|
||||
});
|
||||
});
|
||||
};
|
Reference in New Issue
Block a user