Έκδοση Let's Encrypt SSL με το AWS Route53
Σε αυτό το άρθρο, θέλω να σου πω πώς μπορείς να εκδώσεις ένα Let's Encrypt SSL με την υπηρεσία AWS Route53. Ας ξεκινήσουμε να μαθαίνουμε.

Γεια σου,
Σε αυτό το άρθρο, θέλω να σου πω πώς μπορείς να εκδώσεις ένα Let's Encrypt SSL με την υπηρεσία AWS Route53. Ας ξεκινήσουμε να μαθαίνουμε.
Τι είναι το Let's Encrypt;
Το Let's Encrypt είναι μια μη κερδοσκοπική certificate authority που διαχειρίζεται το Internet Security Research Group (ISRG) και παρέχει πιστοποιητικά X.509 για κρυπτογράφηση Transport Layer Security χωρίς χρέωση. Αυτό σημαίνει ότι μπορείς να αποκτήσεις ένα ΔΩΡΕΑΝ πιστοποιητικό SSL για το project/app σου και το πιστοποιητικό SSL θα είναι έγκυρο για 90 ημέρες. Χρειάζεται να κάνεις κάποιον αυτοματισμό για αυτόματη ανανέωση.
Τι είναι το AWS Route53;
Το Amazon Route 53 είναι μια κλιμακούμενη και εξαιρετικά διαθέσιμη υπηρεσία Domain Name System. Κυκλοφόρησε στις 5 Δεκεμβρίου 2010 και είναι μέρος της πλατφόρμας cloud computing της Amazon.com, Amazon Web Services. Μπορείς να καταχωρήσεις ένα νέο domain ή να μεταφέρεις το υπάρχον domain σου ή απλά να χρησιμοποιήσεις το σύστημα διαχείρισης DNS για το domain σου.
Για αυτό το άρθρο, θα χρησιμοποιήσω ένα από τα domains μου που είναι καταχωρημένο στο Google Domains και αποφάσισα να χρησιμοποιήσω απλά το σύστημα διαχείρισης DNS. Σε κάθε περίπτωση, ο τύπος domain θα πρέπει να είναι public hosted zone στο Route53. Το domain μου είναι "ermis.email" Μπορείς ελεύθερα να ελέγξεις τα NS records για το domain μου : )
Γιατί χρησιμοποιώ το Route 53 για έκδοση Let's Encrypt SSL;
Όταν ζητάς ένα νέο πιστοποιητικό SSL από το Let's Encrypt, το certbot στέλνει ένα αίτημα στους διακομιστές του Let's Encrypt και δεν θέλω να στέλνω και να λαμβάνω HTTP (μη ασφαλή) αιτήματα εκτός AWS για να πάρω ένα πιστοποιητικό κρυπτογράφησης : ) Σκέφτομαι ότι είναι λίγο περίεργο και μπορεί να δημιουργήσει κάποια προβλήματα ασφαλείας.
Διαφορετικά, ίσως απλά χρειάζεσαι ένα πιστοποιητικό SSL και δεν θέλεις να το συνδέσεις απευθείας σε έναν nginx ή apache ή οποιοδήποτε είδος υπηρεσίας web server. Και επίσης, είναι πιο βολικό και γρήγορο και μπορείς να κάνεις κάποιον αυτοματισμό με αυτόν τον τρόπο...
IAM Policy
Αποφάσισα να χρησιμοποιήσω ένα AWS EC2 για να εκδώσω SSL απευθείας στο AWS και πρώτα απ' όλα, πρέπει να δημιουργήσουμε ένα IAM Policy για αυτή τη λειτουργία για πρόσβαση στο Route53. Το EC2 μου έχει Elastic IP για να κάνω πιο ασφαλές το IAM Policy και να περιορίσω την πρόσβαση στους πόρους του Route53. Δεν μπορείς να χρησιμοποιήσεις αυτό το policy ως IAM Role και το ρυθμίζω για λειτουργίες aws-cli με ένα συγκεκριμένο profile name "certbot-route53". Ορίστε ένα παράδειγμα IAM Policy παρακάτω:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CertbotRoute53",
"Effect": "Allow",
"Action": [
"route53:GetChange",
"route53:ListHostedZones"
],
"Resource": "*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "3.92.136.59/32"
}
}
},
{
"Sid": "CertbotRoute531",
"Effect": "Allow",
"Action": "route53:ChangeResourceRecordSets",
"Resource": "arn:aws:route53:::hostedzone/Z01859902ZBFBUXJ0AV3J",
"Condition": {
"IpAddress": {
"aws:SourceIp": "3.92.136.59/32"
}
}
}
]
}Το DNS όνομα του mail server μου είναι "hermes.ermis.email" και το A record δείχνει στο 3.65.142.23 με Simple Routing. Θα ζητήσω ένα Let's Encrypt SSL για το "hermes.ermis.email"

Απαιτήσεις για EC2
Αν τρέχεις σε φρεσκοδημιουργημένο Amazon Linux 2 AMI, θα πρέπει να εγκαταστήσεις κάποια προαπαιτούμενα. Πρώτα απ' όλα, πρέπει να εγκαταστήσουμε το epel repository για να εγκαταστήσουμε το certbot και το plugin certbot-dns-route53. Ας το κάνουμε με μία μόνο γραμμή εντολής!
[root@ip-172-31-89-11 ~]# amazon-linux-extras install -y epel && yum install -y certbot python2-certbot-dns-route53
Ας Εκδώσουμε!
Μπορείς να δεις την εντολή έκδοσης παρακάτω.
[root@ip-172-31-89-11 ~]# export AWS_PROFILE=certbot-route53; \
> certbot certonly --dns-route53 \
> --agree-tos \
> -m hello@ermis.email \
> --non-interactive \
> -d hermes.ermis.email
Ένα Τελευταίο Πράγμα
Μην ξεχάσεις να ορίσεις ένα cron για να ελέγχει αν το SSL χρειάζεται ανανέωση. Μπορείς επίσης να χρησιμοποιήσεις την εντολή στο cron σου.
00 00 * * * export AWS_PROFILE=certbot-route53; certbot renew -qΕυχαριστώ που διάβασες το άρθρο μου, ελπίζω να το απόλαυσες!
Περισσότερα από τον Ercan
Δύο ακόμη ιστότοποι, ίδιος συγγραφέας, διαφορετικό έδαφος.
AI, LLMs, agents, εφαρμοσμένη ML.
Σημειώσεις πεδίου για AI workloads. Ανάλυση κόστους Bedrock, agent patterns, trade-offs αποθήκευσης διανυσμάτων, failure modes σε παραγωγή.
Επισκεφθείτε ercan.ai →Ο κόμβος. Σχετικά, συμβουλευτική, επικοινωνία.
Προσωπικός κόμβος και για τις δύο διαδρομές γραφής. Ποιος είμαι, πώς λειτουργεί η συμβουλευτική, πώς να επικοινωνήσετε.
Επισκεφθείτε ercanermis.com →