Προσθήκη Let's Encrypt SSL certificate στο ZNC

Από Κοινότητα Ελεύθερου Λογισμικού ΕΜΠ
Μετάβαση σε: πλοήγηση, αναζήτηση

Ένας σύντομος οδηγός για την προσθήκη ενός δωρεάν πιστοποιητικού SSL στο ZNC (αλλά και apache) server μας για ασφαλή πρόσβαση με https.


Εγκατάσταση ZNC

Αρχικά, χρειαζόμαστε φυσικά το ZNC στο μηχάνημα μας. Σε διανομή Debian, προτείνεται η μεταγλώττιση και εγκάτασταση του tarball όπως περιγράφεται στον επίσημο οδηγό.

Εναλλακτικά, χρησιμοποιούμε το συγκεκριμένο third party repository καθώς στα επίσημα repos η έκδοση του ZNC είναι ξεπερασμένη.

Configuration του ZNC

Η παραμετροποιήση του ZNC πριν από την πρώτη χρήση του γίνεται με την εντολή znc --makeconf. Για περισσότερες πληροφορίες σχετικά με τις διάφορες παραμέτρους συμβουλευόμαστε τον οδηγό του ZNC.

Setup του Let's Encrypt και δημιουργία Certificate

Η εγκατάσταση του Let's Encrypt και η δημιουργία ενός certificate είναι ιδιαίτερα απλή διαδικασία. Εδώ υποθέτουμε ότι θα εκδώσουμε certificate για έναν apache server καθώς υπάρχει έτοιμο script (όπως και για άλλους τύπους όπως πχ. nginx).

Εκτελούμε:

 sudo git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt</code>

με το οποίο αντιγράφουμε τα αναγκαία αρχεία του lets encrypt στο φάκελο /opt/letsencrypt.

Έπειτα, κάνουμε cd /opt/letsencrypt (ή στο φάκελο που επιλέξαμε) και για να εκδωθεί το πιστοποιητικό μας εκτελούμε:

 ./letsencrypt-auto --apache -d example.com

όπου example.com το domain που μας ενδιαφέρει (και ανήκει).

Στην περίπτωση που έχουμε και subdomains/aliases τα προσθέτουμε στην εντολή με -d π.χ.:

 ./letsencrypt-auto --apache -d example.com -d www.example.com

Η διαδικασία περιγράφεται με περισσότερες λεπτομέρειες εδώ, ενώ αν γενικότερες οδηγίες για κάθε περίπτωση υπάρχουν στη σελίδα του Let's Encrypt.

Renewal και αυτοματοποίηση με crontab

Το πιστοποιητικό διαρκεί 90 μέρες, οπότε πρέπει να φροντίζουμε για τη συχνή ανανέωση του ή να αυτοματοποιήσουμε τη διαδικασία.

Η διαδικασία της ανανέωσης δεν είναι παρά μια εντολή:

 ./letsencrypt-auto renew

Η παραπάνω εντολή ελέγχει τα πιστοποιητικά μας και ανανεώνει αυτόματα όποιο λήγει σε λιγότερο από 30 μέρες.

Για να μην ξεχνάμε την έγκαιρη ανανέωση και να αποφύγουμε και τη χειροκίνητη διαδικασία γενικότερα, προτείνεται η χρήση crontab, το οποίο θα εκτελεί κάθε μέρα ή κάθε εβδομάδα την παραπάνω εντολή αυτόματα. Για την εισαγωγή του συγκεκριμένου αυτοματισμού εκτελούμε:

 sudo crontab -e

και προσθέτουμε την παρακάτω γραμμή στο αρχείο που ανοίγει:

 30 2 * * 1 /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log

Έτσι κάθε Δευτέρα στις 2:30 θα εκτελείται η εντολή ανανέωσης.

Σημείωση: Υπάρχει περίπτωση η αυτόματη εργασία να αποτυγχάνει ενώ να πετυχαίνει όταν εκτελούμε την εντολή χειροκίνητα. Αυτό συμβαίνει, συνήθως, λόγω του διαφορετικού περιβάλλοντος που τρέχει το crontab. Για να το διορθώσουμε, μπορούμε να τρέξουμε echo $PATH και να προσθέσουμε την έξοδο της εντολής στο crontab μαζί με την εντολή ανανέωσης ως εξής (έστω ότι η έξοδος του echo είναι /usr/local/sbin:/usr/local/bin:/usr/sbin):

 30 2 * * 1 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin && /opt/letsencrypt/letsencrypt-auto renew >> /var/log/le-renew.log

Προσθήκη certificate στο ZNC

Για την προσθήκη του certificate που δημιουργήσαμε στο ZNC αρκεί η αντιγραφή του στο znc.pem που βρίσκεται στο config directory του ZNC (θα υποθέσουμε ότι είναι στο ~/.znc).

Αρκεί λοιπόν να τρέξουμε:

 cat /etc/letsencrypt/live/example.org/{privkey,cert,chain}.pem > ~/.znc/znc.pem

Η διαδικασία αυτή πρέπει να επαναλαμβάνεται σε κάθε ανανέωση του certificate οπότε καλό θα ήταν να τη συμπεριλάβουμε στο crontab που αναφέραμε παραπάνω π.χ. δημιουργώντας ένα script για το renewal που να κάνει και τις δύο διαδικασίες μαζί.