Est-il possible de forcer apache à demander le mot de passe uniquement si l'utilisateur n'a pas de certificat-client installé ?
Je suis presque sûr que c'est possible, mais je ne trouve aucune confirmation nulle part.
Est-il possible de configurer Apache pour qu'il agisse de la sorte ?
Si l'utilisateur dispose d'un certificat client, Apache autorisera la connexion à la page Web sans aucun problème ni question. Si le certificat de l'utilisateur n'est pas disponible côté client, il demandera une authentification de base - il demandera donc un mot de passe ?
Comment le configurer ? Je me bats contre ça depuis ce matin sans aucune solution même pour s'en tenir à ça.
0 votes
Vous avez bien lu le manuel et surtout le
SSLOptions +FakeBasicAuth
section ?0 votes
Bien sûr que je l'ai fait ;) Mais je ne suis pas sûr d'avoir bien compris. Voici quelque chose que j'ai essayé : [lien] httpd.apache.org/docs/trunk/ssl/ssl_howto.html#certauthenticate Mais cela ne fonctionne pas comme je le souhaite. 1. Il demande un certificat. S'il n'y a pas de certificat, l'accès n'est pas accordé. Si je donne le certificat - l'accès est accordé et l'authentification de base est déclenchée en demandant le login et le mot de passe. Mais il n'accepte pas le mot de passe que j'ai créé dans le fichier avec htpasswd, au lieu de cela il essaie de valider l'utilisateur créé à partir des données du certificat. J'ai essayé de créer un tel utilisateur manuellement, mais cela ne fonctionne pas non plus. Je suis donc bloqué ;)
0 votes
Une fois de plus, ce dont j'ai besoin est : si le certificat est fourni, l'accès est accordé. Si le certificat est absent, il faut demander le mot de passe, et s'il est validé, l'accès est accordé. Pour l'instant, le mot de passe est demandé après la validation du certificat. J'ai essayé avec SSLRequire optional
0 votes
OK. Cela fonctionne donc comme suit pour l'instant. S'il n'y a pas de certificat, c'est bon. Le mot de passe est demandé et, s'il est tapé correctement, il permet d'accéder au site. Si le certificat est fourni, l'authentification ne devrait pas apparaître - mais elle apparaît. Dans le fichier error.log, j'ai une erreur de mot de passe pour l'utilisateur : /C=Something/ST=Something/L=Something/O=Something/OU=Something/CN=backup-something.com - et CN est aussi le nom de mon serveur. Je pense que la configuration d'apache est correcte - mais j'ai besoin de préparer un fichier passfile avec htpasswd d'une manière spéciale, ou de créer un certificat d'une manière spéciale. Mais comment ? ;)
0 votes
OK. RÉSOLU ! :P Ce qu'il fallait, c'était changer le mot de passe dans le fichier passfile en : xxj31ZMTZzkVA qui est "password" (lu dans le manuel d'apache) - ça marche très bien !
0 votes
Le fichier .htpasswd doit contenir les utilisateurs qui s'authentifient avec des certificats clients ainsi que ceux qui utilisent l'authentification de base. Le nom d'utilisateur dans le fichier de mots de passe est le nom du sujet tel qu'il est défini dans le certificat du client.
openssl x509 -noout -subject -in client-certificate.crt
affichera ce nom d'utilisateur. Le mot de passe "crypté" dans le fichier de mots de passe doit êtrexxj31ZMTZzkVA
pour tous les utilisateurs qui s'authentifient avec un certificat client. SSLVerifyClient devrait être optionnel.