HTTPS Apache-n Certbot bidez

Bazen garaia

Aspaldi idatzi nuen honi buruz, baina eguneraketa bat behar zuen.

Kudeatzen ditudan zerbitzu batzuk HTTPS euskarri gabe erabili izan ditut gutxi arte. Dirudienez, Chrome-k HTTP deskargak blokeatu egingo ditu segurtasun arazoengatik. Honetarako, TLS ziurtagiriak instalatu behar nituen. Besteren faltan, EFF-k certbot bidez eskainitako doako Let’s Encrypt ziurtagiriak jarri nizkien.

Zerbitzaren sistema eragilea Debian da, eta Apache erabiltzen du web orriak zerbitzatzeko. Nginx ere erabiltzen dut. Dena den, prozesu agnostikoa azalduko dut.

§Certbot-en instalazioa

Lehenik eta behin, Certbot instalatuko dugu:

$ wget https://dl.eff.org/certbot-auto
$ mv certbot-auto /usr/local/bin/
$ chown root /usr/local/bin/certbot-auto
$ chmod 0755 /usr/local/bin/certbot-auto

§Ziurtagirien instalazioa

Hemen, bi alternatiba ditugu: apache plugina alde batetik, eta webroot bestetik.

§Automatikoa (plugin bidez)

Prozesua nahiko sinplea da, kontsolan hurrengoa exekutatuz:

$ certbot-auto certonly --apache

Hemen prompt interaktibo bat azalduko da, hobespenak eskatuz: aukeratutako domeinu eta azpidomeinuak, zerbitzatzeko modua (HTTP zuzena ala ez), zure eposta, etab. Alde batetik, zertifikatua sortuko du eta bestetik, konfigurazio fitxategietan SSL-ri dagozkionak erantsiko dira. Beraz, orain apache2 berrabiaraztea falta da:

$ service apache2 restart # Debian, adibidez
$ service httpd restart # Arch, adibidez

(nginx erabiltzen baduzu, prozesu berbera da apache ordez nginx erabilita.)

§Eskuz (webroot bidez)

Nire kasuan, aurreko plugin-arekin arazoak izan nituen, TLS-ren challenge-ak gaindiezinak zirelako. Certbot-ek berak azaltzen du nola konpondu, eta webroot (web erro) bat erabiltzea gomendatzen du. Hau luzeago egiten da, banaka joan behar delako. Bestalde, eskuz egiteak Apache-ren konfigurazioa ikasten lagundu dit.

Hurrengo komandoa erabili behar da:

$ certbot-auto certonly --webroot -w <kokapena> -d <domeinua>

Kasu honetan, fitxategia eskuz aldatu beharko duzu, honelako zerbait ezarriz:

<VirtualHost *:80>
    ServerName <domeinua>
    RedirectMatch permanent ^(.*)$ https://<domeinua>$1
</VirtualHost>

<VirtualHost _default_:443>
    ServerName <domeinua>
    DocumentRoot <kokapena>
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/<domeinua>/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/<domeinua>/privkey.pem
    SSLCertificateChainFile /etc/letsencrypt/live/<domeinua>/chain.pem
    [...]
</VirtualHost>

Konprobatu lehenik eta behin ea guztia ondo dagoen:

$ apachectl configtest # Debian, adib.
$ httpd -t # Arch, adib.

Erantzuna Syntax OK bada, Apache berrabiaraztea falta da:

$ service apache2 restart # Debian, adibidez
$ service httpd restart # Arch, adibidez

Bejondeizula, orain zure web orrialdeetara HTTPS bidez sar zaitezke![1]

§Ziurtagirien berritzea

Hau ez da guztia. Irakurri dudanaren arabera, ziurtagiri hauek hiru hilabetero iraungitzen dira, beraz aldizka eguneratu behar dira. Horretarako cron lan bat ezarriko dugu:

$ crontab -e

Eta fitxategi honetako amaieran zera jarriko dugu:

30 2 * * 1 /usr/local/bin/certbot-auto renew -q

Orain ez zara zure ziurtagirien egoeraz kezkatu behar.[2]


  1. SSL labs-en arabera ziurtagiriaren kalitatea oso ona da: B bat. Hori hobetzeko gomendatzen diren neurriak hartu beharko. ↩︎

  2. Beno, aholku gisa hobe proiektuaren egoera jarraitu. ↩︎


Ohar honi buruzko iruzkinik? Hala bada, bidali iezadazu mezu bat hemengo alternatibaren bat erabiliz!