acme-lw-d 0.0.2

A lightweight ACME protocol client written in the D computer language

To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:

Lightweight ACME Client written in the D computer language

This project is yet another Let's Encrypt client. It has the following properties.

  • It is written in the D computer language.
  • WIP: The main artifact is a D static library.
  • A commandline tool provides all operations of RFC855 as best as possible
  • Tries to be a good example of D programming. It hast ddoc and unittest support.
Building and Installing

Building requires dub, openssl and curl. On Debian based systems this will install them.

apt-get install dub libssl-dev libcurl4-gnutls-dev

On Red Hat based systems this will do it.

yum install dub openssl-devel curl-devel

Workaround for problems with dub:openssl package

cd <somepath>
git clone
cd openssl && git checkout fixup_EVP_MD_CTX_new
dub add-local <somepath>/openssl

To build and install run:

dub build

To run against the Let's Encrypt staging environment generate your makefiles with this. (NOT WORKING YET)

dub build -c acme-staging
Let's Encrypt Credentials

To use any Let's Encrypt client you need to sign requests with your Let's Encrypt's account's private key. This library uses a private key in PEM format. If you want to use an existing Let's Encrypt private key, it's in JWK format. The acme-tiny library has good documentation on how to convert it.

Create a SSL key pair with:

openssl genrsa -out key.pem 2048
Command Line Client

The command line client is run as follows.

./acme-lw-d -k key.pem -d -d -y -c ""
./acme-lw-d -h
Library API

The API of the library is documented in its source file. The command line client source provides an example of how it's used.

All methods report errors by throwing some exception, which will normally be an instance of acme.AcmeException.



  • Implement 7.4. Applying for Certificate Issuance


  • Implement 7.3.4. External Account Binding
  • Implement 7.3.5. Account Key Rollover
  • Implement 7.3.6. Account Deactivation
  • Implement 7.4.1. Pre-authorization

Nice to have:

  • Create a new SSL private/public key pair in program, if not existent and allowed by cmdline arg. It avoids the use of the openssl command client (see above). Should create only supported keys.
  • Split code into a library package and an optional CLI client, which uses the library package.
  • Carsten Schlote
0.2.0 2019-Jul-07
0.1.9 2019-Jun-25
0.1.8 2019-Jun-23
0.1.7 2019-Jun-10
0.1.6 2019-Jun-10
Show all 15 versions
Download Stats:
  • 0 downloads today

  • 0 downloads this week

  • 0 downloads this month

  • 25 downloads total

Short URL: