PHPackages                             ssigwart/letsencryptdns - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. ssigwart/letsencryptdns

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

ssigwart/letsencryptdns
=======================

PHP Let's Encrypt Wildcard DNS Client (AWS Route53 support)

1.2.0(11mo ago)0391MITPHP

Since Mar 18Pushed 11mo ago1 watchersCompare

[ Source](https://github.com/ssigwart/letsencrypt)[ Packagist](https://packagist.org/packages/ssigwart/letsencryptdns)[ Docs](https://github.com/ssigwart/letsencrypt)[ RSS](/packages/ssigwart-letsencryptdns/feed)WikiDiscussions master Synced 3w ago

READMEChangelog (10)Dependencies (1)Versions (13)Used By (1)

PHP LetsEncrypt Wildcard DNS Client
===================================

[](#php-letsencrypt-wildcard-dns-client)

This library implements the `dns-01` challenge type for wildcard domains.

Install
-------

[](#install)

```
composer install ssigwart/letsencryptdns
```

Basic Usage
-----------

[](#basic-usage)

### Initial Request

[](#initial-request)

1. Set up `$leClient = \LetsEncryptDNSClient\LetsEncryptDNSClient(...);` indicating if staging or production endpoint should be used and setting up provider for your LetsEncrypt account.
2. Call setDNSProvider to set up a DNS provider. Use `\LetsEncryptDNSClient\Route53DNSProvider` to use AWS's Route53.
3. Optionally use `setLogger(...)` to handle log messages. By default, log messages are not output.
4. Call `getTermsOfServiceUrl(...)` to get the terms of service, then `agreeToTermsOfService` to agree to them.
5. Call `$order = $leClient->startWildcardSslOrder('example.com');` to get a wildcard SSL certificate for `*.example.com`. Store the returned `$order->orderUrl`.
6. Store the order URL in a queue for later processing. You should wait a minute or so to wait for DNS propagation.

### Finalizing Request

[](#finalizing-request)

1. Set up `$leClient = \LetsEncryptDNSClient\LetsEncryptDNSClient` as in the initial request.
2. Call `$order = $leClient->getOrder('YOUR_ORDER_URL');`
3. Optionally call `$order->selfValidateOrderChallenges();`. If this fails, the order will likely be rejected.
4. Call `$csr = $this->createCSR(...);` to set up certificate signing request.
5. Call `$order = $this->finalizeSslOrder($order, $csr);`

### Get SSL Certificate

[](#get-ssl-certificate)

1. Set up `$leClient = \LetsEncryptDNSClient\LetsEncryptDNSClient` as in the initial request.
2. Call `$order = $leClient->getOrder('YOUR_ORDER_URL');`
3. If `$order->isOrderValid()` returns true, call `$leClient->getOrderCertificate()` to get the SSL certificate

AWS IAM User Setup
------------------

[](#aws-iam-user-setup)

The IAM user you use should have the following policy

```
{
	"Version": "2012-10-17",
	"Statement": [
		{
			"Effect": "Allow",
			"Action": "route53:ChangeResourceRecordSets",
			"Resource": "arn:aws:route53:::hostedzone/REPLACE_WITH_YOUR_HOSTED_ZONE"
		}
	]
}
```

###  Health Score

37

—

LowBetter than 81% of packages

Maintenance52

Moderate activity, may be stable

Popularity7

Limited adoption so far

Community9

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~211 days

Recently: every ~412 days

Total

12

Last Release

334d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/1426848?v=4)[Stephen Sigwart](/maintainers/ssigwart)[@ssigwart](https://github.com/ssigwart)

---

Top Contributors

[![ssigwart](https://avatars.githubusercontent.com/u/1426848?v=4)](https://github.com/ssigwart "ssigwart (18 commits)")

---

Tags

aws-route53letsencryptwildcard-certificatesawssslletsencryptACMEacmev2wildcardroute53

### Embed Badge

![Health badge](/badges/ssigwart-letsencryptdns/health.svg)

```
[![Health](https://phpackages.com/badges/ssigwart-letsencryptdns/health.svg)](https://phpackages.com/packages/ssigwart-letsencryptdns)
```

###  Alternatives

[afosto/yaac

Yet Another ACME client: a decoupled LetsEncrypt client

240509.5k1](/packages/afosto-yaac)[aws/aws-sdk-php-symfony

A Symfony bundle for v3 of the AWS SDK for PHP

36418.3M23](/packages/aws-aws-sdk-php-symfony)[acmephp/acmephp

Let's Encrypt client written in PHP

649157.7k](/packages/acmephp-acmephp)[kelunik/acme

ACME library written in PHP.

121609.1k3](/packages/kelunik-acme)[ellaisys/aws-cognito

AWS Cognito package that allows Auth and other related features using the AWS SDK for PHP

121242.9k1](/packages/ellaisys-aws-cognito)[altis/core

Core module for Altis

19222.5k2](/packages/altis-core)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
