This library allows you to request, renew and revoke SSL certificates provided by Let's Encrypt.
- PHP ^7.1
- OpenSSL >= 1.0.1
- cURL extension
You can install the package via composer:
composer require rogierw/rw-acme-client
You can create an instance of Rogierw\RwAcme\Api
client.
$client = new Api('test@example.com', __DIR__ . '/__account');
if (!$client->account()->exists()) {
$account = $client->account()->create();
}
// Or get an existing account.
$account = $client->account()->get();
$order = $client->order()->new($account, ['example.com']);
$order = $client->order()->get($order->id);
$validationStatus = $client->domainValidation()->status($order);
Get the name and content for the validation file:
// Get the data for the HTTP challenge; filename and content.
$validationData = $client->domainValidation()->getFileValidationData($validationStatus);
This returns an array:
Array
(
[0] => Array
(
[type] => http-01
[identifier] => example.com
[filename] => sqQnDYNNywpkwuHeU4b4FTPI2mwSrDF13ti08YFMm9M
[content] => sqQnDYNNywpkwuHeU4b4FTPI2mwSrDF13ti08YFMm9M.kB7_eWSDdG3aWIaPSp6Uy4vLBbBI5M0COvM-AZOBcoQ
)
)
The Let's Encrypt validation server will make a request to the following URL:
http://example.com/.well-known/acme-challenge/sqQnDYNNywpkwuHeU4b4FTPI2mwSrDF13ti08YFMm9M
@TODO
try {
$client->domainValidation()->start($account, $validationStatus[0]);
} catch (DomainValidationException $exception) {
// The local HTTP challenge test has been failed...
}
$privateKey = \Rogierw\RwAcme\Support\OpenSsl::generatePrivateKey();
$csr = \Rogierw\RwAcme\Support\OpenSsl::generateCsr(['example.com'], $privateKey);
if ($order->isReady() && $client->domainValidation()->challengeSucceeded($order, DomainValidation::TYPE_HTTP)) {
$client->order()->finalize($order, $csr);
}
if ($order->isFinalized()) {
$certificateBundle = $client->certificate()->getBundle($order);
}
if ($order->isValid()) {
$client->certificate()->revoke($certificateBundle->fullchain);
}