---
title: "Vystavovanie certifikátov — Certificates for Laravel | Roundly"
description: "Vystavte a sledujte certifikát jedným volaním — issueIfMissing(), issue() s DTO či generate() — a čo sa pritom deje."
url: https://roundly-consulting.com/sk/open-source/navody/certificates-for-laravel/vystavovanie
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Certificates for Laravel](https://roundly-consulting.com/sk/open-source/navody/certificates-for-laravel.md)

# Vystavovanie certifikátov

Vystavenie ide cez fasádu Certificates nad CertificatesManager. issueIfMissing() vráti aktívny certifikát, ktorý doménu už pokrýva — jej vlastný záznam v registri, inak SAN certifikát, ktorý ju uvádza — alebo vystaví nový certifikát:

```php
use RoundlyConsulting\Certificates\Facades\Certificates;

$certificate = Certificates::issueIfMissing('app.example.com');

$certificate->status;            // RoundlyConsulting\Certificates\Enums\CertificateStatus::Issued
                                 // (kubernetes: Requested until certificates:sync records the outcome)
$certificate->expires_at;        // CarbonImmutable|null
$certificate->expiresWithin(14); // bool
$certificate->daysUntilExpiry(); // int|null
```

## Vystavenie z DTO

issue() certifikát vždy vystaví. Prijíma IssueCertificateData — ten istý vstup, ktorý používa builder, príkaz certificates:issue aj HasCertificates:

```php
use RoundlyConsulting\Certificates\DataTransferObjects\IssueCertificateData;
use RoundlyConsulting\Certificates\Facades\Certificates;

// Fully specified issuance, recorded in the registry.
$certificate = Certificates::issue(new IssueCertificateData(
    domain: 'shop.example.com',
    driver: 'acme',
    validForDays: 90,
    meta: ['plan' => 'pro'],
    owner: $tenant,
));

// Shorthands.
Certificates::issue(IssueCertificateData::make('shop.example.com'));
Certificates::issue(IssueCertificateData::makeForDomains(['example.com', 'www.example.com']));
```

## Čo sa deje pri vystavení

- Domény sa prevedú na malé písmená a odstránia sa duplicity — pri názvoch hostiteľov nezáleží na veľkosti písmen — a každá prejde pravidlom ValidDomain. Neplatná vyhodí InvalidDomainException skôr, než sa čokoľvek zapíše.
- Ešte pred zápisom do záznamu sa vezme zámok vystavenia daného certifikátu. Ak ho drží iný proces, issue() vyhodí ProvisioningInProgressException a záznam zostane bez zmeny.
- Dve domény môžu splynúť do jedného názvu certifikátu (a.b.com s a-b.com či \*.example.com s wildcard.example.com). Ak záznam (driver, name) — vyčistený alebo nie — už patrí inej doméne, issue() vyhodí CertificateException skôr, než sa čokoľvek zmení: záznam, jeho vlastník aj uložený materiál zostanú doméne, ktorá sa zaregistrovala prvá.
- Záznam registra pre (driver, name) sa vytvorí alebo aktualizuje so stavom requested, zoznamom domén, meta údajmi a vlastníkom a spustí sa CertificateRequested. Skôr vyčistený záznam sa obnoví ako nová registrácia.
- Poskytovateľ certifikát vystaví — pri viacerých doménach cez generateMany(), ak podporuje SAN, inak cez generate() — a načíta sa jeho report stavu.
- Poskytovateľ hlási vystavený certifikát: záznam prejde do stavu issued s nahlásenou expiráciou, vydavateľom, sériovým číslom a odtlačkom (validForDays, predvolene 90 dní, sa použije len vtedy, keď driver expiráciu neuvádza) a spustí sa CertificateIssued.
- Vystavenie ešte prebieha (cert-manager vystavuje asynchrónne): záznam zostane v stave requested, kým výsledok nezapíše certificates:sync — ten potom vyplní issued\_at a spustí CertificateIssued, alebo záznam presunie do stavu failed a spustí CertificateFailed.
- Poskytovateľ hlási failed, expired či revoked — alebo vyhodil výnimku: záznam prejde do stavu failed s vyplneným last\_error, spustí sa CertificateFailed a výnimka sa pošle ďalej. V každom prípade sa zahodí cachovaný report stavu certifikátu.

## Vystavenie bez registra

generate() je volanie nižšej úrovne. Ak tabuľka registra existuje, spustí issue() — a keď sa certifikát práve vystavuje, namiesto výnimky vráti false; bez tabuľky vystaví certifikát priamo cez poskytovateľa pod tým istým zámkom certifikátu:

```php
// true once it ran; false while another process is provisioning
// this certificate (its per-certificate lock is held).
Certificates::generate('shop.example.com'); // bool
```

## Čítanie

```php
Certificates::get();                         // Collection<int, RemoteCertificate> from the active driver
Certificates::exists('app.example.com');     // bool
Certificates::find('app.example.com');       // ?Models\Certificate (registry lookup)
Certificates::find('app.example.com', 'acme'); // ...limited to one driver
Certificates::status('app.example.com');     // ?CertificateStatus (registry enum)
Certificates::statusReport('app.example.com'); // ?CertificateStatusReport (live, cached)
Certificates::expiring(14, 'acme');          // Collection<int, Certificate> expiring within 14 days
Certificates::driver('null');                // resolve a specific provider instance
Certificates::certificateName('app.example.com'); // "generated-tls-app-example-com"
Certificates::certificateName('*.Example.com');   // "generated-tls-wildcard-example-com"
```

Úplný zoznam metód nájdete na stránke Fasáda Certificates.

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

## 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.

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/certificates-for-laravel.md)
