Générer une SECRET_KEY pour Django
Ce guide explique comment créer une nouvelle SECRET_KEY pour un projet Django. Découvrez deux méthodes simples pour générer une clé sécurisée, que ce soit via les outils natifs du framework ou avec la bibliothèque standard Python.
Le rôle de la SECRET_KEY
Dans Django, la variable SECRET_KEY est essentielle pour sécuriser les mécanismes cryptographiques internes, comme la signature des cookies de session ou la réinitialisation des mots de passe.
Lors de l'initialisation d'un nouveau projet avec la commande django-admin startproject, une clé aléatoire est automatiquement générée dans le fichier settings.py. Cependant, cette clé par défaut commence systématiquement par le préfixe django-insecure-. Il s'agit d'un avertissement visuel mis en place par les développeurs du framework pour indiquer qu'il s'agit d'une clé de développement. Elle ne doit en aucun cas être conservée telle quelle ou exposée publiquement lors d'un passage en production.
Méthode 1 : Générer une clé avec Django
Cette méthode est idéale si le projet est déjà configuré, car elle exploite une fonction native du framework. Avant de procéder, veillez à bien activer l'environnement virtuel du projet afin d'accéder aux dépendances Python installées.
Activez l'environnement virtuel, puis lancez le shell interactif de Django :
# Activation de l'environnement virtuel (exemple sous GNU/Linux)
source venv/bin/activate
# Lancement du shell de Django
python manage.py shell
Générez ensuite la nouvelle clé en utilisant le module utilitaire prévu à cet effet :
from django.core.management.utils import get_random_secret_key
# Générez et afficher la nouvelle SECRET_KEY
print(get_random_secret_key())
Copiez la chaîne de caractères renvoyée par le terminal, puis quittez le shell.
Méthode 2 : Utiliser la bibliothèque standard Python
Si l'environnement Django n'est pas encore initialisé, il est possible d'utiliser le module secrets, disponible dans la bibliothèque standard Python. Ce module est spécialement conçu pour générer des données aléatoires robustes d'un point de vue cryptographique.
Ouvrez un interpréteur Python classique :
python
Exécutez les instructions suivantes :
import secrets
# Générez une chaîne sécurisée adaptée à un usage de secret
print(secrets.token_urlsafe(50))
Copiez le résultat obtenu dans le terminal.
Mettre à jour la configuration
Une fois la nouvelle clé générée, ouvrez le fichier settings.py du projet pour remplacer l'ancienne valeur.
# settings.py
# Ancienne valeur générée à la création du projet (à supprimer)
# SECRET_KEY = 'django-insecure-...'
# Nouvelle valeur générée manuellement
SECRET_KEY = 'votre-nouvelle-cle-generee-ici'
Bonnes pratiques en production
En production, il est fortement déconseillé d'écrire la SECRET_KEY en dur dans le code source. Il est préférable d'utiliser une variable d'environnement (par exemple avec os.environ.get('SECRET_KEY')) afin d'éviter toute compromission en cas de fuite du dépôt de code.
Redémarrez ensuite le serveur de développement pour que les changements soient pris en compte. Si la configuration est correcte, le projet Django continuera de fonctionner normalement avec sa nouvelle clé.