SSLmentor

Kvalitetni TLS/SSL sertifikati za veb stranice i internet projekte.

Certbot

Certbot

ACME klijent Certbot

Detaljan vodič za potpuno postavljanje DV ACME SSL sertifikata na Debian (Apache) VPS sa automatskim obnavljanjem putem podrazumevanog Certbot tajmera. Vodič opisuje postavljanje jednodomenskog ili višedomenskog DV sertifikata, na primer example.com i www.example.com. Za standardna postavljanja preporučujemo korišćenje standardnog Certbot direktorijuma /etc/letsencrypt. Na ovaj način obnavljanjima upravlja podrazumevani sistemski tajmer certbot.timer.
Ovaj vodič ne obuhvata wildcard WildCard SSL sertifikate, koji zahtevaju DNS validaciju i DNS API za automatsko obnavljanje.

Osnovni pojmovi

  • ACME – Protokol za automatizovano izdavanje i obnavljanje SSL/TLS sertifikata.
  • Certbot – ACME klijent koji komunicira sa sertifikacionim telom i može postaviti sertifikat na Apache.
  • kid + hmac – External Account Binding (EAB) akreditivi od sertifikacionog tela. Oni povezuju Certbot sa nalogom ili proizvodom.
    kid i hmac ne proveravaju vlasništvo nad domenom, oni povezuju ACME klijent sa CA nalogom. Domen se proverava odvojeno putem ACME izazova. hmac je osetljiva vrednost — ne delite je javno i ne čuvajte je u deljenim vodičima.
  • http-01 – Validacija domena putem privremenog fajla dostupnog na HTTP adresi domena.
  • dns-01 – Validacija putem DNS TXT zapisa. Neophodna za wildcard sertifikate.

U primerima zamenite example.com sopstvenim domenom.

Apache, webroot

Osnovna konfiguracija Apache i domena na serveru.

›› Prikaži/Sakrij sekciju

Kreiranje zasebnog webroot-a za domen i jednostavne test stranice. Apache na Debian-u podrazumevano koristi korisnika www-data.

apt update
apt install -y apache2
systemctl enable --now apache2
a2enmod rewrite headers ssl
systemctl reload apache2
Komanda Šta radi
apt update Ažurira listu paketa iz Debian repozitorijuma.
apt install -y apache2 Instalira Apache veb server. Parametar -y automatski potvrđuje instalaciju.
systemctl enable --now apache2 Omogućava Apache pri pokretanju servera i odmah ga pokreće.
a2enmod rewrite headers ssl Omogućava uobičajene Apache module za preusmeravanja, zaglavlja i HTTPS.
systemctl reload apache2 Ponovo učitava Apache konfiguraciju bez potpunog ponovnog pokretanja servisa.

Priprema webroot-a

DOMAIN="example.com"

mkdir -p /var/www/$DOMAIN/public
chown -R www-data:www-data /var/www/$DOMAIN
chmod -R 755 /var/www/$DOMAIN
echo "OK $DOMAIN" > /var/www/$DOMAIN/public/index.html

Kreiranje Apache virtuelnog hosta


cat > /etc/apache2/sites-available/$DOMAIN.conf <<EOF
<VirtualHost *:80>
    ServerName $DOMAIN
    ServerAlias www.$DOMAIN

    DocumentRoot /var/www/$DOMAIN/public

    <Directory /var/www/$DOMAIN/public>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog \${APACHE_LOG_DIR}/${DOMAIN}_error.log
    CustomLog \${APACHE_LOG_DIR}/${DOMAIN}_access.log combined
</VirtualHost>
EOF
            

Aktiviranje Apache sajta i HTTP provera
Pre izdavanja sertifikata, domen mora da odgovara putem HTTP. Ovo je neophodno za ACME http-01 validaciju.

a2ensite $DOMAIN.conf
apache2ctl configtest
systemctl reload apache2

curl -I http://$DOMAIN
curl http://$DOMAIN

Instalacija Certbot + izdavanje sertifikata

Instalacija Certbot iz Debian repozitorijuma. Paket python3-certbot-apache omogućava Certbot-u da menja Apache konfiguraciju, izvršava validaciju i postavlja izdati sertifikat.

apt install -y certbot python3-certbot-apache
certbot --version

Certbot podržava širok spektar sistema i veb servera. Preporučujemo da proverite Certbot Instructions za konkretan postupak za vaš izabrani veb server.

Registracija ACME naloga

Da biste izdali sertifikat, potrebno je da imate ACME nalog kod sertifikacionog tela. U ovom vodiču koristićemo ACME sertifikate od CA Certum.
EAB akreditive (kid + hmac) dobićete u detaljima porudžbine.

certbot register \
--server https://acme.certum.pl/directory \
--email certum@example.com \
--agree-tos \
--eab-kid 'KID' \
--eab-hmac-key 'HMAC'
Parametar Značenje
--server Navodi konkretni ACME endpoint. Bez ovog parametra, Certbot bi koristio podrazumevani ACME server.
CA DigiCert: https://one.digicert.com/mpki/api/v1/acme/v2/directory
CA Sectigo: https://acme.sectigo.com/v2/DV
--email Kontakt email za ACME nalog.
--agree-tos Prihvatanje uslova korišćenja.
--eab-kid KID identifikator.
--eab-hmac-key Tajni HMAC EAB ključ.

Izdavanje ACME sertifikata

certbot --apache \
--server https://acme.certum.pl/directory \
--cert-name $DOMAIN \
-d $DOMAIN \
-d www.$DOMAIN

Parametar --cert-name je posebno važan pri upravljanju sa više sertifikata na jednom serveru. Svaki pojedinačni sertifikat treba da ima svoje jedinstveno ime.

Provera sertifikata i automatsko obnavljanje

certbot certificates
systemctl list-timers | grep certbot
certbot renew --dry-run
curl -I https://$DOMAIN
Komanda Svrha
certbot certificates Prikazuje sertifikate kojima upravlja Certbot.
systemctl list-timers | grep certbot Proverava da li je pokrenut podrazumevani tajmer za automatsko obnavljanje.
certbot renew --dry-run Simulira obnavljanje sertifikata bez zamene produkcionog sertifikata. Ispravan izlaz: "all simulated renewals succeeded".
curl -I https://$DOMAIN Proverava HTTPS odgovor domena.

Više sertifikata na jednom serveru

Certbot može upravljati sa više sertifikata u standardnom /etc/letsencrypt direktorijumu. Ovaj model je najjednostavniji za postavljanja kod klijenata jer koristi podrazumevani certbot.timer.

  • Kreirajte zaseban Apache vhost
    Svaki domen treba da ima svoj fajl u /etc/apache2/sites-available/ i svoj webroot.
  • Izdajte sertifikat sa jedinstvenim --cert-name
    Ne koristite isto ime sertifikata za drugi pojedinačni sertifikat.
  • Proverite obnavljanje svih sertifikata
    Komanda certbot renew --dry-run mora proći za sve unose u /etc/letsencrypt/renewal/.

Primer komande za dodatni domen example.net:


DOMAIN="example.net"

mkdir -p /var/www/$DOMAIN/public
chown -R www-data:www-data /var/www/$DOMAIN
chmod -R 755 /var/www/$DOMAIN
echo "OK $DOMAIN" > /var/www/$DOMAIN/public/index.html

cat > /etc/apache2/sites-available/$DOMAIN.conf <<EOF
<VirtualHost *:80>
    ServerName $DOMAIN
    ServerAlias www.$DOMAIN

    DocumentRoot /var/www/$DOMAIN/public

    <Directory /var/www/$DOMAIN/public>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog \${APACHE_LOG_DIR}/${DOMAIN}_error.log
    CustomLog \${APACHE_LOG_DIR}/${DOMAIN}_access.log combined
</VirtualHost>
EOF

a2ensite $DOMAIN.conf
apache2ctl configtest
systemctl reload apache2
curl -I http://$DOMAIN

certbot --apache \
--server https://acme.certum.pl/directory \
--cert-name $DOMAIN \
-d $DOMAIN
-d www.$DOMAIN

certbot renew --dry-run
        

Rešenje za više EAB naloga

Kod sertifikacionog tela svaki proizvod može imati sopstvene EAB vrednosti. Ako je CA ACME nalog već registrovan na serveru, druga registracija za isti ACME server može rezultovati greškom:

There is an existing account; registration of a duplicate account with this command is currently unsupported.

U takvoj situaciji, ostanite u standardnom /etc/letsencrypt, ali registrujte novi nalog koristeći sledeće zaobilazno rešenje. Nakon izdavanja, koristite konkretan --account ACCOUNT_ID.

Privremeno premeštanje postojećih naloga
ACME_ACCOUNT_DIR="/etc/letsencrypt/accounts/acme.certum.pl/directory"
BACKUP_DIR="/root/certbot-certum-accounts-backup-$(date +%Y%m%d-%H%M%S)"

mkdir -p "$BACKUP_DIR"
find "$ACME_ACCOUNT_DIR" -mindepth 1 -maxdepth 1 -type d -exec mv {} "$BACKUP_DIR"/ \;
Registracija novog EAB naloga
certbot register \ --server https://acme.certum.pl/directory \ --email certum@example.com \ --agree-tos \ --eab-kid 'KID' \ --eab-hmac-key 'HMAC'
Pronalaženje ID-a novog naloga
ls -1 "$ACME_ACCOUNT_DIR"

Izlaz ove komande je novi ACCOUNT_ID. Koristite ovu vrednost pri izdavanju sertifikata.

Vraćanje originalnih naloga
find "$BACKUP_DIR" -mindepth 1 -maxdepth 1 -type d -exec mv {} "$ACME_ACCOUNT_DIR"/ \;
Izdavanje sertifikata putem konkretnog naloga
certbot --apache \ --server https://acme.certum.pl/directory \ --account ACCOUNT_ID \ --cert-name example.net \ -d example.net \ -d www.example.net
Zašto je zaobilazno rešenje potrebno Šta rešava
Certbot odbija da registruje duplikat naloga za isti ACME server. Privremeno premeštanje naloga omogućava registraciju novog EAB naloga.
Standardni /etc/letsencrypt treba da ostane na serveru. Podrazumevani certbot.timer zatim obnavlja sve sertifikate bez prilagođenog cron-a.
Svaki CA proizvod može imati sopstveno EAB povezivanje. Parametar --account nameće ispravan CA nalog tokom izdavanja.
Kontrolna lista za proveru
  • apache2ctl configtest vraća Syntax OK.
  • curl -I http://example.com odgovara putem HTTP.
  • curl -I https://example.com odgovara putem HTTPS.
  • certbot certificates prikazuje očekivani sertifikat.
  • certbot renew --dry-run prolazi bez greške.
  • systemctl list-timers | grep certbot prikazuje aktivan certbot.timer.

Nazad na Pomoć
Pronašli ste grešku ili vam nešto nije jasno? Pišite nam!

CA Sectigo
CA RapidSSL
CA Thawte
CA GeoTrust
CA DigiCert
CA Certum