In questo articolo vi spieghiamo come ottenere un certificato LetsEncrypt per un qualsiasi puntamento di un dominio gestito tramite il nostro servizio utilizzando il plugin di Certbot di Shellrent.
Per prima cosa assicuratevi di aver installato python3, python3-pip e certbot (o python2 e python2-pip, dipendentemente dalla distribuzione sulla quale state lavorando) con il comando:
apt-get install python3 python3-pip -y
Una volta installati i pacchetti installate Certbot e il plugin di Certbot di Shellrent tramite pip:
pip3 install certbot zope certbot-dns-shellrent --user
Una volta installati, controllate che il plugin certbot-dns-shellrent sia presente tramite il seguente comando. Se non viene visualizzato significa che non è stato installato correttamente:
pip3 list | grep shellrent certbot-dns-shellrent 0.1.1
Prima di procedere alla richiesta di certificato è necessario generare (o recuperare, in caso lo abbiate già creato) il token API. Di seguito la documentazione che spiega come fare: https://api.shellrent.com/token-e-accesso
Prima di recuperare/creare il token è necessario aggiungere tutti gli IP da cui sarà lanciata la richiesta di certificazione tra gli IP autorizzati tramite pannello manager, di seguito una guida che spiega come fare: https://guide.shellrent.com/controllo-degli-accessi-tramite-ip/
Una volta in possesso del vostro nome utente e del token, create un file .ini all’interno del vostro server , e inserite i seguenti parametri sostituendo ovviamente il nome utente e il token con quelli in vostro possesso:
dns_shellrent_username = usr00000 dns_shellrent_token = aaaaaaaaabbbbbbbbbbcccccccccccdddddddddddd000009999999999 dns_shellrent_endpoint = https://manager.shellrent.com/api2
Modificate i permessi del file impostandoli a 600 con il seguente comando:
chmod 600 /percorso/al/file.ini
Se volete effettuare una richiesta di certificazione di test lanciate il seguente comando con la flag –test-cert, che effettua una di richiesta di certificazione per *.vostrodominio.tld (wildcard) :
certbot certonly --authenticator dns-shellrent --dns-shellrent-credentials /percorso/al/file.ini --dns-shellrent-propagation-seconds 60 --server https://acme-v02.api.letsencrypt.org/directory --agree-tos --rsa-key-size 4096 -d '*.vostrodominio.tld' --test-cert
Rimuovete il flag –test-cert per rendere la richiesta effettiva.
Se è il primo certificato richiesto con Certbot sul vostro server vi verrà richiesta un’email per informazioni sui rinnovi e su notizie inerenti alla sicurezza.
Il client creerà un record TXT per la validazione che verrà rimosso dopo l’attesa impostata (nel nostro caso 60 secondi). Di seguito un esempio di output per una richiesta di certificazione andata buon fine:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator certbot-dns-shellrent:dns-shellrent, Installer None Obtaining a new certificate Performing the following challenges: dns-01 challenge for dominioesempio.it insert new txt record Waiting 60 seconds for DNS changes to propagate Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/dominioesempio.it/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/dominioesempio.it/privkey.pem Your cert will expire on 2020-09-21. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew"
N.B. 60 secondi potrebbero non essere sufficienti perchè il puntamento DNS sia correttamente propagato, consigliamo eventualmente di aumentare il tempo a 120/180 secondi in caso di errori legati alla propagazione DNS.
A questo punto potrete recuperare il certificato e la CA nel file /etc/letsencrypt/live/dominioesempio.it/fullchain.pem e la private key dal file /etc/letsencrypt/live/dominioesempio.it/privkey.pem.