Appunti sparsi su Apache e Apache 2

Configurazione minimale di Apache 2 su Devuan Jessie e Debian 8

Di default Apache 2 si avvia senza supporto https e senza named virtual.

Io preferisco usare sempre dei named virtual, quindi imposto un default che non porti a nulla (una directory con un index.html senza niente) e poi tanti named virtual quanti ne servono.

Attenzione: se imposti un named virtual che ha lo stesso nome del FQDN del server (che so, mail.example.com) questo named virtual non funzionera`. I named virtual devono SEMPRE avere un nome diverso dal FQDN del server.

Configurazione minimale di Apache 2 per servire http e https:

Se vogliamo anche https, occorre abilitare il modulo con il comando a2enmod ssl e creare i certificati. Se non abilitiamo il modulo ssl le configurazioni di ssl verranno ignorate.

A questo punto possiamo creare un named virtual che non sia il default, se ci serve

* Creare un file sites-available/default.conf con dentro le configurazioni per nostro named virtual, poniamo che sia "webmail.example.com":

Redirect da un sito a un altro

Per, per esempio, forzare un redirect da un sito http all'equivalente https, posso usare il comando "redirect" o il comando "redirectmatch" dentro alla configurazione. Posso usarlo anche per fare altri redirect non necessariamente fra http e https. Notare che devo indicare l' url di partenza (/) e quello di arrivo. Per evitare problemi con il rinnovo dei certificati di Let's Encrypt e` opportuno usare un redirect che NON ridiriga le richieste dei files sotto /.well-known/acme-challenge/.

Esempio:

<VirtualHost *:80>
        ServerName www.pippo.com
        ServerAdmin email@pippo.com
        RedirectMatch 301 ^(?!/\.well-known/acme-challenge/).* https://www.pippo.com$0
        DocumentRoot /var/www/dovevuoitu 
</VirtualHost>

<VirtualHost *:443>
        SSLEngine on
        SSLCertificateFile /etc/apache2/ssl/pippo.crt
        SSLCertificateKeyFile /etc/apache2/ssl/pippo.key

        Eccetera eccetera

</VirtualHost>

Hardening dell' SSL

Questa e` la configurazione suggerita per Apache 2.4 o superiore per disabiltare i protocolli meno sicuri:

SSLProtocol ALL -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS

Gestione del charset

Se le pagine del sito contengono caratteri non-standard che non sono codificati correttamente in HTML (tipo le lettere accentate), e queste nel browser vengono male, occorre definire il charset standard. Per farlo, editare /etc/apache2/conf.d/charset e modificarlo in modo che contenga AddDefaultCharset ISO-8859-1.

Creazione di un certificato SSL self-signed per Apache2

openssl req -new -x509 -days 3650 -nodes -out server.crt -keyout server.key
chmod 400 server.key

I due files server.crt e server.key vanno definiti nella config di apache.

Statistiche di accesso e uso

Configurazione di apache 1.3 con mod_ssl

Dopo aver installato apache 1.3 e mod_ssl, per avere il supporto per http e https occorre come minimo una configurazione con due virtualhosts, cosi`:

Listen 80
Listen 443

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
</VirtualHost>

<VirtualHost *:443>
        # Configurazione SSL
        SSLEngine on
        SSLCertificateFile /etc/apache/ssl/server.crt
        SSLCertificateKeyFile /etc/apache/ssl/server.key
</VirtualHost>

Questa ovviamente e` superminimale, ma funziona se si ha di fatto un solo host (niente virtuali davvero) che vuole fare sia http che https.

LinuxDebian/Apache (last edited 2023-09-04 17:15:49 by Kurgan)