Serveur Apache HTTP Version 2.4
Module Apache mod_session_crypto
Description: | Support du chiffrement des sessions |
---|---|
Statut: | Expérimental |
Identificateur de Module: | session_crypto_module |
Fichier Source: | mod_session_crypto.c |
Compatibilité: | Disponible depuis la version 2.3 d'Apache |
Sommaire
Avertissement
Les modules de session font usage des cookies HTTP, et peuvent à ce titre être victimes d'attaques de type Cross Site Scripting, ou divulguer des informations à caractère privé aux clients. Veuillez vous assurer que les risques ainsi encourus ont été pris en compte avant d'activer le support des sessions sur votre serveur.
Ce sous-module du module mod_session
fournit le
support du chiffrement des sessions utilisateur avant de les
enregistrer dans une base de données locale, ou dans un cookie HTTP
au niveau du navigateur distant.
Il peut contribuer à préserver la confidentialité des sessions lorsque leur contenu doit rester privé pour l'utilisateur, ou lorsqu'une protection contre les attaques de type cross site scripting est nécessaire.
Pour plus de détails à propos de l'interface des sessions, voir
la documentation du module mod_session
.
Utilisation de base
Pour créer une session chiffrée et la stocker dans un cookie nommé session, configurez la comme suit :
Session chiffrée stockée au niveau du serveur
Session On SessionCookieName session path=/ SessionCryptoPassphrase secret
La session sera chiffrée avec la clé spécifiée. Il est possible de configurer plusieurs serveurs pour qu'ils puissent partager des sessions, en s'assurant que la même clé de chiffrement est utilisée sur chaque serveur.
Si la clé de chiffrement est modifiée, les sessions seront automatiquement invalidées.
Pour des détails sur la manière dont une session peut être
utilisée pour stocker des informations de type nom
d'utilisateur/mot de passe, voir la documentation du module
mod_auth_form
.
Directive SessionCryptoCipher
Description: | L'algorithme à utiliser pour le chiffrement de la session |
---|---|
Syntaxe: | SessionCryptoCipher algorithme |
Défaut: | aes256 |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Expérimental |
Module: | mod_session_crypto |
Compatibilité: | Disponible depuis la version 2.3.0 du serveur HTTP Apache |
La directive SessionCryptoCipher
permet de
spécifier l'algorithme à utiliser pour le chiffrement. En l'absence
de spécification, l'algorithme par défaut est aes256
.
L'algorithme peut être choisi, en fonction du moteur de chiffrement utilisé, parmi les valeurs suivantes :
- 3des192
- aes128
- aes192
- aes256
Directive SessionCryptoDriver
Description: | Le pilote de chiffrement à utiliser pour chiffrer les sessions |
---|---|
Syntaxe: | SessionCryptoDriver nom [param[=valeur]] |
Défaut: | aucun |
Contexte: | configuration du serveur |
Statut: | Expérimental |
Module: | mod_session_crypto |
Compatibilité: | Disponible depuis la version 2.3.0 d'Apache |
La directive SessionCryptoDriver
permet de
spécifier le nom du pilote à utiliser pour le chiffrement. Si aucun
pilote n'est spécifié, le pilote utilisé par défaut sera le pilote
recommandé compilé avec APR-util.
Le pilote de chiffrement NSS nécessite certains paramètres de configuration, qui seront spécifiés comme arguments de la directive avec des valeurs optionnelles après le nom du pilote.
NSS sans base de données de certificats
SessionCryptoDriver nss
NSS avec base de données de certificats
SessionCryptoDriver nss dir=certs
NSS avec base de données de certificats et paramètres
SessionCryptoDriver nss dir=certs clé3=clé3.db cert7=cert7.db secmod=secmod
NSS avec chemins contenant des espaces
SessionCryptoDriver nss "dir=My Certs" key3=key3.db cert7=cert7.db secmod=secmod
Le pilote de chiffrement NSS peut avoir été configuré
au préalable dans une autre partie du serveur, par exemple depuis
mod_nss
ou mod_ldap
. Si c'est le
cas, un avertissement sera enregistré dans le journal, et la
configuration existante s'en trouvera affectée. Pour éviter cet
avertissement, utilisez le paramètre noinit
comme suit :
NSS avec base de données de certificats
SessionCryptoDriver nss noinit
Pour éviter la confusion, assurez-vous que tous les modules utilisant NSS soient configurés avec des paramètres identiques.
Le pilote de chiffrement openssl accepte un paramètre optionnel permettant de spécifier le moteur de chiffrement à utiliser.
OpenSSL avec spécification du moteur de chiffrement
SessionCryptoDriver openssl engine=nom-moteur
Directive SessionCryptoPassphrase
Description: | La clé utilisée pour chiffrer la session |
---|---|
Syntaxe: | SessionCryptoPassphrase secret [ secret ... ] |
Défaut: | none |
Contexte: | configuration du serveur, serveur virtuel, répertoire, .htaccess |
Statut: | Expérimental |
Module: | mod_session_crypto |
Compatibilité: | Disponible depuis la version 2.3.0 d'Apache |
La directive SessionCryptoPassphrase
permet de spécifier les clés à utiliser pour chiffrer de manière
symétrique le contenu de la session avant de l'enregistrer, ou pour
déchiffrer le contenu de la session après sa lecture.
L'utilisation de clés longues et composées de caractères vraiment aléatoires est plus performant en matière de sécurité. Modifier une clé sur un serveur a pour effet d'invalider toutes les sessions existantes.
Il est possible de spécifier plusieurs clés afin de mettre en oeuvre la rotation de clés. La première clé spécifiée sera utilisée pour le chiffrement, alors que l'ensemble des clés spécifiées le sera pour le déchiffrement. Pour effectuer une rotation périodique des clés sur plusieurs serveurs, ajoutez une nouvelle clé en fin de liste, puis, une fois la rotation complète effectuée, supprimez la première clé de la liste.
Depuis la version 2.4.7, si la valeur de l'argument commence par exec: , la commande spécifiée sera exécutée, et la première ligne que cette dernière renverra sur la sortie standard sera utilisée comme clé.
# clé spécifiée et utilisée en tant que tel SessionCryptoPassphrase secret # exécution de /path/to/program pour générer la clé SessionCryptoPassphrase exec:/path/to/program # exécution de /path/to/program avec un argument pour générer la clé SessionCryptoPassphrase "exec:/path/to/otherProgram argument1"
Directive SessionCryptoPassphraseFile
Description: | Le fichier contenant les clés utilisées pour chiffrer la session |
---|---|
Syntaxe: | SessionCryptoPassphraseFile nom-fichier |
Défaut: | none |
Contexte: | configuration du serveur, serveur virtuel, répertoire |
Statut: | Expérimental |
Module: | mod_session_crypto |
Compatibilité: | Disponible depuis la version 2.3.0 du serveur HTTP Apache |
La directive SessionCryptoPassphraseFile
permet de spécifier le nom d'un fichier de configuration contenant
les clés à utiliser pour le chiffrement et le déchiffrement de la
session (une clé par ligne). Le fichier est lu au démarrage du
serveur, et un redémarrage graceful est nécessaire pour prendre en
compte un éventuel changement de clés.
À la différence de la directive
SessionCryptoPassphrase
, les clés ne sont pas
présentes dans le fichier de configuration de httpd et peuvent être
cachées via une protection appropriée du fichier de clés.
Il est possible de spécifier plusieurs clés afin de mettre en oeuvre la rotation de clés. La première clé spécifiée sera utilisée pour le chiffrement, alors que l'ensemble des clés spécifiées le sera pour le déchiffrement. Pour effectuer une rotation périodique des clés sur plusieurs serveurs, ajoutez une nouvelle clé en fin de liste, puis, une fois la rotation complète effectuée, supprimez la première clé de la liste.