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. ssigwart/letsencryptdns

ActiveLibrary

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

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

1.2.0(9mo ago)039↓100%1MITPHP

Since Mar 18Pushed 9mo 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 1mo 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

38

—

LowBetter than 84% of packages

Maintenance60

Regular maintenance activity

Popularity8

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity66

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

288d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/b2f76908d7b9f63ead4e897d83ed03b73ab603778f710c05b302f1154a858c72?d=identicon)[ssigwart](/maintainers/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

[league/flysystem-aws-s3-v3

AWS S3 filesystem adapter for Flysystem.

1.6k263.6M784](/packages/league-flysystem-aws-s3-v3)[aws/aws-sdk-php-laravel

A simple Laravel 9/10/11/12/13 service provider for including the AWS SDK for PHP.

1.7k35.6M74](/packages/aws-aws-sdk-php-laravel)[acmephp/acmephp

Let's Encrypt client written in PHP

649155.1k](/packages/acmephp-acmephp)[afosto/yaac

Yet Another ACME client: a decoupled LetsEncrypt client

245500.4k1](/packages/afosto-yaac)[kelunik/acme

ACME library written in PHP.

121603.9k3](/packages/kelunik-acme)[bref/laravel-bridge

An advanced Laravel integration for Bref, including Octane support.

3384.1M10](/packages/bref-laravel-bridge)

PHPackages © 2026

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