Providers are resolved by CertificateProviderManager, a standard Laravel manager behind Certificates::driver() and Certificates::extend(). config('certificates.default') picks the driver when none is named; using() on the builder or a driver argument overrides it per call:
use RoundlyConsulting\Certificates\Facades\Certificates;
// config/certificates.php → 'default' => 'acme', or per call:
Certificates::for('app.example.com')->using('acme')->issue();
Certificates::driver(); // the default provider (CertificateProvider)
Certificates::driver('null'); // a specific provider instance
Certificates::get(); // Collection<int, RemoteCertificate> from the default provider
certificates()->driver('acme'); // the same through the helper, which returns CertificatesManager| Driver | Class | Multi-domain | Live status | Use it for |
|---|---|---|---|---|
kubernetes | KubernetesProvider | yes | yes | cert-manager in a cluster — the default. |
acme | AcmeProvider | yes | yes | Real certificates from Let’s Encrypt or any ACME v2 CA. |
filesystem | LocalFilesystemProvider | yes | yes | PEM files on a Storage disk; self-signed for development. |
null | NullProvider | no | no | A no-op where no certificate backend exists. |
array | ArrayProvider | yes | yes | In-memory backend for tests. |
Multi-domain means the driver implements ProvisionsMultipleDomains and receives the full SAN list; others get the primary domain only. Live status means it implements ReportsCertificateStatus — the registry reads expiry from it, and statusReport() returns null for drivers without it.
Certificates::driver() — and provider() on CertificateProviderManager — throw UnknownProviderException for an unknown name. The CertificateProvider contract is also bound in the container to the default driver.
The null driver provisions nothing — with the registry present, its rows get the fallback expiry of validForDays (default 90). Use it where no backend exists; in tests reach for array or the fake.
Show your open-source love
This package is free and MIT-licensed. If it saves you time, a one-off donation or a Patreon membership keeps it maintained, tested and documented.
More ways to support, including cryptoBy donating, you agree to our donation terms.
Want this built into your product?
We integrate our packages into custom Laravel and AI builds. Tell us what you're working on and we'll reply within 48 hours.