NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky

Kontrakt poskytovateľa je verejný. Implementujte CertificateProvider — a k nemu ProvisionsMultipleDomains a ReportsCertificateStatus, ak váš backend zvláda SAN a živý stav:

use Illuminate\Support\Collection;
use RoundlyConsulting\Certificates\Contracts\CertificateProvider;
use RoundlyConsulting\Certificates\Contracts\ProvisionsMultipleDomains;
use RoundlyConsulting\Certificates\Contracts\ReportsCertificateStatus;
use RoundlyConsulting\Certificates\DataTransferObjects\CertificateStatusReport;

final class VaultCertificateProvider implements CertificateProvider, ProvisionsMultipleDomains, ReportsCertificateStatus
{
    public function get(): Collection { /* Collection<int, RemoteCertificate> */ }

    public function exists(string $name, string $domain): bool { /* ... */ }

    public function generate(string $name, string $domain): void { /* provision one domain */ }

    public function generateMany(string $name, array $domains): void { /* one SAN certificate */ }

    public function status(string $name, string $domain): CertificateStatusReport { /* live status + expiry */ }
}

Zaregistrujte ho cez fasádu — napríklad v metóde boot() service providera. Certificates::extend() pridá driver do CertificateProviderManager, správcu driverov za Certificates::driver(); potom ho zvoľte ako predvolený driver alebo pre konkrétne volanie:

use RoundlyConsulting\Certificates\Contracts\CertificateProvider;
use RoundlyConsulting\Certificates\Facades\Certificates;

Certificates::extend('vault', fn (): CertificateProvider => new VaultCertificateProvider());

// CERTIFICATES_DRIVER=vault, or per call:
Certificates::for('app.example.com')->using('vault')->issue();

get() vracia value objekty RemoteCertificate (name, domain). status() je dôkazom vystavenia: report v stave failed, expired či revoked vystavenie alebo obnovu zmarí a pri vystavení report, ktorý ešte čaká, nechá záznam v stave requested. Hláste expiráciu, aby ju register mohol zapísať do expires_at — bez nej použije validForDays — a odtlačok, podľa ktorého sa skutočná obnova odlíši od nezmeneného certifikátu.

Úložiská certifikátov

CertificateStore uchováva PEM materiál — koncový certifikát, kľúč a reťazec — ako StoredCertificate. Balík dodáva FilesystemCertificateStore; implementáciou kontraktu vo vlastnom poskytovateľovi môžete materiál ukladať inde:

namespace RoundlyConsulting\Certificates\Contracts;

interface CertificateStore
{
    public function put(string $name, StoredCertificate $material): void;
    public function get(string $name): ?StoredCertificate;
    public function exists(string $name): bool;
    public function delete(string $name): void;
    public function names(): array; // list<string>
}

Kontajner viaže CertificateStore na FilesystemCertificateStore nad drivers.acme.store. Dodávané drivery acme a filesystem si vytvárajú vlastné úložisko zo svojich konfiguračných kľúčov, takže nové naviazanie kontraktu ich nepresmeruje.

Makrá

CertificatesManager aj CertificateBuilder sú makrovateľné — pridajte vlastné doménové metódy, napríklad v AppServiceProvider::boot(). Makro managera zavoláte aj na fasáde:

use RoundlyConsulting\Certificates\CertificatesManager;

CertificatesManager::macro('issueForTeam', function (Team $team, string $domain) {
    /** @var CertificatesManager $this */
    return $this->for($domain)->owner($team)->issue();
});

Certificates::issueForTeam($team, 'app.example.com');

Ak chcete namiesto toho zmeniť samotný prípad použitia, naviažte v kontajneri vlastnú akciu — manager získava každú akciu pri každom volaní (pozri DI a akcie).

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 kryptomien

Odoslaní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.