Certbot is the official Let's Encrypt client, and the python3-certbot-dns-route53 plugin automates DNS-01 validation for Route 53.
sudo apt update sudo apt install -y certbot python3-certbot-dns-route53
Certbot needs access to AWS Route 53 to add TXT records for validation.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"route53:ListHostedZones",
"route53:GetChange",
"route53:ChangeResourceRecordSets",
"route53:ListResourceRecordSets"
],
"Resource": "*"
}
]
}
sudo nano /etc/letsencrypt/route53.ini
[default] aws_access_key_id = YOUR_ACCESS_KEY aws_secret_access_key = YOUR_SECRET_KEY
sudo chmod 600 /etc/letsencrypt/route53.ini
sudo certbot certonly \
--dns-route53 \
--dns-route53-credentials /etc/letsencrypt/route53.ini \
-d private-server-1.pri.smortler.com
Full certificate: /etc/letsencrypt/live/private-server-1.pri.smortler.com/fullchain.pem Private key: /etc/letsencrypt/live/private-server-1.pri.smortler.com/privkey.pem
sudo nano /etc/apache2/sites-available/default-ssl.conf
<VirtualHost *:443>
ServerName private-server-1.pri.smortler.com
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/private-server-1.pri.smortler.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/private-server-1.pri.smortler.com/privkey.pem
<Directory /var/www/html>
AllowOverride All
</Directory>
</VirtualHost>
sudo a2enmod ssl sudo a2ensite default-ssl sudo systemctl reload apache2
sudo certbot renew --dry-run
sudo crontab -e
0 2 * * * certbot renew --quiet && systemctl reload apache2