Skip to content

Get certificates for your domains and subdomains via http or dns challenges from an acme server.

License

Notifications You must be signed in to change notification settings

wille-io/deno-acme

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

deno-acme

Latest version

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 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@v0.4.0/cli.ts
# http challenge:
sudo acme http example.com,subdomain.example.com
# cloudflare dns challenge:
acme cloudflare example.com,subdomain.example.com

Note: For http challenges permissions to bind to port 80 are needed. Otherwise use the root user or use sudo - like in the example above.

Library

To use acme as a library in your application, add the following (minimal example with temporary & anonymous acme account creation):

import * as ACME from "https://deno.land/x/acme@v0.4.0/acme.ts"

// http challenge:
const { domainCertificates } = await ACME.getCertificatesWithHttp("example.com");
console.log(domainCertificates);

// cloudflare dns challenge:
const cloudflareToken = Deno.env.get("CLOUDFLARE_TOKEN");
const { domainCertificates } = await ACME.getCertificatesWithCloudflare(cloudflareToken, "example.com");
console.log(domainCertificates);

License

MIT