Aller au contenu principal

Générateur de hash APR1-MD5

Protégez un répertoire ou un fichier Apache en 3 clics

Vous devez ajouter un compte à un fichier .htpasswd mais vous n'avez pas la commande htpasswd sous la main ? Saisissez un nom d'utilisateur et votre propre mot de passe : la ligne au format $apr1$ est prête à coller. Pas encore de mot de passe ? Le bouton à côté du champ en génère un, mais c'est optionnel.

Saisissez le nom du compte à créer dans le fichier .htpasswd.

Points clés de l'outil

Format $apr1$ natif

L'algorithme MD5 salé d'Apache, avec ses 1 000 itérations et son encodage base64 spécifique. Compatible Apache, nginx et Traefik.

Sel aléatoire sécurisé

Un sel de 8 caractères tiré par un générateur cryptographique à chaque appel. Deux comptes au même mot de passe donnent deux hash différents.

Ligne prête à coller

Le résultat est affiché sous forme de ligne user:hash complète, directement copiable dans votre fichier .htpasswd.

Sel personnalisable

Renseignez votre propre sel pour reproduire un hash existant et comparer deux entrées d'un même fichier.

Rien n'est conservé

Le mot de passe sert au calcul puis disparaît. Aucune trace en base, aucun journal du mot de passe en clair.

Pourquoi générer un hash APR1-MD5 en ligne ?

L'authentification HTTP Basic reste la façon la plus rapide de fermer un espace d'administration, une préproduction ou un tableau de bord interne. Elle repose sur un fichier .htpasswd où chaque ligne associe un nom d'utilisateur à un mot de passe haché - jamais en clair.

Le hic : produire ce hash suppose normalement d'avoir la commande htpasswd installée, donc le paquet apache2-utils sur Debian ou httpd-tools sur RHEL. Sur un poste Windows, sur un hébergement mutualisé ou depuis une interface web, cette commande manque souvent.

Trois situations où ce générateur dépanne :

  • Protéger une préproduction → Fermer l'accès à un environnement de recette avant qu'il ne soit indexé par Google
  • Ajouter un compte sans accès SSH → Créer la ligne depuis le navigateur et la coller via le gestionnaire de fichiers de votre hébergeur
  • Migrer une configuration → Reconstruire un fichier .htpasswd perdu à partir des noms d'utilisateur connus

Comment utiliser le générateur en 3 étapes

Étape 1 : Saisir le nom d'utilisateur et le mot de passe

Renseignez le nom du compte, puis son mot de passe. Le champ est masqué par défaut ; cliquez sur l'œil pour relire votre saisie avant de valider.

Étape 2 : Laisser le sel se générer

Dans la quasi-totalité des cas, laissez le champ sel vide : un sel aléatoire de 8 caractères sera tiré côté serveur. Ne renseignez ce champ que pour reproduire un hash existant à l'identique.

Étape 3 : Copier la ligne

Deux résultats sont affichés : le hash seul et la ligne .htpasswd complète. Copiez celle-ci, collez-la dans votre fichier, puis rechargez la configuration du serveur.


Anatomie d'une ligne .htpasswd

Une ligne se découpe en deux champs séparés par un deux-points :

admin:$apr1$Xq7nD2mR$5CqLZ.k1qLkOvVQ0uZ9Yl.

Le second champ se décompose lui-même en trois parties délimitées par des $ :

PartieExempleRôle
Identifiant d'algorithmeapr1Indique au serveur qu'il s'agit du MD5 salé d'Apache
SelXq7nD2mR8 caractères tirés au hasard, stockés en clair dans le fichier
Digest5CqLZ.k1qLkOvVQ0uZ9Yl.22 caractères, résultat des 1 000 itérations

Le sel n'est pas un secret : il est lisible dans le fichier. Son rôle est d'empêcher qu'une table pré-calculée (rainbow table) ne serve à retrouver le mot de passe, et de garantir que deux comptes partageant le même mot de passe n'aient pas le même digest.


Ce que fait réellement l'algorithme $apr1$

APR1-MD5 n'est pas un simple md5(mot de passe + sel). Il enchaîne :

  1. Deux empreintes initiales - l'une sur mot de passe + $apr1$ + sel, l'autre sur mot de passe + sel + mot de passe
  2. Un mélange dépendant de la longueur - des fragments de la seconde empreinte sont réinjectés dans la première, octet par octet
  3. 1 000 itérations - à chaque tour, mot de passe, sel et empreinte précédente sont recombinés selon un motif qui dépend du numéro du tour
  4. Un encodage base64 « crypt » - les 16 octets finaux sont relus dans un ordre entrelacé, puis codés sur l'alphabet ./0-9A-Za-z

Ce sont ces 1 000 itérations qui font la différence avec un MD5 nu : elles multiplient par mille le coût d'une tentative, ce qui ralentit d'autant une attaque par dictionnaire.


Protéger un répertoire avec Apache

1. Créer le fichier

Placez votre fichier .htpasswd hors de la racine web, pour qu'il ne soit jamais servi par HTTP :

/var/www/secrets/.htpasswd

2. Déclarer la protection

Dans le .htaccess du répertoire à protéger, ou dans le bloc <Directory> de votre VirtualHost :

AuthType Basic
AuthName "Zone reservee"
AuthUserFile /var/www/secrets/.htpasswd
Require valid-user

3. Recharger la configuration

sudo apachectl configtest && sudo systemctl reload apache2

Pour nginx, la même paire de fichiers se déclare ainsi :

location /admin/ {
    auth_basic           "Zone reservee";
    auth_basic_user_file /var/www/secrets/.htpasswd;
}

APR1-MD5 face aux autres formats .htpasswd

FormatPréfixeCoût de calculVerdict
bcrypt$2y$Réglable (facteur de coût)Recommandé pour tout nouveau projet
APR1-MD5$apr1$1 000 itérations MD5Acceptable, compatibilité maximale
SHA-1{SHA}1 itération, sans selÀ éviter : pas de sel, cassable par table
crypt() DESaucun25 itérations, tronqué à 8 caractèresObsolète, à ne plus utiliser

En résumé : si votre serveur accepte bcrypt (htpasswd -B), utilisez-le. APR1-MD5 est le meilleur choix restant quand bcrypt n'est pas disponible - et il vaut infiniment mieux qu'un {SHA} sans sel.


Vérifier le hash en ligne de commande

Le résultat de cet outil est identique, à sel égal, à celui des utilitaires système :

# Avec htpasswd (paquet apache2-utils / httpd-tools)
htpasswd -nbm admin monMotDePasse

# Avec OpenSSL, en imposant le sel
openssl passwd -apr1 -salt Xq7nD2mR monMotDePasse

Le second exemple permet de contrôler cet outil : renseignez le même sel dans le formulaire, vous devez obtenir exactement la même chaîne.

Pour vérifier qu'un mot de passe correspond à une ligne existante, relisez le sel dans le hash stocké et rejouez le calcul avec ce sel.


FAQ - Questions fréquentes

Q : Qu'est-ce que le format $apr1$ ?

R : C'est le format de hachage historique d'Apache, également appelé APR1-MD5. Il applique 1 000 itérations de MD5 sur le mot de passe et un sel de 8 caractères, puis encode le résultat dans l'alphabet base64 de crypt. Le préfixe $apr1$ sert d'identifiant d'algorithme.


Q : APR1-MD5 est-il encore sûr ?

R : Il est bien plus solide qu'un MD5 nu, mais il reste rapide à calculer pour un attaquant équipé de GPU. Pour un nouveau projet, préférez bcrypt via htpasswd -B. APR1-MD5 garde son intérêt quand la compatibilité prime : anciennes versions d'Apache, nginx sans support bcrypt, appliances réseau.


Q : Ce hash fonctionne-t-il avec nginx ?

R : Oui. Le module ngx_http_auth_basic_module de nginx lit le format Apache, $apr1$ compris. La ligne générée s'utilise telle quelle avec auth_basic_user_file.


Q : Pourquoi obtenir un hash différent à chaque fois ?

R : Un nouveau sel aléatoire est tiré à chaque génération. Les deux hash sont valides pour le même mot de passe : à la vérification, le serveur relit le sel stocké dans le hash et refait le calcul. Renseignez le champ sel si vous voulez un résultat reproductible.


Q : Le mot de passe est-il stocké quelque part ?

R : Non. Il transite en HTTPS jusqu'à l'API CaptainDNS le temps du calcul, puis il est oublié. Ni base de données, ni journal contenant le mot de passe en clair.


Q : Puis-je utiliser des accents ou des symboles ?

R : Oui, le calcul porte sur les octets UTF-8 du mot de passe. Attention toutefois : un client HTTP ancien peut encoder les caractères non-ASCII différemment, ce qui ferait échouer l'authentification. En cas de doute, restez en ASCII.


Q : Où placer le fichier .htpasswd ?

R : Hors de la racine web, par exemple dans /var/www/secrets/. S'il est placé dans un répertoire servi par HTTP, un visiteur pourrait le télécharger et attaquer les hash hors ligne.


Outils complémentaires

OutilUtilité
Générateur de mots de passeTirer un mot de passe solide avant de le hasher
Hash GeneratorCalculer MD5, SHA-1, SHA-256 et SHA-512 d'un texte
Encodeur Base64Encoder l'en-tête Authorization d'une requête Basic
Analyseur d'en-têtes HTTPVérifier les en-têtes renvoyés par un espace protégé
Test HSTSS'assurer que l'accès protégé passe bien en HTTPS

Ressources utiles


Engagement confidentialité

Votre mot de passe est transmis à l'API CaptainDNS uniquement pour calculer le hash, sur une connexion chiffrée. Il n'est ni stocké ni journalisé. Seules des métriques techniques anonymes sont conservées (durée de traitement, code de réponse).