Cloudflare DNS + Let's Encrypt for Node.js - ACME dns-01 challenges w/ ACME.js and Greenlock.js
Go to file
Vasil Rangelov eebb2cb219 Added support for authentication tokens.
Fixed #1.
2019-08-30 17:20:13 +03:00
lib Added support for authentication tokens. 2019-08-30 17:20:13 +03:00
.gitignore Initial Commit 2019-06-23 20:21:40 +02:00
.prettierrc Initial Commit 2019-06-23 20:21:40 +02:00
AUTHORS Initial Commit 2019-06-23 20:21:40 +02:00
README.md Added support for authentication tokens. 2019-08-30 17:20:13 +03:00
index.js Initial Commit 2019-06-23 20:21:40 +02:00
package-lock.json Initial Commit 2019-06-23 20:21:40 +02:00
package.json Initial Commit 2019-06-23 20:21:40 +02:00
test.js Added support for authentication tokens. 2019-08-30 17:20:13 +03:00

README.md

acme-dns-01-cloudflare

Cloudflare DNS + Let's Encrypt for Node.js

This handles ACME dns-01 challenges, compatible with ACME.js and Greenlock.js. Passes acme-dns-01-test.

Install

npm install --save acme-dns-01-cloudflare@3.x

Usage

First you create an instance with your account credentials:

var dns01 = require('acme-dns-01-cloudflare').create({
	authKey: '123yourkey',
	authEmail: 'you@example.com'
});

or token credentials:

var dns01 = require('acme-dns-01-cloudflare').create({
	bearerTokens: {
		list: '123yourListToken', // This token needs to be able to list all of your zones
		zone: '456yourZoneToken' // This token needs to have full control over the targeted DNS zone(s)
	},
	authEmail: 'you@example.com'
});

Then you can use it with any compatible ACME module, such as Greenlock.js or ACME.js.

Greenlock.js

var Greenlock = require('greenlock-express');
var greenlock = Greenlock.create({
	challenges: {
		'dns-01': dns01
		// ...
	}
});

See Greenlock™ Express and/or Greenlock.js documentation for more details.

ACME.js

// TODO

See the ACME.js for more details.

Build your own

dns01
  .set({
    identifier: { value: 'foo.example.com' },
    wildcard: false,
    dnsHost: '_acme-challenge.foo.example.com',
    dnsAuthorization: 'xxx_secret_xxx'
  })
  .then(function () {
    console.log("TXT record set");
  })
  .catch(function () {
    console.log("Failed to set TXT record");
  });

See acme-dns-01-test for more implementation details.

Tests

# node ./test.js domain-zone auth-email auth-type auth-credential (aux-credential?)
node ./test.js example.com you@example.com key YourApiKey
node ./test.js example.com you@example.com token YourApiTokenWithFullRights
node ./test.js example.com you@example.com token YourApiTokenWithListRights YourApiTokenWithEditRightsForTheZone