Résolue

[DJANGO] Sécuriser l'appel d'une clé RSA

# Configuration # Django

Bonjour,

J'ai mis un place la signature numérique pour l'envoie des emails avec DKIM.
Pour cela j'utilise le module django-dkim, la configuration est OK les emails sont bien signés.

Pour fonctionner il faut ajouter, entre autre, la directive DKIM_PRIVATE_KEY dans le fichier settings.py, comme ceci :

DKIM_PRIVATE_KEY = '''-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDTXdPazccmYWOx
Y3vAHADrdp1oDqXC3t4zwnadSlYwNbBC7FcKv0yyTKoDyYNTOcSm2w17HWuZmU72
4U5p2D/KorU9IVqh0r5dNkSzV1Kl4xUA6NQbShLgDnDruNfK9fm8b+3+MPRpIfCm
Lgb+0Wk/sC/JGO23Kqp57I4To4rah8F+X/qvLztF9r+M9j8iFEWmvR3t6MJUTSVX
upSd1JJRRRbrWlbRMys9nl3GN+xmRdFmOpUZz1vRBEAyEw3KKdcxo/sjqqcZaWBW
... ... ...
VZwURF/aHfJVsMsgY3XD3H0wBz0HLhJAe+ZHYozE3pDPX8o+7kAJkyTEywKBgCRd
LTEh1+fOyO9gnjKoOY3yE6x6RMeTPaR+WQPFCVLvcysAkR6ZMG1EVs7r3DZRHCbn
K+v8HsLzisvKCs+w4EbW+1PottrKbM2oy/YAr7emXhKHN/7mDKOJQt5gs91A6J9M
pRDMQSnfAMK3KL3i809Sn3kGNiUCEGzFy5GG7h3RAoGAKkeAsXTQbzBUBLogleTt
IDkcrPi6vqe7vvUBoAfFuTwCUpiyNi9l8mx3PwA2qkbjDr7Zj5DwK/s3Y/USK0Xj
oJUbbCVhpyVYNUIC0FrbFxHeyh96UST8A9f9MtmHmIEoebB7DDc/JzbXh7kyimFF
thE/56yFGNzpittgyYFVbcE=
-----END PRIVATE KEY-----'''

Pour éviter de faire apparaître la clé privé dans le fichier settings.py, j'ai voulu la stocker dans le fichier .env mais django n'arrive pas à la réccupérer, j'ai essayé de la stocker sur plusieurs lignes, une seule ligne, avec guillemets, sans guillemet, rien à faire !

Pour faire appel aux variables d'environnement, j'utilise django-environ et appel la variable comme ceci :

DKIM_PRIVATE_KEY = env("DKIM_PRIVATE_KEY")

Je ne comprend pas pourquoi cela ne fonctionne pas, c'est une simple chaine de caractère pourtant ?

Que peut-on faire pour faire appel à la clé privé de manière sécurisée ?

Merci !

J'ai peut être trouvé une solution en lisant le contenu du fichier contenant la clé avec la méthode read_text() du module Pathlib :

settings.py :

DKIM_PRIVATE_KEY = (BASE_DIR / "DjangoContact" / "dkim_private.pem").read_text()

Le fichier dkim_private.pem à des droits uniquement en lecture pour l'utilisateur et groupe www-data.

Le test DKIM est OK. Le procéder me semble correcte !

Salut Cam !

Pour le problème avec django-environ, je pense qu'il faut juste que tu spécifies le paramètre multiline à True comme indiqué ici :
https://django-environ.readthedocs.io/en/latest/tips.html#multiline-value

Mais oui ta solution avec le fichier .pem me semble valide aussi :)

Merci Thibault !!

Il faut vraiment que je prenne l'habitude d'aller checker la documentation.

Je vais tester ça et te fais un retour ;-)

dkim=pass (Good 2048  bit rsa-sha256 signature)

:-))

Pfiuuu, J'ai passé pratiquement trois jours sur postfix et pouvoir envoyer des emails clean en configurant la zone de DNS du serveur, SPF, DKIM, DMARC, PTR et autres joyeuseries. Je vais pouvoir mettre un point d'orgue sur cette partie !!

Encore merci !

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.