Fasáda Certificates
Odporúčaným vstupným bodom je RoundlyConsulting\Certificates\Facades\Certificates. Jej koreňom je CertificatesManager, singleton v kontajneri, a každá metóda meniaca stav prechádza cez akciu — fasáda, injektovaný manager aj Certificates::fake() tak vidia tie isté volania. Prehľad rozhrania:
use RoundlyConsulting\Certificates\DataTransferObjects\IssueCertificateData;
use RoundlyConsulting\Certificates\Facades\Certificates;
// Issue
Certificates::issueIfMissing('app.example.com');
Certificates::issue(IssueCertificateData::make('app.example.com'));
// Lifecycle — a registry Certificate or a domain (its most recent row)
Certificates::renew('app.example.com');
Certificates::renewLater('app.example.com');
Certificates::revoke($certificate, 'key compromise');
Certificates::expire('app.example.com');
// The whole registry
Certificates::expiring(14); // Collection<int, Certificate>, soonest first
Certificates::renewDue(); // RenewalReport
Certificates::sync('kubernetes'); // int rows written
Certificates::prune(30); // int rows soft-deleted
// One domain — fluent issuance, reads and the same lifecycle verbs
Certificates::for('app.example.com')->using('acme')->issue();
Certificates::for('app.example.com')->renew();
// Reads, drivers and scoping
Certificates::find('app.example.com');
Certificates::statusReport('app.example.com', fresh: true);
Certificates::driver('acme');
Certificates::extend('vault', fn () => new VaultCertificateProvider());
Certificates::on('tenant')->renewDue();Vystavenie a životný cyklus
Každé sloveso životného cyklu prijíma Certificate z registra alebo doménu, ktorá sa preloží na jej najnovší záznam na naviazanom pripojení. Neznáma doména alebo stav, z ktorého prechod nie je možný (napríklad obnova odvolaného certifikátu), vyhodí CertificateException — aj pri renewLater(), ktoré stav overí skôr, než čokoľvek zaradí do fronty:
| Metóda | Vracia | Účel |
|---|---|---|
issue(IssueCertificateData $data) | Certificate | Vystaví a zaznamená certifikát z DTO; kým ten istý certifikát vystavuje iný proces, vyhodí ProvisioningInProgressException. |
issueIfMissing(string $domain) | Certificate | Aktívny záznam z registra, alebo nové vystavenie. |
generate(string $domain) | bool | Vystavenie — s registrom celý životný cyklus, bez neho priamo cez poskytovateľa; false, kým je zámok certifikátu obsadený. |
renew(Certificate|string $certificate) | Certificate | Issued/Renewed/Failed → Renewed, hneď a cez vlastný driver certifikátu. |
renewLater(Certificate|string $certificate) | Certificate | Stav overí hneď, potom zaradí RenewCertificateJob do fronty renewal.queue. |
renewDue(?int $thresholdDays = null, bool $queue = false) | RenewalReport | Obnoví alebo zaradí do fronty všetko, čo expiruje v rámci prahu (vrátane zlyhaných záznamov); jedno zlyhanie nezastaví ostatné. |
revoke(Certificate|string $certificate, ?string $reason = null) | Certificate | Issued/Renewed → Revoked, spustí CertificateRevoked. Len v registri — autorita sa nekontaktuje. |
expire(Certificate|string $certificate) | Certificate | Issued/Renewed → Expired, spustí CertificateExpired. |
sync(?string $driver = null) | int | Prenesie živé certifikáty drivera do registra; vráti počet zapísaných záznamov. |
prune(int $days = 30, CertificateStatus|string|null $status = null) | int | Soft-deletne staré záznamy v stave expired, failed a revoked — alebo presne $status. |
Rukoväť domény, čítanie a drivery
| Metóda | Vracia | Účel |
|---|---|---|
for(string|array $domain) | CertificateBuilder | Rukoväť domény — fluentné vystavenie, čítanie a slovesá životného cyklu. |
find(string $domain, ?string $driver = null) | ?Certificate | Posledný záznam registra pre doménu. |
status(string $domain) | ?CertificateStatus | Stav posledného záznamu v registri. |
statusReport(string $domain, ?string $driver = null, bool $fresh = false) | ?CertificateStatusReport | Živý stav od poskytovateľa s podporou cache. |
expiring(?int $days = null, ?string $driver = null) | Collection<Certificate> | Záznamy Issued, Renewed a Failed s expiráciou do $days dní (predvolene renewal.threshold_days), najbližšie prvé. |
get() | Collection<RemoteCertificate> | Certifikáty, ktoré spravuje predvolený driver. |
exists(string $domain) | bool | Kontrola u poskytovateľa predvoleného drivera. |
monitorExpiry(Certificate $certificate, ?Model $notifiable = null) | PendingScheduledCheck | Naplánuje monitor expirácie v alerts. |
driver(?string $name = null) | CertificateProvider | Vráti poskytovateľa (pri null predvoleného). |
extend(string $driver, Closure $callback) | CertificatesManager | Zaregistruje vlastný driver v CertificateProviderManager. |
on(?string $connection) | CertificatesManager | Klon naviazaný na pripojenie pre registre tenantov. |
certificateName(string $domain) | string | Deterministický názov certifikátu malými písmenami vo formáte DNS-1123 (*. sa zmení na wildcard-, najviac 253 znakov). |
fake() | CertificatesFake | Nahradí manager zaznamenávajúcim fake v pamäti (pozri Testovanie). |
Certificates::for($domain) je rukoväť pre jednu doménu (alebo SAN skupinu vedenú prvou doménou): fluentné vystavenie, čítanie a renew(), renewLater(), revoke() a expire() nad záznamom tejto domény — pozri Fluentný builder. S using($driver) sa nikdy nedotkne záznamu iného drivera.
Po zapnutí Certificates::fake() fasáda sprístupní aj metódy seed() a failRenewalOf() a všetky asercie assert* (pozri Testovanie). Manager je makrovateľný, takže vaše vlastné metódy sa objavia aj na fasáde (pozri Rozšírenie).
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.