PHPackages                             mlocati-concrete5-packages/acme - 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. [Security](/categories/security)
4. /
5. mlocati-concrete5-packages/acme

ActiveConcrete5-package[Security](/categories/security)

mlocati-concrete5-packages/acme
===============================

A package for ConcreteCMS to create and manage HTTPS certificates for your websites

6.0.3(3y ago)10641MITPHP

Since Sep 14Pushed 2y ago1 watchersCompare

[ Source](https://github.com/concrete5-community/acme)[ Packagist](https://packagist.org/packages/mlocati-concrete5-packages/acme)[ Docs](https://github.com/concrete5-community/acme)[ Fund](https://paypal.me/mlocati)[ GitHub Sponsors](https://github.com/mlocati)[ RSS](/packages/mlocati-concrete5-packages-acme/feed)WikiDiscussions master Synced 2mo ago

READMEChangelog (10)Dependencies (3)Versions (30)Used By (0)

ACME Client for concrete5
=========================

[](#acme-client-for-concrete5)

This is a concrete5 package that lets you generate certificates for websites, so that they can use the HTTPS protocol.

The certificates are generated via the ACME (Automated Certificate Management Environment) protocol, which is offered for free for example by [Let's Encrypt](https://letsencrypt.org/).

Features
--------

[](#features)

This is a really feature rich package:

- the initial setup is really easy
- multiple ACME servers and accounts are supported
- adding ACME servers and accounts requires just a few clicks
- supports both [ACME v1](https://tools.ietf.org/html/draft-ietf-acme-acme-01) and [ACME v2 (aka RFC8555)](https://tools.ietf.org/html/rfc8555) protocols
- supports multiple domains, both local and remotes
- supports domain names with international characters
- supports creating HTTPS certificates for multiple domains
- lets you specify actions to be performed upon certificate generations/renewals (for example, it can save the newly generate certificate to a remote server by using SSH, and reload the web server configuration)
- offers a full set of CLI (Command Line Interface) commands so that you can create/edit/modify/delete/control almost everything via a terminal console
- the renewal of the certificates can be automated by adding a single line in your crontab
- you have full control of the revoked certificates
- supports checking if a certificate has been revoked

Demo video
----------

[](#demo-video)

[![concrete5 ACME addon demo](https://camo.githubusercontent.com/ddfa931b3158b99272a30682a02fd2481963b7d44593fbdd862f6f57a259448b/68747470733a2f2f696d672e796f75747562652e636f6d2f76692f6c75576b784476537864632f6d7164656661756c742e6a7067)](https://www.youtube.com/watch?v=luWkxDvSxdc)

Initial setup
-------------

[](#initial-setup)

This package can be installed in two ways:

1. if you have a composer-based concrete5 installation, just run ```
    composer require mlocati-concrete5-packages/acme

    ```
2. otherwise, you need to:
    - download this repository and save it under the `packages` folder, with a `acme` directory name
    - download the `composerpkg` command from [here](https://github.com/concrete5/cli)
    - from inside the downloaded `acme` folder, run this command: ```
        composerpkg install

        ```

Once you did that, just browse to the `/dashboard/extend/install` dashboard page. You should see this:

[![Dashboard installation](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/install-dashboard.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/install-dashboard.png)

When you click the `Install` button, the ACME package performs some checks:

[![Install checks](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/install-checks.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/install-checks.png)

In case of problems, that page will tell you how to fix them. Once all the tests pass, hit the `Install ACME` button. After a while, the package gets installed, and you are asked if you want to easily create the first required data (the ACME server to be used, and an ACME account):

[![Install wizard - ACME Server](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/install-wizard-server.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/install-wizard-server.png)

[![Install wizard - ACME Account](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/install-wizard-account.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/install-wizard-account.png)

[![Install wizard - Ready](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/install-wizard-done.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/install-wizard-done.png)

Usage via the web interface
---------------------------

[](#usage-via-the-web-interface)

The main page of the ACME package is located in the dashboard, under `System & Settings` (that is, at the `/dashboard/system/acme` URL):

[![Main menu](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/main-menu.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/main-menu.png)

### ACME Servers and Accounts

[](#acme-servers-and-accounts)

You usually will have just one ACME Server and one ACME Account (the ones eventually configured at install time as described above). Anyway, for testing purpouses you may want to use more.

Here's the interface you can use to add a new ACME Server:

[![Add ACME Server](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/server-add.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/server-add.png)

ACME Servers are listed like this:

[![ACME Server list](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/server-list.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/server-list.png)

You can add ACME Accounts (both new ones or accounts previously registered at the ACME Server):

[![Add ACME Account](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/accunt-add.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/accunt-add.png)

You'll have a nice list of all the defined accounts:

[![ACME Account list](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/account-list.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/account-list.png)

### Domains

[](#domains)

In order to generate the HTTPS certificates, you need to define the domains they will be valid for, as well as a way to control them when the ACME Server will confirm that you own them.

At the moment you have two ways to control the ACME authorization process.

The first way only works for the currently running concrete5 installation:

[![Local domain authorization](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/domain-add-http-intercept.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/domain-add-http-intercept.png)

The second way allows you to control remote web servers (it's not required that they run concrete5, you only need SSH/FTP access to their web root directory):

[![Remote domain authorization](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/domain-add-http-remote.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/domain-add-http-remote.png)

You'll also have a page where all the domains are listed:

[![Domain list](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/domain-list.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/domain-list.png)

### Certificates

[](#certificates)

Once you defined the domain(s) for which you want the HTTPS certificates, you can create a new certificate with an interface like this:

[![Add certificate](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/certificate-add.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/certificate-add.png)

You can include one or more domains in the same certificate, which is very handy if you host more domains on the same server.

The package provides a page where all the certificates are listed, with the major details about them:

[![Certificate list](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/certificate-list.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/certificate-list.png)

### Certificate Actions

[](#certificate-actions)

When the HTTPS certificates have been issued by the ACME Server, you need to save them to file, and tell the webserver that it needs to refresh its configuration (so that the new certificates are served to the visitors of your sites).

You can define one or more actions to be performed upon certificate generation/renewal, on the local machine or on a remote machine:

[![Certificate actions](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/certificate-actions.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/certificate-actions.png)

### Certificate Generation, Renewal, and Actions Executions

[](#certificate-generation-renewal-and-actions-executions)

A dashboar page will let you generate the certificates, renew them, and execute the actions (if any):

[![Certificate renewal](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/certificate-renewal.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/certificate-renewal.png)

### Remote Servers

[](#remote-servers)

In order to control remote web sites (for the ACME Authorization process, to save the certificate files and to reload the web server configuration), you can define one or more Remote Servers. You have great control about that; at the moment the supported protocols to connect to remote servers are:

- FTP (in Active or Passive mode)
- FTP over SSL (in Active or Passive mode)
- SFTP with username and password
- SFTP with username and a private key
- SFTP with an SSH Agent

(Please remark that the FTP protocol doesn't allow running commands, so you won't be able for example to ask the web server to reload its configuration)

[![Add Remote Server](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/remote-server-add.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/dashboard/remote-server-add.png)

Usage via the Command Line Interface
------------------------------------

[](#usage-via-the-command-line-interface)

There's a ton of CLI commands that lets you every operation you can do via the web interface:

[![All CLI Commands](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/cli/all.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/cli/all.png)

You can type the command name followed by `--help` to get the list of all the allowed arguments and options.

For example, to list the currently defined certificates, and to get the details of a specific certificate, you can use the `acme:certificate:list` command:

[![Certificate List CLI Command](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/cli/certificate-list-and-details.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/cli/certificate-list-and-details.png)

The most important CLI command (the only one that you'll need to run on a daily basis - maybe with crontab), is the `acme:certificate:refresh` command. This command will renew the certificates, execute the actions, and send an email to one or more operators in case something goes wrong.

Here's a sample session:

[![Certificate Refresh CLI Command](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/cli/certificate-refresh.png)](https://raw.githubusercontent.com/concrete5-community/acme/assets/images/cli/certificate-refresh.png)

Testing Environments
--------------------

[](#testing-environments)

You can test a local web site using this ACME concrete5 package by following [these instructions](https://github.com/concrete5-community/acme/wiki/Configuring-a-test-environment).

###  Health Score

32

—

LowBetter than 72% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity16

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity69

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 ~46 days

Recently: every ~15 days

Total

29

Last Release

1143d ago

Major Versions

4.4.1 → 5.0.02023-01-23

5.0.4 → 6.0.02023-01-27

### Community

Maintainers

![](https://www.gravatar.com/avatar/6e9d7ece045fc89575e083ee4852edf31218df403c84f41a0de01863dae982f5?d=identicon)[mlocati](/maintainers/mlocati)

---

Top Contributors

[![mlocati](https://avatars.githubusercontent.com/u/928116?v=4)](https://github.com/mlocati "mlocati (109 commits)")

---

Tags

httpspackagesecurityconcrete5concreteCMScertificatetlssslletsencryptACMEconcreteConcrete CMSlets encryptlet s encrypt

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/mlocati-concrete5-packages-acme/health.svg)

```
[![Health](https://phpackages.com/badges/mlocati-concrete5-packages-acme/health.svg)](https://phpackages.com/packages/mlocati-concrete5-packages-acme)
```

###  Alternatives

[kelunik/acme

ACME library written in PHP.

121603.9k3](/packages/kelunik-acme)[kelunik/acme-client

Let's Encrypt / ACME client written in PHP for the CLI.

3933.9k1](/packages/kelunik-acme-client)[acmephp/acmephp

Let's Encrypt client written in PHP

649155.1k](/packages/acmephp-acmephp)[acmephp/core

Raw implementation of the ACME protocol in PHP

38973.7k7](/packages/acmephp-core)[mlocati/ocsp

Library to query HTTPS Certificates revocation status using the Online Certificate Status Protocol (OCSP)

40754.7k2](/packages/mlocati-ocsp)[spatie/ssl-certificate-chain-resolver

SSL certificate chain resolver

3069.6k](/packages/spatie-ssl-certificate-chain-resolver)

PHPackages © 2026

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