Skip to content

Commit

Permalink
added dns-01 challenge over Cloudflare; better command line parsing; …
Browse files Browse the repository at this point in the history
…cleanups
  • Loading branch information
wille-io committed Mar 17, 2024
1 parent d9d3ae2 commit 7c2094c
Show file tree
Hide file tree
Showing 4 changed files with 600 additions and 234 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
*.pem
*.crt
*.pem
deno.lock
34 changes: 24 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,41 @@
# deno-acme
[![Latest version](https://deno.land/badge/acme/version)](https://deno.land/x/acme)

Get certificates for your domains and subdomains via http challenges from an acme server.
Use the CLI as a standalone acme client, ...
or use the acme.ts library to use it in your own application.
Get certificates for your domains and or your domains their subdomains from an acme server.
Supports http-01 challenges and dns-01 challenges with domains hosted with Cloudflare's DNS server.
Use the CLI as a standalone acme client, or use the acme.ts library to use it in your own application.

## Prerequisites
- Port 80 needs to be available on the maschine running the acme cli
- The requested domain name(s) need to point the IP address of the maschine running the acme cli
## Prerequisites for HTTP challenge
- Port 80 needs to be available on the maschine running the acme cli or ...
- (optional) Port 80 needs to be forwarded to the maschine running the acme cli
- The requested domain name(s) need to point the IP address of the maschine running the acme cli

## Prerequisites for Cloudflare DNS challenge
- Domain and / or subdomain(s) with nameservers pointing to Cloudflare
- Cloudflare API token with edit privileges for the given domain(s) / subdomain(s) DNS zone

## CLI
How to get & use the CLI:
```
sudo deno install -A --allow-read=. --allow-write=. --allow-net --name acme --root /usr/local/ https://deno.land/x/acme/cli.ts
sudo acme example.com
sudo deno install -A --allow-read=. --allow-write=. --allow-net --name acme --root /usr/local/ https://deno.land/x/[email protected]/cli.ts
# http challenge:
sudo acme http example.com,subdomain.example.com
# cloudflare dns challenge:
sudo acme cloudflare example.com,subdomain.example.com
```

## Library
To use acme as a library in your application, add the following:
```
import * as ACME from "https://deno.land/x/acme/acme.ts"
const { domainCertificates } = await ACME.getCertificateForDomain("example.com", "https://acme-staging-v02.api.letsencrypt.org/directory");
import * as ACME from "https://deno.land/x/[email protected]/acme.ts"
// http challenge:
const { domainCertificates } = await ACME.getCertificatesWithHttp("example.com", "https://acme-staging-v02.api.letsencrypt.org/directory");
console.log(domainCertificates);
// cloudflare dns challenge:
const cloudflareToken = Deno.env.get("CLOUDFLARE_TOKEN");
const { domainCertificates } = await ACME.getCertificatesWithCloudflare(cloudflareToken, "example.com", "https://acme-staging-v02.api.letsencrypt.org/directory");
console.log(domainCertificates);
```

Expand Down
Loading

0 comments on commit 7c2094c

Please sign in to comment.