Απαιτήσεις
Πριν ξεκινήσεις
Εγκαταστήστε το Nginx
Εγκαταστήστε Python και Lexicon
Εγκαταστήστε το πρόγραμμα-πελάτη acme.sh
Λάβετε πιστοποιητικά μπαλαντέρ από το Let's Encrypt
Διαμόρφωση διακομιστή web Nginx
Τον Μάρτιο του 2018 Let's Encrypt προστέθηκε υποστήριξη για πιστοποιητικά μπαλαντέρ. Τα πιστοποιητικά μπαλαντέρ σάς επιτρέπουν να ασφαλίζετε όλους τους υποτομείς πρώτου επιπέδου ενός τομέα με ένα μόνο πιστοποιητικό. Τα πιστοποιητικά μπαλαντέρ είναι διαθέσιμα μόνο μέσω του ACMEv2, το οποίο είναι μια ενημερωμένη έκδοση του πρωτοκόλλου ACME. Για να χρησιμοποιήσετε το ACMEv2 για πιστοποιητικά με χαρακτήρες μπαλαντέρ ή χωρίς μπαλαντέρ, θα χρειαστείτε έναν πελάτη που να έχει ενημερωθεί για να υποστηρίζει το ACMEv2. Ένας τέτοιος πελάτης είναι ο acme.sh, ο οποίος είναι ένας πελάτης πρωτοκόλλου ACME/ACMEv2 γραμμένος καθαρά σε γλώσσα Shell (κέλυφος Unix) χωρίς εξαρτήσεις. Επιπλέον, οι τομείς μπαλαντέρ πρέπει να επικυρωθούν χρησιμοποιώντας τον τύπο πρόκλησης DNS-01. Αυτό σημαίνει ότι πρέπει να τροποποιήσετε τις εγγραφές DNS TXT για να αποδείξετε τον έλεγχο ενός τομέα για να αποκτήσετε ένα πιστοποιητικό μπαλαντέρ.
Σε αυτόν τον οδηγό, εξηγούμε πώς να αποκτήσετε και να αναπτύξετε δωρεάν πιστοποιητικά μπαλαντέρ από το Let's Encrypt στο Ubuntu 19.04 χρησιμοποιώντας το εργαλείο acme.sh
πελάτη, Lexicon για αυτόματο χειρισμό των εγγραφών DNS καταναλώνοντας το Vultr API και αναπτύσσοντας πιστοποιητικά στον διακομιστή ιστού Nginx.
Απαιτήσεις
- Πρόσφατα αναπτυγμένος διακομιστής cloud Ubuntu 19.04 Vultr.
- Έχετε ένα καταχωρημένο όνομα τομέα. Αυτός ο οδηγός χρησιμοποιείται
example.com
ως παράδειγμα τομέα.
- Βεβαιωθείτε ότι έχετε ορίσει εγγραφές DNS A/AAAA και CNAME για το Πλήρως Πιστοποιημένο Όνομα Τομέα σας (FQDN). Ίσως θελήσετε να συμβουλευτείτε το σεμινάριο Εισαγωγή στο Vultr DNS εάν χρειάζεται να εξοικειωθείτε με τις έννοιες του DNS.
- Η πρόσβαση στο Vultr API είναι ενεργοποιημένη στον πίνακα ελέγχου του λογαριασμού σας Vultr.
Πριν ξεκινήσεις
Ελέγξτε την έκδοση του Ubuntu.
lsb_release -ds
# Ubuntu 19.04
Δημιουργήστε έναν νέο λογαριασμό χρήστη με sudo
πρόσβαση και το όνομα χρήστη που προτιμάτε και μεταβείτε σε αυτόν. χρησιμοποιούμε johndoe
.
adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe
ΣΗΜΕΙΩΣΗ : Αντικαταστήστε το johndoe
με το όνομα χρήστη σας.
Ρυθμίστε τη ζώνη ώρας.
sudo dpkg-reconfigure tzdata
Βεβαιωθείτε ότι το σύστημά σας στο Ubuntu είναι ενημερωμένο.
sudo apt update && sudo apt upgrade -y
Εγκαταστήστε τα απαραίτητα πακέτα.
sudo apt install -y git wget curl socat
Εγκαταστήστε το Nginx
Εγκαταστήστε τον διακομιστή web Nginx.
sudo apt install -y nginx
Ελέγξτε την έκδοση.
sudo nginx -v
# nginx version: nginx/1.15.9 (Ubuntu)
Εγκαταστήστε Python και Lexicon
Ως πρώτο βήμα στη διαδικασία λήψης πιστοποιητικών χαρακτήρων μπαλαντέρ από το Let's Encrypt χρησιμοποιώντας acme.sh και Vultr API, πρέπει να εγκαταστήσετε το Python και το Lexicon . Το Lexicon είναι ένα πακέτο Python που παρέχει έναν τρόπο χειρισμού εγγραφών DNS σε πολλούς παρόχους DNS με τυποποιημένο τρόπο.
Εγκαταστήστε την Python εάν δεν είναι ήδη εγκατεστημένη στο σύστημά σας.
sudo apt install -y python3
Επιβεβαιώστε την εγκατάσταση επαληθεύοντας την έκδοση.
python3 --version
# Python 3.7.3
Εγκαταστήστε το εργαλείο Lexicon. Το λεξικό είναι ένα εργαλείο Python που σας επιτρέπει να χειρίζεστε τις εγγραφές DNS σε διάφορους παρόχους DNS με τυποποιημένο τρόπο.
sudo apt install -y lexicon
Ελέγξτε την έκδοση Lexicon.
lexicon --version
# lexicon 3.0.8
Εγκατάσταση acme.sh
πελάτη
Acme.sh
είναι ένας πελάτης πρωτοκόλλου ACME γραμμένος αποκλειστικά σε γλώσσα Shell (κέλυφος Unix) που αυτοματοποιεί τη διαδικασία λήψης ενός υπογεγραμμένου πιστοποιητικού μέσω του Let's Encrypt. Υποστηρίζει ACME v1 και ACME v2, και το πιο σημαντικό υποστηρίζει πιστοποιητικά μπαλαντέρ ACME v2. Σε αυτήν την ενότητα, εγκαθιστούμε ένα σενάριο Acme.sh.
ΣΗΜΕΙΩΣΗ: Συνιστάται η χρήση root
χρήστη για εγκατάσταση acme.sh
, αν και δεν απαιτεί root
/ sudo
πρόσβαση.
Μετάβαση σε root
χρήστη από τον κανονικό χρήστη, εάν τον έχετε δημιουργήσει.
sudo su - root
Λήψη και εγκατάσταση acme.sh
.
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail "[email protected]"
source ~/.bashrc
cd
Ελέγξτε την έκδοση.
acme.sh --version
# v2.8.2
Λάβετε πιστοποιητικά μπαλαντέρ από το Let's Encrypt
Για να αποκτήσουμε ένα πιστοποιητικό μπαλαντέρ, μπορούμε να χρησιμοποιήσουμε μόνο τη μέθοδο επικύρωσης DNS. Χρησιμοποιούμε Lexicon και Vultr DNS API για να χειριστούμε τις εγγραφές TXT DNS.
Αποκτήστε πιστοποιητικά μπαλαντέρ RSA και ECC για τον τομέα σας.
# Configure your API key and username
export PROVIDER=vultr
export LEXICON_VULTR_USERNAME="[email protected]"
export LEXICON_VULTR_TOKEN="XXXXXXXXXXXXXXX"
# RSA 2048
acme.sh --issue --dns dns_lexicon -d example.com -d '*.example.com' --keylength 2048
# ECC 256
acme.sh --issue --dns dns_lexicon -d example.com -d '*.example.com' --keylength ec-256
ΣΗΜΕΙΩΣΗ : Μην ξεχάσετε να αντικαταστήσετε example.com
το όνομα τομέα σας και να αντικαταστήσετε τις τιμές κράτησης θέσης Vultr API με τις δικές σας.
Αφού εκτελέσετε τις προηγούμενες εντολές, τα πιστοποιητικά και τα κλειδιά σας βρίσκονται σε:
- Για RSA:
~/.acme.sh/example.com
κατάλογος.
- Για ECC/ECDSA:
~/.acme.sh/example.com_ecc
κατάλογος.
ΣΗΜΕΙΩΣΗ : Δεν πρέπει να χρησιμοποιείτε τα αρχεία πιστοποιητικών στο ~/.acme.sh/
φάκελο, είναι μόνο για εσωτερική χρήση, η δομή του καταλόγου ενδέχεται να αλλάξει στο μέλλον.
Για να καταχωρήσετε τα πιστοποιητικά σας, μπορείτε να εκτελέσετε:
acme.sh --list
Δημιουργήστε έναν φάκελο για να αποθηκεύσετε τα πιστοποιητικά σας στην παραγωγή. Χρησιμοποιούμε /etc/letsencrypt
κατάλογο.
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
Εγκαταστήστε/αντιγράψτε πιστοποιητικά για χρήση παραγωγής στον διακομιστή σας.
# RSA
acme.sh --install-cert -d example.com \
--cert-file /etc/letsencrypt/example.com/cert.pem \
--key-file /etc/letsencrypt/example.com/private.key \
--fullchain-file /etc/letsencrypt/example.com/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"
# ECC/ECDSA
acme.sh --install-cert -d example.com --ecc \
--cert-file /etc/letsencrypt/example.com_ecc/cert.pem \
--key-file /etc/letsencrypt/example.com_ecc/private.key \
--fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem \
--reloadcmd "sudo systemctl reload nginx.service"
Τώρα που αποκτήσαμε επιτυχώς πιστοποιητικά μπαλαντέρ από το Let's Encrypt, πρέπει να διαμορφώσουμε τον διακομιστή web Nginx. Όλα τα πιστοποιητικά ανανεώνονται αυτόματα κάθε 60 ημέρες.
Αφού αποκτήσετε και εγκαταστήσετε πιστοποιητικά στην τοποθεσία που προτιμάτε, μπορείτε να αποσυνδεθείτε από root
χρήστη σε κανονικό sudo
χρήστη και να συνεχίσετε να διαχειρίζεστε τον διακομιστή σας χρησιμοποιώντας sudo
εάν απαιτείται.
exit
Εκτελέστε sudo vim /etc/nginx/sites-available/example.com.conf
και συμπληρώστε το αρχείο με το ακόλουθο περιεχόμενο. Αντικαταστήστε όλες τις εμφανίσεις example.com
με το δικό σας όνομα τομέα.
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com *.example.com;
root /var/www/example.com;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key;
}
Ενεργοποιήστε τη νέα example.com.conf
διαμόρφωση συνδέοντας το αρχείο στον sites-enabled
κατάλογο.
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/
Δοκιμάστε τη διαμόρφωση Nginx.
sudo nginx -t
Επαναφόρτωση Nginx.
sudo systemctl reload nginx.service
Αυτό είναι. Αναπτύξαμε πιστοποιητικά μπαλαντέρ στο Nginx, χρησιμοποιώντας acme.sh, Lexicon και Vultr API. Τα πιστοποιητικά μπαλαντέρ μπορεί να είναι χρήσιμα όταν θέλετε να εξασφαλίσετε πολλούς υποτομείς πρώτου επιπέδου που δημιουργούνται δυναμικά.