Configurazione avanzata di mod_ssl - Server Level Configuration

Per avere un server funzionale non occorre una ricerca esasperata della configurazione ottimale di mod_ssl, ma questo modulo ci mette a disposizione un insieme di direttive che ci permette di avere un controllo totale sull'erogazione del servizio tramite il protocollo HTTPS.

Tutte le seguenti direttive dovranno essere inserite nel file di configurazione httpd.conf più precisamente all'altezza del server level configuration, da escludere l'uso di queste direttive per i singoli VirtualHosts.

SSLRandomSeed
La funzionalità random per SSL è fondamentale, poiché riduce al minimo la possibilità di deduzione della "key session" scambiata tra il client e il server. Tramite questa direttiva è possibile specificare la sorgente per questi dati casuali, la quale sarà interrogata o solo allo startup del server o ad ogni nuova connessione, ovviamente la seconda risulta più sicura ma pregiudica un poco le prestazioni del server.
La configurazione minima per questa direttiva è:
SSLRandomSeed startup builtin
Questo specifica al modulo mod_ssl che ad ogni startup deve utilizzare uno pseudo-random number generator all'interno del codice di mod_ssl, non è un vero e proprio generatore di dati casuali ma è sempre meglio di niente.
E' possibile utilizzare sempre la stessa sorgente per ogni nuova connessione:
SSLRandomSeed connect builtin
La soluzione migliore (in ambiente Unix) è quella di utilizzare i random device come /dev/random e /dev/urandom e opzionalmente specificare il numero di bytes da estrarre, ovviamente piu sono meglio è per quanto riguarda la sicurezza ma una richiesta potrebbe rivelarsi troppo onerosa in ambito di risorse del sistema.
La possibilità di estrarre un numero esatto di bytes è funzionale solo per /dev/urandom:
SSLRandomSeed connect /dev/random
SSLRandomSeed connect /dev/urandom 512

Oppure si ha la possibilità di utiliizare package esterni all'OS ed al modulo mod_ssl come truerand disponibile nella sottodirectory pkg.contrib di mod_ssl.
Più direttive SSLRandomSeed possono essere specificate di seguito per "aumentare la randomizzazione" dei dati:
SSLRandomSeed startup builtin
SSLRandomSeed startup /dev/urandom 1024
SSLRandomSeed connect builtin
SSLRandomSeed connect /usr/local/apache/bin/truerand 32
SSLRandomSeed connect /dev/urandom 512


SSL session cache
Le sessioni SSL possono essere, opzionalmente, cacheate per una maggior performance del server web. La direttiva che controlla il caching è SSLSessionCache con tre diverse possibilità:
Caching disabilitato, default configuration:
SSLSessionCache none
Caching tramite DBM db file:
SSLSessionCache dbm:path
Caching tramite shared memory segment stabilita da un file, con parametro opzionale per indicare la dimensione:
SSLSessionCache shm:path[size]

Per avere un maggior controllo della cache ci si può appoggiare alle direttive SSLSessiononCacheTimeout e SSLMutex. La prima identifica il timeout della cache e la seconda si può vedere come un semaforo che gestisce il write lock della cache, questo per avitare che più processi di Apache scrivino sulla stessa cache e quindi evitare sovrapposizioni e "scrambling" dei contenuti:
Cache time out di 300 sec per ogni sessione
SSLSessiononCacheTimeout 300
Uso del semaforo per locking della cache
SSLMutex sem
Le opzioni disponibili per la direttiva SSLMutex sono:
Disabilita il mutex lock:
SSLMutex none
Usa un file per indicare cha la cache è in lock:
SSLMutex file:path
Usa i semafori di sistema:
SSLMutex sem

Privacy Policy