Let's Encrypt
Sisukord
Sissejuhatus
Lets encrypt on teenus mis pakub tasuta popup-free sertifikaate. See loodi 2016 ning selle taga on ettevõtted nagu Akamai, Cisco, Mozilla ning mitmed sõltumatud eraisikud.
Let's Encrypt kasutab oma tööks ACME ehk Automatic Certificate Management Environment protokolli, mille abil saab tellida sertifikaate täisautomaatselt. Selle töö näeb välja umbkaudu järgnev
- . Tarkvara genereerib võtme ja sertifikaadipäringu
- . Sertifikaadipäring allkirjastatakse ja saadetakse lets encrypt API-le
- . Lets encrypt server teeb valideerimise päringu domeeni vastu, millele sertifikaati taodeldakse, kus ta kontrollib http://domeen.ee/.well-known/acme-challenge/{token} olemasolu ja vastavust
- . Sertifikaadid genereeritakse ja laetakse automaatselt letsencrypti juurest alla serverisse
Sertifikaadid kehtivad vaid 90 päeva.
Paigadus debiani ja apachega
Kui virtualhost on juba seadistatud on paigaldus väga lihtne, tuleb esiteks installida cerbot ja selle apache moodul
# apt install python-certbot-apache
Ning seejärel küsida domeeni
# certbot --apache -d zoo.tartu.ee
Viimane käsk on võimeline juba ise tuvastama serveri seadistuse, tekitama sobivasse kohta vajaliku võtme ning asendama virtualhostis ka varasemad sertifikaadid
Paigaldus certbotiga nginx puhul
Installime CentOSis epel release ja cerboti
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm yum install certbot
Tekitame nginx confi
cat <<EOF > /etc/nginx/default.d/letsencrypt.conf location /.well-known { root /srv/letsencrypt; } EOF
Tekitame cerboti kausta
# mkdir /srv/letsencrypt/
Tekitame cerboti konfi
cat <<EOF > /srv/letsencrypt/letsencrypt.ini agree-tos email = info@zoo.tartu.ee authenticator = webroot webroot-path = /opt/letsencrypt EOF
Stardine nginxi
# systemctl start nginx # systemctl enable nginx
Küsime sertifikaadi
# certbot certonly -n -c /srv/letsencrypt/letsencrypt.ini -d zoo.tartu.ee
Automaatseks uuendamiseks võib tekitada cron faili /etc/cron.d/letsencrypt
MAILTO=info@zoo.tartu.ee 11 2 1 * * root /usr/bin/certbot certonly -n -c /srv/letsencrypt/letsencrypt.ini -d zoo.tartu.ee && /usr/bin/systemctl restart nginx
Paigaldus Ubuntu ja nginx puhul
Installime cerboti
# apt install certbot python3-certbot-nginx
Seadistame nginxi domeeni ja küsime serdtifikaadid
# certbot --nginx -d example.com -d www.example.com
Automaatseks uuendamiseks on systemd timer certbot.timer
systemctl status certbot.timer
Paigaldus Acme skriptiga
Veebiserveri ettevalmistus. Nagu ülal kirjutatud siis vajab letsencrypt võimalust valideerida kasutaja õigust domeenile. Selleks tuleb veebiserverisse seadistada ligipääs letsencrypti genereeritud tokenile. Nginxi korral tuleb tekitada järgnev konstruktsioon
location /.well-known/acme-challenge/ { root /var/www/certbot; }
Tõmbame vajaliku skripti alla ja paneme käima
curl https://get.acme.sh | sh
See paigaldab ka croni töö mis tegeleb sertifikaatide uuendamisega.
Küsime endale sertifikaadi
acme.sh --issue -d test.org -w /var/www/certbot
Keerukamad kasutusjuhud. Nt dockeri puhul võime ka täpselt ette anda sertifikaatide asukohad ja käsu dockeri sees nginxi restardiks
acme.sh --install-cert -d test.org \ --cert-file /apps/myapp/certs/cert.pem \ --key-file /apps/myapp/certs/key.pem \ --reloadcmd "docker-compose -f /apps/myapp/docker-compose.yml exec wen nginx -t reload"
Wildcard domeeni jaoks sertifikaadi tekitamiseks
acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf