Apache HTTP Server: differenze tra le versioni
Wtf (discussione | contributi) |
Wtf (discussione | contributi) |
||
(38 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 10: | Riga 10: | ||
{{Box|Info|Questa guida fa riferimento alle versioni di apache 2.4 e successive.}} | {{Box|Info|Questa guida fa riferimento alle versioni di apache 2.4 e successive.}} | ||
Per una guida dedicata a Stretch che tratta un server LAMP nel suo complesso vedere [http://guide.debianizzati.org/index.php/Installare_un_ambiente_LAMP:_Linux,_Apache2,_SSL,_MySQL,_PHP5_-_Stretch#Apache2:_layout_di_configurazione questa pagina]. | |||
== Installazione == | == Installazione == | ||
Riga 39: | Riga 41: | ||
</pre> | </pre> | ||
Se ciò non fosse vero, per esempio perché si sta usando una VPS remota, evidentemente sarà necessario avere un dominio registrato ed inserire i dati corretti (ma si tratterebbe di un caso di utilizzo avanzato e pertanto chi legge dovrebbe già avere le competenze per risolvere il problema). | Se ciò non fosse vero, per esempio perché si sta usando una VPS remota, evidentemente sarà necessario avere un dominio registrato ed inserire i dati corretti (ma si tratterebbe di un caso di utilizzo avanzato e pertanto chi legge dovrebbe già avere le competenze per risolvere il problema). | ||
=== Moduli aggiuntivi === | |||
==== PHP ==== | |||
Uno dei moduli più gettonati è senz'altro quello che permette l'integrazione di Apache con PHP: | |||
<pre># apt install libapache2-mod-php</pre> | |||
== Configurazione == | == Configurazione == | ||
Riga 81: | Riga 90: | ||
{{Box|Nota|L'installazione base sebbene presenti già alcuni elementi di configurazione utili per servire pagine tramite https non è sufficiente a tale proposito, l'installazione dei certificati SSL è infatti ancora a carico dell'utente. Si veda l'apposita sezione di questa guida per maggiori informazioni.}} | {{Box|Nota|L'installazione base sebbene presenti già alcuni elementi di configurazione utili per servire pagine tramite https non è sufficiente a tale proposito, l'installazione dei certificati SSL è infatti ancora a carico dell'utente. Si veda l'apposita sezione di questa guida per maggiori informazioni.}} | ||
=== /etc/apache2/conf-available/ === | === <code>/etc/apache2/conf-available/</code> === | ||
Come già scritto questa directory può essere usata per salvare file di configurazione opzionali e/o aggiuntivi, ovvero per evitare di mettere mano direttamente al file di configurazione principale di apache (quindi principalmente per una questione di ordine).<br> | Come già scritto questa directory può essere usata per salvare file di configurazione opzionali e/o aggiuntivi, ovvero per evitare di mettere mano direttamente al file di configurazione principale di apache (quindi principalmente per una questione di ordine).<br> | ||
Riga 88: | Riga 97: | ||
==== Attivazione configurazioni aggiuntive ==== | ==== Attivazione configurazioni aggiuntive ==== | ||
Tutte le configurazioni specificate in <code>/etc/apache2/conf-available/</code> non sono caricate a meno che non vengano prima attivate creando un collegamento simbolico in </code>/etc/apache2/conf-enabled/</code>. | Tutte le configurazioni specificate in <code>/etc/apache2/conf-available/</code> non sono caricate a meno che non vengano prima attivate creando un collegamento simbolico in </code>/etc/apache2/conf-enabled/</code>.<br> | ||
Posto ad esempio di avere creato una propria configurazione aggiuntiva <code>/etc/apache2/conf-available/mia_configurazione.conf</code> la si può abilitare con il comando <code>a2enconf</code>, cioè digitando | |||
<pre># a2enconf mia_configurazione.conf</pre> | |||
oppure creando manualmente il relativo collegamento: | |||
<pre># ln -s /etc/apache2/conf-available/mia_configurazione.conf /etc/apache2/conf-enabled/mia_configurazione.conf</pre> | <pre># ln -s /etc/apache2/conf-available/mia_configurazione.conf /etc/apache2/conf-enabled/mia_configurazione.conf</pre> | ||
Similmente per disabilitare una configurazione | |||
<pre># a2disconf mia_configurazione.conf</pre> | |||
oppure rimuovere manualmente il suddetto collegamento simbolico: | |||
<pre># rm /etc/apache2/conf-enabled/mia_configurazione.conf</pre> | |||
=== <code>/etc/apache2/sites-available/</code> === | |||
=== /etc/apache2/sites-available/ === | |||
Questa cartella permette di specificare le configurazioni dei propri siti internet (''virtual-hosts'') attraverso la dichiarazione di blocchi <code>virtualhost</code> | Questa cartella permette di specificare le configurazioni dei propri siti internet (''virtual-hosts'') attraverso la dichiarazione di blocchi <code>virtualhost</code> | ||
Riga 122: | Riga 136: | ||
==== Esempio file.conf ==== | ==== Esempio file.conf ==== | ||
Una volta verificato che la pagina predefinita viene caricata è possibile procedere a scrivere i propri file di configurazione. Di seguito un esempio minimale per un sito web chiamato ''mio_sito.conf'', che come già detto deve essere salvato in <code>/etc/apache2/sites-available</code>. | Una volta verificato che la pagina predefinita viene caricata è possibile procedere a scrivere i propri file di configurazione. Di seguito un esempio minimale per un sito web chiamato ''mio_sito.conf'', che come già detto deve essere salvato in <code>/etc/apache2/sites-available/</code>. | ||
<pre> | <pre> | ||
<VirtualHost *:80> | <VirtualHost *:80> | ||
Riga 136: | Riga 150: | ||
</pre> | </pre> | ||
Spiegazione delle direttive usate: | Spiegazione delle direttive usate: | ||
* <code>ServerName</code>: è il FQDN ('''F'''ully '''Q'''ualified '''D'''omain '''N'''ame) del proprio sito ed è un parametro obbligatorio (non proprio, ma è meglio considerarlo tale). In questo esempio si è chiaramente usato un dominio fittizio, <code>home.lan</code>, del tutto arbitrario, ma assolutamente valido se il webserver è destinato ad operare esclusivamente in un ambito LAN (e non vi è alcun controller di dominio). Sotto queste condizioni infatti ogni utente è libero di sbizzarrirsi come più gli pare, gli unici limiti sono quelli di usare una sintassi corretta e di non usare domini già esistenti, come per esempio | * <code>ServerName</code>: è il FQDN ('''F'''ully '''Q'''ualified '''D'''omain '''N'''ame) del proprio sito ed è un parametro obbligatorio (non proprio, ma è meglio considerarlo tale). In questo esempio si è chiaramente usato un dominio fittizio, <code>home.lan</code>, del tutto arbitrario, ma assolutamente valido se il webserver è destinato ad operare esclusivamente in un ambito LAN (e non vi è alcun controller di dominio). Sotto queste condizioni infatti ogni utente è libero di sbizzarrirsi come più gli pare, gli unici limiti sono quelli di usare una sintassi corretta e di non usare domini già esistenti, come per esempio <code>google.com</code>. In caso contrario è necessario aver registrato un dominio, avere un servizio di DNS che permetta di risolverlo e quindi usare detto dominio come <code>ServerName</code>. | ||
* <code>ServerAlias</code>: è un parametro opzionale usato per specificare appunto eventuali alias del FQDN usato come <code>ServerName</code>. Valgono le considerazioni ed i limiti scritti al punto precedente. Ogni alias è separato dagli altri attraverso un carattere spazio. | * <code>ServerAlias</code>: è un parametro opzionale usato per specificare appunto eventuali alias del FQDN usato come <code>ServerName</code>. Valgono le considerazioni ed i limiti scritti al punto precedente. Ogni alias è separato dagli altri attraverso un carattere spazio. | ||
* <code>DocumentRoot</code>: è il percorso (locale) della directory sotto cui si trovano tutti i file che costituiscono il sito web. Deve essere almeno leggibile dal webserver (l'utenza associata ad Apache in debian è <code>www-data</code>). È un parametro obbligatorio. | * <code>DocumentRoot</code>: è il percorso (locale) della directory sotto cui si trovano tutti i file che costituiscono il sito web. Deve essere almeno leggibile dal webserver (l'utenza associata ad Apache in debian è <code>www-data</code>). È un parametro obbligatorio. | ||
<code>DirectoryIndex</code>: è il nome della pagina che si vuole servire in modo predefinito quando un utente specifica nel browser l'indirizzo del sito web senza specificare alcuna pagina. È un parametro opzionale. | * <code>DirectoryIndex</code>: è il nome della pagina che si vuole servire in modo predefinito quando un utente specifica nel browser l'indirizzo del sito web senza specificare alcuna pagina. È un parametro opzionale. | ||
* <code><Directory "/var/www/mio_sito">...</Directory></code> è un blocco usato per definire le proprietà di una certa directory. Tutte le direttive dichiarate all'interno del blocco si applicano esclusivamente alla cartella specificata (<code>/var/www/mio_sito</code> in questo esempio). | * <code><Directory "/var/www/mio_sito">...</Directory></code> è un blocco usato per definire le proprietà di una certa directory. Tutte le direttive dichiarate all'interno del blocco si applicano esclusivamente alla cartella specificata (<code>/var/www/mio_sito</code> in questo esempio). È una parametro opzionale. | ||
* <code>Require ip</code>: permette di restringere l'accesso al sito web sulla base dell'indirizzo ip di chi richiede la pagina. In questo esempio il sito web sarà servito esclusivamente agli indirizzi IP del gruppo <code>127.X.Y.Z</code> (cioè quelli riservati a ''localhost'') e <code>192.168.X.Y</code> (che è una delle tre classi di indirizzi privati). È un parametro opzionale. | * <code>Require ip</code>: permette di restringere l'accesso al sito web sulla base dell'indirizzo ip di chi richiede la pagina. In questo esempio il sito web sarà servito esclusivamente agli indirizzi IP del gruppo <code>127.X.Y.Z</code> (cioè quelli riservati a ''localhost'') e <code>192.168.X.Y</code> (che è una delle tre classi di indirizzi privati). È un parametro opzionale. | ||
== Attivare/disattivare un ''virtualhost'' == | |||
Una volta salvato il proprio file <code>.conf</code> è necessario abilitarlo tramite il comando <code>a2ensite</code> | |||
<pre># a2ensite mio_sito.conf</pre> | |||
oppure creando manualmente un collegamento simbolico nella cartella <code>/etc/apache2/sites-enabled/</code> | |||
<pre># ln -s /etc/apache2/sites-available/mio_sito.conf /etc/apache2/sites-enabled/mio_sito.conf</pre> | |||
quindi ricordarsi di riavviare Apache per rendere effettivamente disponibile il sito web. | |||
Similmente per disattivare un sito web è possibile o usare il comando <code>a2dissite</code> | |||
<pre># a2dissite mio_sito.conf</pre> | |||
o rimuovere manualmente il relativo collegamento simbolico | |||
<pre># rm /etc/apache2/sites-enabled/mio_sito.conf</pre> | |||
e quindi riavviare Apache. | |||
== Attivare/disattivare un modulo == | |||
Come già anticipato Apache è un applicativo altamente modulare, pertanto posto di avere già installato un certo modulo di proprio interesse è possibile attivarlo col comando | |||
<pre># a2enmod nome_modulo</pre> | |||
e similmente disattivarlo con | |||
<pre># a2dismod nome_modulo</pre> | |||
== Certificati SSL (https) == | |||
Come già accennato in precedenti sezioni di questa guida è necessario installare un certificato SSL perché un certo sito internet possa essere servito tramite protocollo <code>https</code>.<br> | |||
Per webserver esclusivamente operanti nella propria LAN è possibile creare e firmare manualmente tutti i certificati che si vogliono, mentre se si vuole ottenere un certificato per un dominio pubblico (già in possesso dell'utente) è necessario farne richiesta ad una ''certificate authority'' (CA).<br> | |||
In entrambi i casi le operazioni da effettuare non sono esattamente banali, grazie al lavoro di due fondazioni senza scopo di lucro è stato perfezionato uno strumento che permette di ottenere certificati SSL (compresi i cosidetti ''wildcard certificates'') in maniera gratuita e notevolmente semplificata. La fondazioni sono la ''Electronic Frontier Foudation'' responsabile dello sviluppo dello strumento <code>certbot</code> e ''let's encrypt'' che fornisce gratuitamente i certificat SSL. | |||
=== Certbot === | |||
<br/> | |||
{{Box|IMPORTANTE|EFF consiglia ora di installare <code>certbot</code> usando <code>snapd</code> (vedere la [https://certbot.eff.org/ pagina dedicata] di EFF).}} | |||
==== Premessa ==== | |||
Nel seguito di questa sezione si faranno le seguenti ipotesi: | |||
* l'utente ha le porte standard, ovvero '''80''' e '''443''', aperte anche in ingresso. In caso contrario molti degli automatismi dello strumento andrebbero persi e la procedura standard non sarebbe più applicabile. Da notare che i propri virtualhost possono usare qualsiasi porta, ovvero non sono obbligati ad usare le porte standard, è semplicemente <code>certbot</code> che richiede che dette porte siano aperte per funzionare correttamente; | |||
* l'utente ha già configurato il proprio eventuale firewall di rete in modo da reindirizzare correttamente le succitate porte. | |||
* l'utente non è interessato ad ottenere ''wild certificates'', cioè un certificato che copra tutti i possibili sottodomini (tipo ''*.mio_dominio.abc''). | |||
==== Installazione e configurazione ==== | |||
Per prima cosa è necessario installare i seguenti pacchetti | |||
<pre># apt install certbot python-certbot-apache</pre> | |||
quindi attivare i seguenti moduli: | |||
<pre># a2enmod a2enmod headers ssl</pre> | |||
Se tutto quanto scritto in precedenza è andato a buon fine allora è possibile digitare un comando del tipo | |||
<pre># certbot --apache -d ind1.mio_dominio.abc,ind2.mio_dominio.abc,ind3.mio_dominio.abc ...</pre> | |||
dove l'utente specifica tutti i domini che vuole siano coperti da un unico certificato. | |||
{{Box|IMPORTANTE|Tutti i domini specificati devono essere stati dichiarati ciascuno come <code>ServerName</code> di un diverso virtualhost.}} | |||
Nel caso di singolo dominio e riprendendo l'esempio fatto precedentemente il comando diviene | |||
<pre># certbot -d ind1.mio_dominio.abc</pre> | |||
Lo strumento proporrà innanzitutto tre domande | |||
<pre> | |||
Saving debug log to /var/log/letsencrypt/letsencrypt.log | |||
Plugins selected: Authenticator apache, Installer apache | |||
Enter email address (used for urgent renewal and security notices) (Enter 'c' to | |||
cancel): | |||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |||
Please read the Terms of Service at | |||
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must | |||
agree in order to register with the ACME server at | |||
https://acme-v02.api.letsencrypt.org/directory | |||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |||
(A)gree/(C)ancel: A | |||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |||
Would you be willing to share your email address with the Electronic Frontier | |||
Foundation, a founding partner of the Let's Encrypt project and the non-profit | |||
organization that develops Certbot? We'd like to send you email about our work | |||
encrypting the web, EFF news, campaigns, and ways to support digital freedom. | |||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |||
(Y)es/(N)o: | |||
</pre> | |||
Dopo di che se la configurazione è andata a buon fine restituirà qualcosa di simile a | |||
<pre> | |||
Saving debug log to /var/log/letsencrypt/letsencrypt.log | |||
Plugins selected: Authenticator apache, Installer apache | |||
Obtaining a new certificate | |||
Performing the following challenges: | |||
http-01 challenge for ind1.mio_dominio.abc | |||
Enabled Apache rewrite module | |||
Waiting for verification... | |||
Cleaning up challenges | |||
Created an SSL vhost at /etc/apache2/sites-available/mio_sito-le-ssl.conf | |||
Deploying Certificate to VirtualHost /etc/apache2/sites-available/mio_sito-le-ssl.conf | |||
Enabling available site: /etc/apache2/sites-available/mio_sito-le-ssl.conf | |||
</pre> | |||
e quindi porrà la seguente domanda: | |||
<pre> | |||
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. | |||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |||
1: No redirect - Make no further changes to the webserver configuration. | |||
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for | |||
new sites, or if you're confident your site works on HTTPS. You can undo this | |||
change by editing your web server's configuration. | |||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |||
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): | |||
</pre> | |||
Se si risponde uno sarà onere dell'utente modificare opportunamente i file conf del proprio sito web, viceversa rispondendo "2" sarà visualizzato qualcosa di simile a quanto segue: | |||
<pre> | |||
Enabled Apache rewrite module | |||
Redirecting vhost in /etc/apache2/sites-enabled/mio_sito.conf to ssl vhost in /etc/apache2/sites-available/mio_sito-le-ssl.conf | |||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |||
Congratulations! You have successfully enabled https://ind1.mio_dominio.abc | |||
You should test your configuration at: | |||
https://www.ssllabs.com/ssltest/analyze.html?d=ind1.mio_dominio.abc | |||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |||
IMPORTANT NOTES: | |||
- Congratulations! Your certificate and chain have been saved at: | |||
/etc/letsencrypt/live/ind1.mio_dominio.abc/fullchain.pem | |||
Your key file has been saved at: | |||
/etc/letsencrypt/live/ind1.mio_dominio.abc/privkey.pem | |||
Your cert will expire on 2019-08-24. To obtain a new or tweaked | |||
version of this certificate in the future, simply run certbot again | |||
with the "certonly" option. To non-interactively renew *all* of | |||
your certificates, run "certbot renew" | |||
- If you like Certbot, please consider supporting our work by: | |||
Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate | |||
Donating to EFF: https://eff.org/donate-le | |||
</pre> | |||
Si supponga ora che il file conf di partenza fosse: | |||
<pre> | |||
<VirtualHost *:80> | |||
ServerName ind1.ciao.abc | |||
DocumentRoot "/var/www/cartella_mio_sito/" | |||
DirectoryIndex pagina_principale.html | |||
</VirtualHost> | |||
</pre> | |||
Al termine delle operazione il file di partenza <code>mio_sito.conf</code> risulterà alterato come segue: | |||
<pre> | |||
<VirtualHost *:80> | |||
ServerName ind1.ciao.abc | |||
DocumentRoot "/var/www/cartella_mio_sito/" | |||
DirectoryIndex pagina_principale.html | |||
RewriteEngine on | |||
RewriteCond %{SERVER_NAME} =ind1.ciao.abc | |||
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] | |||
</VirtualHost> | |||
</pre> | |||
Contestualmente sarà stato creato un secondo file conf di nome <code>mio_sito-le-ssl.conf</code>: | |||
<pre> | |||
<IfModule mod_ssl.c> | |||
<VirtualHost *:443> | |||
ServerName ind1.ciao.abc | |||
DocumentRoot "/var/www/cartella_mio_sito/" | |||
DirectoryIndex pagina_principale.html | |||
SSLCertificateFile /etc/letsencrypt/live/ind1.ciao.abc/fullchain.pem | |||
SSLCertificateKeyFile /etc/letsencrypt/live/ind1.ciao.abc/privkey.pem | |||
Include /etc/letsencrypt/options-ssl-apache.conf | |||
</VirtualHost> | |||
</IfModule> | |||
</pre> | |||
In sintesi quello che succede è che il file di conf originale, cioè <code>mio_sito.conf</code>, viene modificato in modo da reindirizzare tutte le richieste dirette al virtualhost configurato sulla porta 80 a quello sulla porta 443, ovvero ogni richiesta http viene automaticamente convertita in una https.<br> | |||
Se non si avesse alcun interesse a mantenere il virtualhost sulla porta 80 si può disabilitare/eliminare il file <code>mio_sito.conf</code> senza problemi, tuttavia è bene sapere che tutte le richieste http non verranno più inoltrate automaticamente su https, quindi l'utente si vedrà restituire dal webserver un errore ''403 Forbidden'' (è quindi fondamentale che chi già fruiva in precedenza del sito sia informato del cambio). | |||
==== Rinnovo dei certificati ==== | |||
Certbot permette di rinnovare in automatico tutti i propri certificati con il comando <code>certbot renew</code>. Per testare subito che il predetto comando funzioni è possibile usare l'opzione <code>--dry-run</code>, ovvero: | |||
<pre># certbot renew --dry-run</pre> | |||
che in caso di successo dovrebbe restituire qualcosa di simile a: | |||
<pre> | |||
Saving debug log to /var/log/letsencrypt/letsencrypt.log | |||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |||
Processing /etc/letsencrypt/renewal/ind1.mio_dominio.abc.conf | |||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |||
Cert not due for renewal, but simulating renewal for dry run | |||
Plugins selected: Authenticator apache, Installer apache | |||
Renewing an existing certificate | |||
Performing the following challenges: | |||
http-01 challenge for ind1.mio_dominio.abc | |||
Waiting for verification... | |||
Cleaning up challenges | |||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |||
new certificate deployed with reload of apache server; fullchain is | |||
/etc/letsencrypt/live/ind1.mio_dominio.abc/fullchain.pem | |||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |||
** DRY RUN: simulating 'certbot renew' close to cert expiry | |||
** (The test certificates below have not been saved.) | |||
Congratulations, all renewals succeeded. The following certs have been renewed: | |||
/etc/letsencrypt/live/ind1.mio_dominio.abc/fullchain.pem (success) | |||
** DRY RUN: simulating 'certbot renew' close to cert expiry | |||
** (The test certificates above have not been saved.) | |||
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |||
IMPORTANT NOTES: | |||
- Your account credentials have been saved in your Certbot | |||
configuration directory at /etc/letsencrypt. You should make a | |||
secure backup of this folder now. This configuration directory will | |||
also contain certificates and private keys obtained by Certbot so | |||
making regular backups of this folder is ideal. | |||
</pre> | |||
A questo punto è possibile automatizzare il processo di rinnovo inserendo in [[Utilizzo del servizio di scheduling Cron | crontab]] il comando <code>certbot renew -q</code>, visto che i certificati '''NON''' saranno rinnovati a meno che non siano prossimi alla scadenza (l'opzione <code>-q</code> permette di sopprimere l'output del comando, fatta eccezione per eventuali errori).<br> | |||
Per esempio volendo ripetere la verifica ogni 10 del mese alla 1:30 la riga da inserire in [[Utilizzo del servizio di scheduling Cron | crontab]] sarebbe: | |||
<pre>30 1 10 * * /usr/bin/certbot renew -q</pre> | |||
==== Errori ==== | |||
===== Apache non raggiungibile ===== | |||
Se per una qualsiasi ragione il proprio webserver non risultasse raggiungibile dall'esterno la pocedurà fallirà mostrando qualcosa di simile a quanto segue: | |||
<pre> | |||
Obtaining a new certificate | |||
Performing the following challenges: | |||
http-01 challenge for mio_dominio.abc | |||
http-01 challenge for ind1.mio_dominio.abc | |||
Enabled Apache rewrite module | |||
Waiting for verification... | |||
Cleaning up challenges | |||
Failed authorization procedure. mio_dominio.abc (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching http://mio_dominio.abc/.well-known/acme-challenge/stringa_di_vari_caratteri: Connection refused, ind1.mio_dominio.abc (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching http://ind1.mio_dominio.abc/.well-known/acme-challenge/stringa_di_vari_caratteri: Connection refused | |||
IMPORTANT NOTES: | |||
- The following errors were reported by the server: | |||
Domain: mio_dominio.abc | |||
Type: connection | |||
Detail: Fetching | |||
http://mio_dominio.abc/.well-known/acme-challenge/stringa_di_vari_caratteri: | |||
Connection refused | |||
Domain: ind1.mio_dominio.abc | |||
Type: connection | |||
Detail: Fetching | |||
http://ind1.mio_dominio.abc/.well-known/acme-challenge/stringa_di_vari_caratteri: | |||
Connection refused | |||
To fix these errors, please make sure that your domain name was | |||
entered correctly and the DNS A/AAAA record(s) for that domain | |||
contain(s) the right IP address. Additionally, please check that | |||
your computer has a publicly routable IP address and that no | |||
firewalls are preventing the server from communicating with the | |||
client. If you're using the webroot plugin, you should also verify | |||
that you are serving files from the webroot path you provided. | |||
- Your account credentials have been saved in your Certbot | |||
configuration directory at /etc/letsencrypt. You should make a | |||
secure backup of this folder now. This configuration directory will | |||
also contain certificates and private keys obtained by Certbot so | |||
making regular backups of this folder is ideal. | |||
</pre> | |||
== Risoluzione problemi == | == Risoluzione problemi == | ||
Riga 161: | Riga 424: | ||
* [https://httpd.apache.org/ Sito ufficiale] | * [https://httpd.apache.org/ Sito ufficiale] | ||
* [https://letsencrypt.org/ Sito Let's Encrypt] | |||
* [https://certbot.eff.org/ Sito Certbot] | |||
Versione delle 16:16, 2 set 2023
Versioni Compatibili Tutte le versioni supportate di Debian |
Introduzione
Dalla pagina dedicata di wikipedia:
- Apache HTTP Server, o più comunemente Apache (IPA pronuncia: /aˈpætʃiː/), è il nome di un server web libero sviluppato dalla Apache Software Foundation. È la piattaforma server Web modulare più diffusa, in grado di operare su una grande varietà di sistemi operativi, tra cui UNIX/Linux, Microsoft Windows e OpenVMS.
Per usare parole più semplici un webserver è banalmente un applicativo usato per servire pagine web, ovvero è ciò che effettivamente rende disponibili agli utenti le pagine web che gli utenti richiedono quando inseriscono un indirizzo nel proprio browser.
Info Questa guida fa riferimento alle versioni di apache 2.4 e successive. |
Per una guida dedicata a Stretch che tratta un server LAMP nel suo complesso vedere questa pagina.
Installazione
Come scritto nell'introduzione Apache è un programma modulare e pertanto i pacchetti disponibili sono una miriade, ma per un'installazione base quelli che servono sono i seguenti:
# apt install apache 2 apache2-doc apache2-utils
Eventuali moduli aggiuntivi necessari saranno indicati ove richiesti.
Avvertimento "Could not reliably ... 127.0.0.1 ..."
Se durante l'installazione e/o ogni volta che si riavvia il webserver si nota il seguente avvertimento
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Significa che il webserver non è in grado di determinare quale sia il suo nome di rete, fatto assolutamente comune nel caso di server domestici. Non si tratta di un errore critico in ambiti amatoriali, tuttavia è meglio risolvere il problema. Se non sia hanno server DNS installati la soluzione più semplice è quella di editare il file /etc/hosts
aggiungendo una riga del tipo:
indirizzo_ip nome_host.home.lan nome_host
Dove indirizzo_ip
è semplicemente l'indirizzo di rete locale del proprio webserver (es. 192.168.1.1
), nome_host
è il nome della macchina e home.lan
è un dominio fittizio che può assumere qualunque valore nell'ipotesi di una comune rete domestica senza controller di rete o server DNS che gestiscano gli indirizzi LAN.
Esempio di file /etc/hosts
:
127.0.0.1 localhost 192.168.1.1 pippo.home.lan pippo # The following lines are desirable for IPv6 capable hosts ::1 localhost ip6-localhost ip6-loopback ff02::1 ip6-allnodes ff02::2 ip6-allrouters
Se ciò non fosse vero, per esempio perché si sta usando una VPS remota, evidentemente sarà necessario avere un dominio registrato ed inserire i dati corretti (ma si tratterebbe di un caso di utilizzo avanzato e pertanto chi legge dovrebbe già avere le competenze per risolvere il problema).
Moduli aggiuntivi
PHP
Uno dei moduli più gettonati è senz'altro quello che permette l'integrazione di Apache con PHP:
# apt install libapache2-mod-php
Configurazione
Ci sono fondamentalmente quattro elementi (file e cartelle) per la configurazione di Apache2:
/etc/apache2/apache2.conf
, il file più importante perché contenente le impostazioni che riguardano direttamente apache. Non richiede modifiche per i casi di utilizzo più semplici, come generalmente sono quelli di utilizzo SOHO./etc/apache2/ports.conf
, il file che definisce su quali porte (e indirizzi) rimane in ascolto apache./etc/apache2/conf-available/
, directory dove salvare file di configurazione opzionali e/o aggiuntivi./etc/apache2/sites-available/
, directory dove specificare le configurazioni dei propri siti web.
/etc/apache2/ports.conf
La direttiva principale da dichiarare in questo file è Listen numero_porta
.
Di default il file creato durante l'installazione contiene quanto segue:
# If you just change the port or add more ports here, you will likely also # have to change the VirtualHost statement in # /etc/apache2/sites-enabled/000-default.conf Listen 80 <IfModule ssl_module> Listen 443 </IfModule> <IfModule mod_gnutls.c> Listen 443 </IfModule> # vim: syntax=apache ts=4 sw=4 sts=4 sr noet
dove si può notare al primo posto la direttiva Listen 80
che istruisce il webserver ad usare la porta numero 80 per le sue comunicazioni in chiaro (protocollo http). Non essendo specificato alcun indirizzo IP Apache rimarrà in ascolto su tutte le interfacce di rete disponibili (ma sempre e solo usando la porta 80).
Nota È possibile dichiarare più volte la direttiva Listen , in modo da permettere ad Apache di rimanere in ascolto su più interfacce e/o porte.
|
Sono inoltre presenti altri due blocchi (che hanno la stessa funzione dell'operatore logico "SE") nel caso si utilizzi la cifratura SSL (protocollo https), dove si specifica la porta numero 443.
Nei casi più comuni per utenti SOHO non vi è alcuna necessità di cambiare alcunché in questo file, tuttavia val la pena citare la possibilità di specificare un indirizzo IP oltre al numero di porta. In tale caso il webserver rimarrà in ascolto esclusivamente sull'interfaccia di rete cui corrisponde detto indirizzo, ad esempio specificando:
Listen 192.168.1.1:80
il webserver accetterà connessioni che provengano esclusivamente dall'interfaccia avente IP 192.168.1.1
, sempre limitatamente alla sola porta 80.
/etc/apache2/conf-available/
Come già scritto questa directory può essere usata per salvare file di configurazione opzionali e/o aggiuntivi, ovvero per evitare di mettere mano direttamente al file di configurazione principale di apache (quindi principalmente per una questione di ordine).
È anche possibile usare questa cartella per la configurazione di applicativi extra come phpmyadmin
(invece di usare la directory dedicata a normali siti web).
Attivazione configurazioni aggiuntive
Tutte le configurazioni specificate in /etc/apache2/conf-available/
non sono caricate a meno che non vengano prima attivate creando un collegamento simbolico in /etc/apache2/conf-enabled/.
Posto ad esempio di avere creato una propria configurazione aggiuntiva /etc/apache2/conf-available/mia_configurazione.conf
la si può abilitare con il comando a2enconf
, cioè digitando
# a2enconf mia_configurazione.conf
oppure creando manualmente il relativo collegamento:
# ln -s /etc/apache2/conf-available/mia_configurazione.conf /etc/apache2/conf-enabled/mia_configurazione.conf
Similmente per disabilitare una configurazione
# a2disconf mia_configurazione.conf
oppure rimuovere manualmente il suddetto collegamento simbolico:
# rm /etc/apache2/conf-enabled/mia_configurazione.conf
/etc/apache2/sites-available/
Questa cartella permette di specificare le configurazioni dei propri siti internet (virtual-hosts) attraverso la dichiarazione di blocchi virtualhost
<VirtualHost indirizzo:porta> ... </VirtualHost>
È possibile dichiarare tutti i propri siti in un unico file di configurazione oppure creare tanti file di configurazione quanti sono i virtualhost (siti) da servire.
In debian l'installazione base di Apache crea e abilita in automatico due file di configurazione:
000-default.conf default-ssl.conf
Entrambi i file specificano una configurazione per un virtualhost predefinito costituito da un unico file, cioè /var/www/html/index.html
. La differenza tra i due è semplicemente dovuta al tipo di protocollo usato per servire le pagine:
000-default.conf
è relativo al protocollohttp
, cioè quello che non prevede alcuna cifratura delle comunicazioni che intercorrono tra browser internet e webserver;default-ssl.conf
relativo al protocollohttps
che prevede invece l'uso di cifratura. Come già scritto sopra la semplice presenza di questo file di configurazione non è però sufficiente a permettere l'utilizzo della cifratura in quanto si richiede anche l'installazione e configurazione di opportuni certificati SSL (e di nuovo si rimanda a tal proposito all'opportuna sezione di questa guida).
Se l'installazione di Apache è andata a buon fine e se la macchina su cui è in esecuzione il webserver è accessibile dalla propria LAN allora il predetto sito dovrebbe risultare accessibile e quindi visibile semplicemente inserendo in un browser l'indirizzo http://indirizzo_IP_webserver/
.
Se ad esempio l'indirizzo IP di tale macchina fosse 192.168.0.1
allora nel browser sarebbe necessario digitare http://192.168.0.1/
(oppure anche solo http://localhost/
se si sta utilizzando il browser sulla stessa macchina del webserver).
La pagina visualizzata, cioè index.html
, è estremamente semplice e inizia così:
Apache2 Debian Default Page
It works!
This is the default welcome page used to test the correct operation of the Apache2 server after installation on Debian systems.
Esempio file.conf
Una volta verificato che la pagina predefinita viene caricata è possibile procedere a scrivere i propri file di configurazione. Di seguito un esempio minimale per un sito web chiamato mio_sito.conf, che come già detto deve essere salvato in /etc/apache2/sites-available/
.
<VirtualHost *:80> ServerName mio_sito.home.lan ServerAlias alias1.home.lan alias2.ciao.abc mio_sito DocumentRoot "/var/www/cartella_mio_sito/" DirectoryIndex pagina_principale.html <Directory "/var/www/mio_sito"> Require ip 127.0.0.0/8 Require ip 192.168.0.0/16 </Directory> </VirtualHost>
Spiegazione delle direttive usate:
ServerName
: è il FQDN (Fully Qualified Domain Name) del proprio sito ed è un parametro obbligatorio (non proprio, ma è meglio considerarlo tale). In questo esempio si è chiaramente usato un dominio fittizio,home.lan
, del tutto arbitrario, ma assolutamente valido se il webserver è destinato ad operare esclusivamente in un ambito LAN (e non vi è alcun controller di dominio). Sotto queste condizioni infatti ogni utente è libero di sbizzarrirsi come più gli pare, gli unici limiti sono quelli di usare una sintassi corretta e di non usare domini già esistenti, come per esempiogoogle.com
. In caso contrario è necessario aver registrato un dominio, avere un servizio di DNS che permetta di risolverlo e quindi usare detto dominio comeServerName
.ServerAlias
: è un parametro opzionale usato per specificare appunto eventuali alias del FQDN usato comeServerName
. Valgono le considerazioni ed i limiti scritti al punto precedente. Ogni alias è separato dagli altri attraverso un carattere spazio.DocumentRoot
: è il percorso (locale) della directory sotto cui si trovano tutti i file che costituiscono il sito web. Deve essere almeno leggibile dal webserver (l'utenza associata ad Apache in debian èwww-data
). È un parametro obbligatorio.DirectoryIndex
: è il nome della pagina che si vuole servire in modo predefinito quando un utente specifica nel browser l'indirizzo del sito web senza specificare alcuna pagina. È un parametro opzionale.<Directory "/var/www/mio_sito">...</Directory>
è un blocco usato per definire le proprietà di una certa directory. Tutte le direttive dichiarate all'interno del blocco si applicano esclusivamente alla cartella specificata (/var/www/mio_sito
in questo esempio). È una parametro opzionale.Require ip
: permette di restringere l'accesso al sito web sulla base dell'indirizzo ip di chi richiede la pagina. In questo esempio il sito web sarà servito esclusivamente agli indirizzi IP del gruppo127.X.Y.Z
(cioè quelli riservati a localhost) e192.168.X.Y
(che è una delle tre classi di indirizzi privati). È un parametro opzionale.
Attivare/disattivare un virtualhost
Una volta salvato il proprio file .conf
è necessario abilitarlo tramite il comando a2ensite
# a2ensite mio_sito.conf
oppure creando manualmente un collegamento simbolico nella cartella /etc/apache2/sites-enabled/
# ln -s /etc/apache2/sites-available/mio_sito.conf /etc/apache2/sites-enabled/mio_sito.conf
quindi ricordarsi di riavviare Apache per rendere effettivamente disponibile il sito web.
Similmente per disattivare un sito web è possibile o usare il comando a2dissite
# a2dissite mio_sito.conf
o rimuovere manualmente il relativo collegamento simbolico
# rm /etc/apache2/sites-enabled/mio_sito.conf
e quindi riavviare Apache.
Attivare/disattivare un modulo
Come già anticipato Apache è un applicativo altamente modulare, pertanto posto di avere già installato un certo modulo di proprio interesse è possibile attivarlo col comando
# a2enmod nome_modulo
e similmente disattivarlo con
# a2dismod nome_modulo
Certificati SSL (https)
Come già accennato in precedenti sezioni di questa guida è necessario installare un certificato SSL perché un certo sito internet possa essere servito tramite protocollo https
.
Per webserver esclusivamente operanti nella propria LAN è possibile creare e firmare manualmente tutti i certificati che si vogliono, mentre se si vuole ottenere un certificato per un dominio pubblico (già in possesso dell'utente) è necessario farne richiesta ad una certificate authority (CA).
In entrambi i casi le operazioni da effettuare non sono esattamente banali, grazie al lavoro di due fondazioni senza scopo di lucro è stato perfezionato uno strumento che permette di ottenere certificati SSL (compresi i cosidetti wildcard certificates) in maniera gratuita e notevolmente semplificata. La fondazioni sono la Electronic Frontier Foudation responsabile dello sviluppo dello strumento certbot
e let's encrypt che fornisce gratuitamente i certificat SSL.
Certbot
IMPORTANTE EFF consiglia ora di installare certbot usando snapd (vedere la pagina dedicata di EFF).
|
Premessa
Nel seguito di questa sezione si faranno le seguenti ipotesi:
- l'utente ha le porte standard, ovvero 80 e 443, aperte anche in ingresso. In caso contrario molti degli automatismi dello strumento andrebbero persi e la procedura standard non sarebbe più applicabile. Da notare che i propri virtualhost possono usare qualsiasi porta, ovvero non sono obbligati ad usare le porte standard, è semplicemente
certbot
che richiede che dette porte siano aperte per funzionare correttamente; - l'utente ha già configurato il proprio eventuale firewall di rete in modo da reindirizzare correttamente le succitate porte.
- l'utente non è interessato ad ottenere wild certificates, cioè un certificato che copra tutti i possibili sottodomini (tipo *.mio_dominio.abc).
Installazione e configurazione
Per prima cosa è necessario installare i seguenti pacchetti
# apt install certbot python-certbot-apache
quindi attivare i seguenti moduli:
# a2enmod a2enmod headers ssl
Se tutto quanto scritto in precedenza è andato a buon fine allora è possibile digitare un comando del tipo
# certbot --apache -d ind1.mio_dominio.abc,ind2.mio_dominio.abc,ind3.mio_dominio.abc ...
dove l'utente specifica tutti i domini che vuole siano coperti da un unico certificato.
IMPORTANTE Tutti i domini specificati devono essere stati dichiarati ciascuno come ServerName di un diverso virtualhost.
|
Nel caso di singolo dominio e riprendendo l'esempio fatto precedentemente il comando diviene
# certbot -d ind1.mio_dominio.abc
Lo strumento proporrà innanzitutto tre domande
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o:
Dopo di che se la configurazione è andata a buon fine restituirà qualcosa di simile a
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator apache, Installer apache Obtaining a new certificate Performing the following challenges: http-01 challenge for ind1.mio_dominio.abc Enabled Apache rewrite module Waiting for verification... Cleaning up challenges Created an SSL vhost at /etc/apache2/sites-available/mio_sito-le-ssl.conf Deploying Certificate to VirtualHost /etc/apache2/sites-available/mio_sito-le-ssl.conf Enabling available site: /etc/apache2/sites-available/mio_sito-le-ssl.conf
e quindi porrà la seguente domanda:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
Se si risponde uno sarà onere dell'utente modificare opportunamente i file conf del proprio sito web, viceversa rispondendo "2" sarà visualizzato qualcosa di simile a quanto segue:
Enabled Apache rewrite module Redirecting vhost in /etc/apache2/sites-enabled/mio_sito.conf to ssl vhost in /etc/apache2/sites-available/mio_sito-le-ssl.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://ind1.mio_dominio.abc You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=ind1.mio_dominio.abc - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/ind1.mio_dominio.abc/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/ind1.mio_dominio.abc/privkey.pem Your cert will expire on 2019-08-24. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
Si supponga ora che il file conf di partenza fosse:
<VirtualHost *:80> ServerName ind1.ciao.abc DocumentRoot "/var/www/cartella_mio_sito/" DirectoryIndex pagina_principale.html </VirtualHost>
Al termine delle operazione il file di partenza mio_sito.conf
risulterà alterato come segue:
<VirtualHost *:80> ServerName ind1.ciao.abc DocumentRoot "/var/www/cartella_mio_sito/" DirectoryIndex pagina_principale.html RewriteEngine on RewriteCond %{SERVER_NAME} =ind1.ciao.abc RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent] </VirtualHost>
Contestualmente sarà stato creato un secondo file conf di nome mio_sito-le-ssl.conf
:
<IfModule mod_ssl.c> <VirtualHost *:443> ServerName ind1.ciao.abc DocumentRoot "/var/www/cartella_mio_sito/" DirectoryIndex pagina_principale.html SSLCertificateFile /etc/letsencrypt/live/ind1.ciao.abc/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/ind1.ciao.abc/privkey.pem Include /etc/letsencrypt/options-ssl-apache.conf </VirtualHost> </IfModule>
In sintesi quello che succede è che il file di conf originale, cioè mio_sito.conf
, viene modificato in modo da reindirizzare tutte le richieste dirette al virtualhost configurato sulla porta 80 a quello sulla porta 443, ovvero ogni richiesta http viene automaticamente convertita in una https.
Se non si avesse alcun interesse a mantenere il virtualhost sulla porta 80 si può disabilitare/eliminare il file mio_sito.conf
senza problemi, tuttavia è bene sapere che tutte le richieste http non verranno più inoltrate automaticamente su https, quindi l'utente si vedrà restituire dal webserver un errore 403 Forbidden (è quindi fondamentale che chi già fruiva in precedenza del sito sia informato del cambio).
Rinnovo dei certificati
Certbot permette di rinnovare in automatico tutti i propri certificati con il comando certbot renew
. Per testare subito che il predetto comando funzioni è possibile usare l'opzione --dry-run
, ovvero:
# certbot renew --dry-run
che in caso di successo dovrebbe restituire qualcosa di simile a:
Saving debug log to /var/log/letsencrypt/letsencrypt.log - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Processing /etc/letsencrypt/renewal/ind1.mio_dominio.abc.conf - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cert not due for renewal, but simulating renewal for dry run Plugins selected: Authenticator apache, Installer apache Renewing an existing certificate Performing the following challenges: http-01 challenge for ind1.mio_dominio.abc Waiting for verification... Cleaning up challenges - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - new certificate deployed with reload of apache server; fullchain is /etc/letsencrypt/live/ind1.mio_dominio.abc/fullchain.pem - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ** DRY RUN: simulating 'certbot renew' close to cert expiry ** (The test certificates below have not been saved.) Congratulations, all renewals succeeded. The following certs have been renewed: /etc/letsencrypt/live/ind1.mio_dominio.abc/fullchain.pem (success) ** DRY RUN: simulating 'certbot renew' close to cert expiry ** (The test certificates above have not been saved.) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal.
A questo punto è possibile automatizzare il processo di rinnovo inserendo in crontab il comando certbot renew -q
, visto che i certificati NON saranno rinnovati a meno che non siano prossimi alla scadenza (l'opzione -q
permette di sopprimere l'output del comando, fatta eccezione per eventuali errori).
Per esempio volendo ripetere la verifica ogni 10 del mese alla 1:30 la riga da inserire in crontab sarebbe:
30 1 10 * * /usr/bin/certbot renew -q
Errori
Apache non raggiungibile
Se per una qualsiasi ragione il proprio webserver non risultasse raggiungibile dall'esterno la pocedurà fallirà mostrando qualcosa di simile a quanto segue:
Obtaining a new certificate Performing the following challenges: http-01 challenge for mio_dominio.abc http-01 challenge for ind1.mio_dominio.abc Enabled Apache rewrite module Waiting for verification... Cleaning up challenges Failed authorization procedure. mio_dominio.abc (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching http://mio_dominio.abc/.well-known/acme-challenge/stringa_di_vari_caratteri: Connection refused, ind1.mio_dominio.abc (http-01): urn:ietf:params:acme:error:connection :: The server could not connect to the client to verify the domain :: Fetching http://ind1.mio_dominio.abc/.well-known/acme-challenge/stringa_di_vari_caratteri: Connection refused IMPORTANT NOTES: - The following errors were reported by the server: Domain: mio_dominio.abc Type: connection Detail: Fetching http://mio_dominio.abc/.well-known/acme-challenge/stringa_di_vari_caratteri: Connection refused Domain: ind1.mio_dominio.abc Type: connection Detail: Fetching http://ind1.mio_dominio.abc/.well-known/acme-challenge/stringa_di_vari_caratteri: Connection refused To fix these errors, please make sure that your domain name was entered correctly and the DNS A/AAAA record(s) for that domain contain(s) the right IP address. Additionally, please check that your computer has a publicly routable IP address and that no firewalls are preventing the server from communicating with the client. If you're using the webroot plugin, you should also verify that you are serving files from the webroot path you provided. - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal.
Risoluzione problemi
Prima di ogni altra cosa verificare lo stato del demone di Apache attraverso il comando:
# systemctl status apache2
Il passo immediatamente successivo è visualizzare il log dell'attività di Apache, che è generalmente esauriente, ad esempio digitando il comando:
# cat /var/log/syslog | grep 'apache'
Approfondimenti
Manpages
man apache2
Sitografia
Guida scritta da: Wtf 16:50, 26 mag 2019 (CEST) | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |