BSD-FAQ-it
Indietro | Capitolo 11. Apache2 | Avanti

# 11.3. Attiviamo mod_ssl

Il modulo mod_ssl fornisce un layer di compatibilità tra Apache2 e le librerie OpenSSL e pertanto consente di utilizzare protocolli come il Secure Socket Layer e il Transport Layer Security. Per attivare il modulo SSL dovrà essere editato il file /usr/local/etc/apache2/ssl.conf in modo da definire sia il percorso dove verrà salvata la chiave privata che il relativo certificato digitale autosegnato

    SSLCertificateFile /usr/local/etc/apache2/ssl.crt/server.crt
    SSLCertificateKeyFile /usr/local/etc/apache2/ssl.key/server.key

generiamo la chiave privata utilizzando le openssl ed in particolare il 3DES come sistema crittografico

    [root@battaglia root]# openssl genrsa -des3 -out server.key 1024
    warning, not much extra random data, consider using the -rand option
    Generating RSA private key, 1024 bit long modulus
    ...++++++
    ..........................++++++
    e is 65537 (0x10001)
    Enter PEM pass phrase:
    Verifying password - Enter PEM pass phrase:

utilizziamo la chiave privata appena creata per generare un certificato digitale auto-segnato che utilizzeremo con il nostro web server, il certificato avrà una validità di 365 gg. a partire dalla data di generazione

    [root@battaglia root]# openssl req -new -key server.key -x509 -days 365 -out server.crt
    Using configuration from /etc/ssl/openssl.cnf
    Enter PEM pass phrase:
    You are about to be asked to enter information that will be incorporated
    into your certificate request.What you are about to enter is what is
    called a Distinguished Name or a DN.There are quite a few fields but
    you can leave some blank. For some fields there will be a default
    value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:IT
    State or Province Name (full name) [Some-State]:Italia
    Locality Name (eg, city) []:Roma
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:www.MyORG.com
    Organizational Unit Name (eg, section) []:MyUnit
    Common Name (eg, YOUR name) []:Stefano
    Email Address []:netmaster@merlinobbs.net

possiamo anche utilizzare una procedura alternativa per generare la chiave privata e il relativo certificato autosegnato che prevedono una durata per 365 gg. In questo esempio genereremo i files file.key e file.crt

    # openssl req -x509 -newkey rsa:2048 -keyout file.key -out file.crt -days 365 -nodes
    Generating a 2048 bit RSA private key
    ..........................................................................................................................................................+++
    ..........+++
    writing new private key to 'file.key'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:IT
    State or Province Name (full name) [Some-State]:Italy
    Locality Name (eg, city) []:Rome
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:MyORG
    Organizational Unit Name (eg, section) []:MyNetUnit
    Common Name (eg, YOUR name) []:Netmaster
    Email Address []:netmaster@miodominio.org

Nel file /usr/local/etc/apache2/ssl.conf sono presenti le direttive SSLCertificateFile e SSLCertificateKeyFile, sulla scorta di queste informazioni dovremo spostare i file che abbiamo appena generato nelle directory indicate dalle direttive di Apache2

    [root@battaglia root]# ls -l *.key *.crt
    -rw-r--r-- 1 root wheel 1257 Apr 17 11:57 battaglia.crt
    -rw-r--r-- 1 root wheel 963 Apr 17 11:54 battaglia.key
    .......
    .......
    [root@battaglia root]# mv *.crt /usr/local/etc/apache2/ssl.crt/server.crt
    [root@battaglia root]# mv *.key /usr/local/etc/apache2/ssl.key/server.key

A questo punto sarà sufficente stoppare il servizio Apache2 e riavviarlo con il modulo mod_ssl attivato:

    [root@battaglia root]# apachectl stop
    [root@battaglia root]# apachectl sslstart

Verifichiamo l'attivazione del server web Apache2

    [root@battaglia root]# nmap localhost
    Starting nmap 3.20 ( www.insecure.org/nmap/ ) at 2003-04-17 12:14 CEST
    Interesting ports on localhost (127.0.0.1):
    (The 1604 ports scanned but not shown below are in state: closed)
    Port State Service
    22/tcp open ssh
    25/tcp open smtp
    80/tcp open http
    443/tcp open https
    587/tcp open submission
    3128/tcp open squid-http
    3306/tcp open mysql
    Nmap run completed -- 1 IP address (1 host up) scanned in 9.262 seconds

Come abbiamo già accennato in precedenza, Il server Apache2 verrà avviato automaticamente con il processo di boot grazie allo script /usr/local/etc/rc.d/apache2.sh, questo script verifica la presenza del certificato digitale autosegnato (il nome dei file dovrà sempre essere nel formato standard server.crt e server.key) e della retativa chiave privata del server. Se la verifica avrà esito positivo verrà inizializzata sia la sessione in chiaro che rimarrà in ascolto sulla porta 80 e la sessione crittata (SSL) che rimarrà in ascolto sulla porta 443.

Indietro | Partenza | Avanti
Installiamo Apache2 | Risali | Note sulla sicurezza