AJ ONeal
5 years ago
8 changed files with 481 additions and 323 deletions
@ -1,32 +1,17 @@ |
|||
.env |
|||
|
|||
*.pem |
|||
letsencrypt.work |
|||
letsencrypt.logs |
|||
letsencrypt.config |
|||
|
|||
# Logs |
|||
logs |
|||
*.log |
|||
|
|||
# Runtime data |
|||
pids |
|||
*.pid |
|||
*.seed |
|||
|
|||
# Directory for instrumented libs generated by jscoverage/JSCover |
|||
lib-cov |
|||
|
|||
# Coverage directory used by tools like istanbul |
|||
coverage |
|||
|
|||
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) |
|||
.grunt |
|||
|
|||
# node-waf configuration |
|||
.lock-wscript |
|||
|
|||
# Compiled binary addons (http://nodejs.org/api/addons.html) |
|||
build/Release |
|||
|
|||
# Dependency directory |
|||
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git |
|||
node_modules |
|||
|
@ -0,0 +1,69 @@ |
|||
(function(exports) { |
|||
'use strict'; |
|||
|
|||
// node[0] ./test.js[1] jon.doe@gmail.com[2] example.com,*.example.com[3] xxxxxx[4]
|
|||
var email = process.argv[2] || process.env.ACME_EMAIL; |
|||
var domains = (process.argv[3] || process.env.ACME_DOMAINS).split(/[,\s]+/); |
|||
var token = process.argv[4] || process.env.DIGITALOCEAN_API_KEY; |
|||
|
|||
// git clone https://git.rootprojects.org/root/acme-dns-01-digitalocean.js node_modules/acme-dns-01-digitalocean
|
|||
var dns01 = require('acme-dns-01-digitalocean').create({ |
|||
//baseUrl: 'https://api.digitalocean.com/v2/domains',
|
|||
token: token |
|||
}); |
|||
|
|||
// This will be replaced with Keypairs.js in the next version
|
|||
var promisify = require('util').promisify; |
|||
var generateKeypair = promisify(require('rsa-compat').RSA.generateKeypair); |
|||
|
|||
//var ACME = exports.ACME || require('acme').ACME;
|
|||
var ACME = exports.ACME || require('../').ACME; |
|||
var acme = ACME.create({}); |
|||
acme |
|||
.init({ |
|||
//directoryUrl: 'https://acme-staging-v02.api.letsencrypt.org/directory'
|
|||
}) |
|||
.then(function() { |
|||
return generateKeypair(null).then(function(accountPair) { |
|||
return generateKeypair(null).then(function(serverPair) { |
|||
return acme.accounts |
|||
.create({ |
|||
// valid email (server checks MX records)
|
|||
email: email, |
|||
accountKeypair: accountPair, |
|||
agreeToTerms: function(tosUrl) { |
|||
// ask user (if user is the host)
|
|||
return tosUrl; |
|||
} |
|||
}) |
|||
.then(function(account) { |
|||
console.info('Created Account:'); |
|||
console.info(account); |
|||
|
|||
return acme.certificates |
|||
.create({ |
|||
domains: domains, |
|||
challenges: { 'dns-01': dns01 }, |
|||
domainKeypair: serverPair, |
|||
accountKeypair: accountPair, |
|||
|
|||
// v2 will be directly compatible with the new ACME modules,
|
|||
// whereas this version needs a shim
|
|||
getZones: dns01.zones, |
|||
setChallenge: dns01.set, |
|||
removeChallenge: dns01.remove |
|||
}) |
|||
.then(function(certs) { |
|||
console.info('Secured SSL Certificates'); |
|||
console.info(certs); |
|||
}); |
|||
}); |
|||
}); |
|||
}); |
|||
}) |
|||
.catch(function(e) { |
|||
console.error('Something went wrong:'); |
|||
console.error(e); |
|||
process.exit(500); |
|||
}); |
|||
})('undefined' === typeof module ? window : module.exports); |
@ -0,0 +1,3 @@ |
|||
ACME_EMAIL=jon.doe@gmail.com |
|||
ACME_DOMAINS=example.com,foo.example.com,*.foo.example.com |
|||
DIGITALOCEAN_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
@ -0,0 +1,3 @@ |
|||
'use strict'; |
|||
require('dotenv').config(); |
|||
require('./examples/dns-01-digitalocean.js'); |
Loading…
Reference in new issue