Https et authentification

Bonjour,

J'ai un site en html static (fait avec hugo). Je souhaite qu'il soit accessible uniquement en https avec un login et mot de passe.

La solution recommandé par ovh est d'utiliser le fichier .htaccess . C'est ce que j'ai fait en combinant les guides redirection https et celui sur le login/mot de passe (et en lisant celui sur SSL) et cela ne marche pas de façon raisonnable. Par exemple, si on tente d'accéder au site http://domaine.com, il se passe cela:

http:/ /domaine.com -> login et mot de passe en clair
Redirection vers https:/ /domaine.com -> login et mot de passe
Redirection vers https:/ /www.domaine.com -> login et mot de passe

Demander logins+mdp 3 fois n'est pas raisonnable d'après moi. En plus, avoir un beau certificat SSL, mais avoir les mdp transmis en clair ne me convient pas.

J'ai ouvert un ticket auprès de l'assistance. Le support technique / commercial me dit qu'ils ne peuvent pas m'aider car "tout est fonctionnel" de leur coté. Ils me renvoient ici.

Une approche saine serait de trouver un moyen de rediriger http:/ /domaine.com, http:/ /www.domaine.com et https:/ /domaine.com vers https:/ /www.domaine.com avant de demander un login et un mot de passe.

Les approches tentées:
* un seul .htaccess dans www
* mettre un .htaccess à la racine (pour la redirection https) et un .htaccess dans www pour le login+mdp (ne change rien)
* utiliser une redirection DNS visible de domaine.com vers https:/ /www.domaine.com (ne marche pas mieux pour les cas http:/ /www.domaine.com et https:/ /domaine.com et créer des alertes de certificats SSL)
* utiliser l'option "SSLOptions +StrictRequire"=> ne marche pas car mod_ssl n'est pas actif sur les serveurs OVH
* pour utiliser une règle RedirectSSL (NB: c'est l'approche recommandée par apache: https://wiki.apache.org/httpd/RewriteHTTPToHTTPS), il faudrait avoir accès à la configuration vhost => pas possible chez ovh. (d'ailleurs, celle-ci n'est même pas visible, il faut l'imaginer pour trouver une solution créative…)

J'ai testé tout ce à quoi j'ai pu penser avec les contraintes imposées par OVH. J'espère que vous pourrez m'aider à trouver une solution.

Merci d'avance

Catkfr

PS: les liens http:/ / avec l'espace sont à cause la config du forum. En tant que nouvel utilisateur, je n'ai le droit qu'à deux liens par message. Pour un forum qui doit permettre de débattre de configuration web, c'est une idée très peu pratique…

Peux tu nous donner ce que tu as mis dans ton. Htaccess ?

Je dirai qu'il faut d'abord mettre la Redirection et le hsts en place

#force la redirection en HTTPS
RewriteEngine on
RewriteCond %{SERVER_PORT} 80 [OR]
RewriteCond %{HTTP_HOST} ^monsite.com$ [NC]
RewriteRule ^(.*) https://www.monsite.com/$1 [QSA,L,R=301]
#permet aux navigateurs de se souvenir qu'il doit passer en https pour votre site (HSTS)

Header set Strict-Transport-Security "max-age=15811200; includeSubDomains; preload"


Puis ensuite les lignes concernant le .Htpasswd

Merci Buddy pour la réponse rapide.
J'ai pu testé le hsts. Sans succès…
J'ai testé tes conditions et j'arrive souvent sur une redirection qui ne marche pas vers https://www.domaine.com/www

Voici le fichier actuel à la racine:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.domaine.com$ [NC]
RewriteRule ^$ "https://www.domaine.com/" [L,R=301]
RewriteCond %{HTTPS} !=on [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Header set Strict-Transport-Security "max-age=15811200; includeSubDomains; preload"

La partie htpasswd est dans le htaccess de www
Il y a un soucis de priorité: le htpasswd étant prioritaire sur les redirections…

Le hsts ne marchera qu'a la 2eme visite ou sinon dès la première si tu inscris ton site sur la liste des sites full https
https://hstspreload.org

Le. Htaccess que je te conseille doit être dans le dossier www/ (au même niveau que le index.php ou index.html de ton site)

Il ne doit pas y avoir de htaccess dans le dossier /


Tu devrais mettre les redirections comme je te l'ai indiqué ci dessus car ici tu fais 2 redirections.. Au lieu d'une avec mon code.

Merci pour l'info sur le site hstspreload.org

Je cherche justement à avoir du https dès la première connexion pour éviter d'avoir le mot de passe transmis en clair.

Faire une seule redirection me convient parfaitement! Pour le moment, je n'ai pas encore compris pourquoi il me renvoie par moment sur www.mondomaine.com/www/

En fait, vu la structure de mon site, seuls les liens https:/ /www.mondomaine.com/qqchose existent. Donc si jamais quelqu'un se connecte en http://ou https:/ /mondomaine.com, je veux qu'il aille sur la page d'accueil soit https://www.mondomaine.com

L'idée d'avoir 2 htaccess vient du support technique ovh… Je vais tester avec un seul.


Pour le moment, je n'ai pas encore compris pourquoi il me renvoie par moment sur www.mondomaine.com/www/

Car ton. Htaccess est 1 dossier en dessous de www/ si l'on peut dire ainsi. Mets un seul. Htaccess dans le dossier /www/ et ça marchera.

Merci pour ton aide Buddy et pour l'explication. Je n'arrive pas à trouver le format des conditions apache compréhensible…

J'ai fait la modif: un seul .htaccess dans www

C'est plus propre. Malheureusement, cela ne résout pas le problème car la partie htpasswd est prioritaire sur tout le reste.

En pratique, depuis http://, http://www, https:// j'ai toujours 2 logins/mdp (parfois en clair) et une redirection pour arriver sur https://www.

Si je fais le test sur hstspreload.org, il me donne 2 erreurs:
* No HSTS header is present on the response
* `http://monsite.com` does not redirect to `https://monsite.com`.

Encore une fois, c'est parce que la demande login/mdp arrive avant les redirections. Donc tenter de résoudre le manque de configuration du serveur OVH par une solution tiers n'est encore pas possible.

Je commence à être vraiment frustré et, à tout dire un peu dégouté d'avoir choisi OVH pour mon site. Leur config oblige à trouver des astuces car on ne peut pas faire ce que je souhaite proprement. Le support technique me propose de payer un de leur partenaires pour chercher une solution à mes soucis de configurations. Je trouve cela hallucinant…

Encore une fois, les solutions propres consistent soit à utiliser mod_ssl, soit à modifier les vhosts: c'est OVH qui empêche d'utiliser ces solutions (cf premier post).
Le support technique préfère se cacher derrière: nous fournissons l'infrastructure et la configuration est votre problème. Si quelqu'un d'OVH lit ce message, j'espère qu'il se rendra compte que peut être le problème est du coté de la configuration OVH.

Si malgré tout quelqu'un arrive à trouver une autre approche, je reste preneur et prêt à essayer!

Bonjour,

Nous ne pouvons pas donner accès à la configuration des vhosts, celle-ci étant créée à la volé à votre arrivé sur un serveur web (vous pouvez changer plusieurs fois de serveurs par jours).

Le ssl n'est pas porté par la configuration apache, mais par nos load balancer, mod_ssl est donc inutile.

Il s'agit ici d'un soucis Apache (et non OVH), et donc une configuration htaccess comme cela devrait le faire : (à adapter selon votre besoin)

SetEnvIf %{SERVER_PORT} ^80$ IS_NON_SSL

RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

AuthUserFile /home/user/path/passwdfile
AuthName "AuthName"
AuthType Basic
require valid-user
Allow from env=IS_NON_SSL

Les connexions en clair, ne demanderont pas de mot de passe, mais vu qu'il y aura redirection sur le https (443) et que dans ce cas le mot de passe est demandé, tout ira bien :slight_smile:

Cdt,

Bonjour,

Merci pour cet éclairage technique et pour cette proposition. J'attendais ce type d'échanges depuis que j'ai ouvert ma demande auprès du support technique le 19/01.

Malheureusement, dans mes tests, celle-ci ne fonctionne pas. :frowning:
Je n'ai pas réussi à le faire fonctionner malgré plus de 2h à chercher, à lire et à tester différentes approches en se basant sur l'approche SetEnvIf que vous suggérez.

Mon rêve serait d'avoir une case à cocher dans l'interface OVH pour forcer le https. Et vous gérez si vous voulez le faire lors de la création des vhosts à la volée, sur votre load balancer… Ça semble l'étape logique après avoir offert des certificats SSL à vos clients. Pour le reste, le fichier htaccess est tout à fait approprié.
Là, en 1 semaine, je pense avoir perdu 10h sans solution.

Bonjour,

Ça reste un Mutualisé.

Pour une solution plus souple il y a le vps à 3euro/mois mais il faut les configurer.

Avec le hsts seul à leur 1ere connexion vos visiteurs passeront en http après si le hsts est activé toutes les futures connexions se feront obligatoirement en https.
Après comme votre site semble soumis à un password, je suppose qu'il n'est pas indexé par Google. Donc quelqu'un leur a bien donné l'URL de votre site avec le couple login/mdp dans ce cas là il suffit de leur donner également le lien avec https:// au début.

Bonjour @catkfr

Le problème que tu rencontres est dû à une priorisation Apache des directives d'authentification par rapport aux directives du module rewrite. OVH n'y peut rien dans cette contrainte et même si tu prends un serveur dédié (ou VPS), tu auras le même problème. La seule chose que tu pourrais faire sur une dédié, c'est de jouer avec les vhosts :

* Faire pointer les http (avec et sans www) ainsi que le https://domaine.tld sur un dossier comportant un .htaccess sans les directives Auth
* Faire pointer l'url finale https://www.domaine.tld sur un autre dossier avec un .htaccess comportant uniquement les directives Auth

Ce serait en Apache 2.4 j'aurai une solution … mais je pense que c'est 2.2 … dommage.

Cela étant, j'ai une solution à priori fonctionnelle pour au moins que le HTTP soit redirigé vers le HTTPS :

AuthUserFile /home/xxxxxxxx/www/.htpasswd
AuthName "Secure"
AuthType Basic

Order Deny,Allow
Deny from all
Satisfy Any
Allow from env=!HTTPS
Require valid-user

RewriteEngine On

RewriteCond %{HTTP_HOST} !^www.domaine.tld$ [OR]
RewriteCond %{SERVER_PORT} !443
RewriteRule (.*) https://www.domaine.tld/ [QSA,R=301,L]

Laurent

Bonjour,
Je me permets de me brancher sur ce fil car j'ai un problème similaire quoique un peu plus complexe.
J'ai un htaccess au niveau de www qui redirige classiquement vers https://www.domaine.tld
Sous www j'ai un répertoire (directory) protégé par htpasswd qui est accessible par un multi-site.
Pour des raisons d'affichage (accès aux ressources) je redirige les appels au multi-site vers https://www.domaine.tld/directory.
J'ai donc dans ce répertoire un htaccess qui :
- demande le mot de passe
- redirige vers le répertoire si la demande vient du multi-site.
Le résultat est que le mot de passe est demandé deux fois.
Comment résoudre ce soucis ?

Bonjour Laurent,

Merci! Cette approche a résolu une bonne partie de mes soucis!

La redirection http -> https marche maintenant sans me demander de mot de passe en clair. C'était mon objectif numéro un!

Pour info, voici la redirection que j'utilise:

RewriteCond %{SERVER_PORT} 80 [OR]
RewriteCond %{HTTP_HOST} ^monsite.com$ [NC]
RewriteRule ^(.*) https://www.monsite.com/$1 [QSA,L,R=302]

Elle me permet de faire une seule redirection. Par contre, la redirection https://monsite.com me demande toujours de mettre login et mot de passe en double. Je vais voir si je ne peux adapter ton approche pour y arriver.

Pour répondre à Buddy:
Quant à l'approche VPS: oui, elle est moins cher et elle peut offrir plus de flexibilité, certes mais l'offre est quand même bien différente. J'ai choisi de payer plus pour la formule d'hébergement pour ne pas devoir faire de configuration/administration de serveur. C'est aussi pour ça que j'exprime ma déception d'avoir perdu autant de temps.

Encore merci Lannoy

catkfr


Bonjour,
Je me permets de me brancher sur ce fil car j'ai un problème similaire quoique un peu plus complexe.
J'ai un htaccess au niveau de www qui redirige classiquement vers https://www.domaine.tld
Sous www j'ai un répertoire (directory) protégé par htpasswd qui est accessible par un multi-site.
Pour des raisons d'affichage (accès aux ressources) je redirige les appels au multi-site vers https://www.domaine.tld/directory.
J'ai donc dans ce répertoire un htaccess qui :
- demande le mot de passe
- redirige vers le répertoire si la demande vient du multi-site.
Le résultat est que le mot de passe est demandé deux fois.
Comment résoudre ce soucis ?

Bonjour,
Ayant médité sur le post de https://community.ovh.com/users/Lannoy j'ai trouvé cette solution :
`AuthUserFile /home/domaine/.htpasswd
AuthGroupFile /dev/null
AuthName "Zone privée, accès réservé"
AuthType Basic
Order Deny,Allow
Deny from all
Satisfy Any
Allow from env=!HTTPS
require valid-user
RewriteEngine on
RewriteCond %{HTTP_HOST} ^multi\.domaine\.tld(.*) [NC,OR]
RewriteCond %{SERVER_PORT} !443
RewriteRule ^(.*)$ https://www.domaine.tld/directory$1 [L,R=301]`
Cela fonctionne parfaitement. Merci Laurent.

Bonjour @Daniel60

Je suis perplexe sur l'usage de la référence %1 de ta dernière ligne car la condition en référence doit être satisfaite pour cela … et elle ne l'est pas si tu accès à l'URL suivante :
`http://www.domaine.tld/directory`
… et comme %1 n'est plus définie, tu seras alors redirigé vers :
`https://www./directory`

Tu confirmes stp ?

Laurent

Exact, j'ai corrigé le post.
Daniel

Bonjour

sur mon site j’essaye de mettre une double identification via .htaccess

je suis la documentation
https://docs.ovh.com/fr/hosting/mutualise-htaccess-comment-proteger-lacces-a-un-repertoire-par-une-authentification/

AuthUserFile /home/votre_login_ftp/www/.htpasswd
AuthGroupFile /dev/null
AuthName "Accès Restreint"
AuthType Basic
require valid-user

que j'ai mis dans mon .htaccess de mon répertoire wp-admin
il me demande bien de mettre cette double identification, par contre lorsque j'arrive dans la partie identification de WP, je n'ai pas la charte graphique et surtout
je me retrouve sur "Internal Server Error"

J'ai mis la même chose sur un autre hébergeur et cela fonctionne

Avez vous une idée ?

Cordialement


il me demande bien de mettre cette double identification, par contre lorsque j'arrive dans la partie identification de WP, je n'ai pas la charte graphique et surtout
je me retrouve sur "Internal Server Error"

Cela ne me parait pas anormal.

En effet la 2ème identification faite par Wordpress nécessite, je présume, un dialogue qui est bloquée par la 1ère identification dans .htaccess.

Bonjour,

Et que disent les logs à propos de l'erreur 500 ?

Car au pif c'est soit un mauvais chemin dans le .htaccess soit un mauvais encodage du .htaccess et/ou .htpasswd

Note: de plus dans ce genre de casbilvest préférable de créer son propre topic plutôt que de "voler" celui-ci d'une autre personne.

Cordialement, janus57