2019-06-23 18:21:40 +00:00
|
|
|
# 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](https://git.rootprojects.org/root/acme-dns-01-test.js).
|
|
|
|
|
|
|
|
# Install
|
|
|
|
|
|
|
|
```bash
|
|
|
|
npm install --save acme-dns-01-cloudflare@3.x
|
|
|
|
```
|
|
|
|
|
|
|
|
# Usage
|
|
|
|
|
2019-08-30 14:01:38 +00:00
|
|
|
First you create an instance with your account credentials:
|
2019-06-23 18:21:40 +00:00
|
|
|
|
|
|
|
```js
|
|
|
|
var dns01 = require('acme-dns-01-cloudflare').create({
|
|
|
|
authKey: '123yourkey',
|
|
|
|
authEmail: 'you@example.com'
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
2019-08-30 14:01:38 +00:00
|
|
|
or token credentials:
|
|
|
|
|
|
|
|
```js
|
|
|
|
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'
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
2019-06-23 18:21:40 +00:00
|
|
|
Then you can use it with any compatible ACME module,
|
|
|
|
such as Greenlock.js or ACME.js.
|
|
|
|
|
|
|
|
### Greenlock.js
|
|
|
|
|
|
|
|
```js
|
|
|
|
var Greenlock = require('greenlock-express');
|
|
|
|
var greenlock = Greenlock.create({
|
|
|
|
challenges: {
|
|
|
|
'dns-01': dns01
|
|
|
|
// ...
|
|
|
|
}
|
|
|
|
});
|
|
|
|
```
|
|
|
|
|
|
|
|
See [Greenlock™ Express](https://git.rootprojects.org/root/greenlock-express.js)
|
|
|
|
and/or [Greenlock.js](https://git.rootprojects.org/root/greenlock.js) documentation for more details.
|
|
|
|
|
|
|
|
### ACME.js
|
|
|
|
|
|
|
|
```js
|
|
|
|
// TODO
|
|
|
|
```
|
|
|
|
|
|
|
|
See the [ACME.js](https://git.rootprojects.org/root/acme-v2.js) for more details.
|
|
|
|
|
|
|
|
### Build your own
|
|
|
|
|
|
|
|
```js
|
|
|
|
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](https://git.rootprojects.org/root/acme-dns-01-test.js)
|
|
|
|
for more implementation details.
|
|
|
|
|
|
|
|
# Tests
|
|
|
|
|
|
|
|
```bash
|
2019-08-30 14:01:38 +00:00
|
|
|
# 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
|
2019-06-23 18:21:40 +00:00
|
|
|
```
|