IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

htaccess : mettre une authentification + HTTPS


Sujet :

Apache

  1. #1
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut htaccess : mettre une authentification + HTTPS
    Bonjour monde,

    J'ai un site web perso hébergé chez O2switch. J'ai mis une authentification par htpasswd, et activé le HTTPS (par Let's Encrypt).Seulement quand j'active dans le .htaccess la redirection http vers https, l'authentification ne fonctionne plus, on accède au site (sans aucun script et css, mais on peut en voir le contenu).

    J'essaye de lire la doc sur le site d'Apache et de chercher une solution sur des fora, mais je n'en viens pas à bout, c'est toujours l'authentification ou le HTTPS qui fonctionne, mais jamais les deux ensemble.

    Voici mon htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    ### Let's Encrypt
    RewriteRule ^\.well-known/acme-challenge - [L]
     
    ### tests
    SetEnv APPLICATION_ENV production
    SetEnv OPERATING_SYSTEM linux
     
    RewriteEngine On
     
    ### HTTP -> HTTPS
    RewriteCond %{HTTPS} off
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
     
    ### rewrite url
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
    RewriteRule ^.*$ index.php [NC,L]
     
    ### Videos types
    AddType video/ogg  .ogv
    AddType video/mp4  .mp4 .m4v .f4v .f4p
    AddType video/webm .webm
     
    ### Encoding files
    AddDefaultCharset UTF-8
    AddCharset UTF-8 .html .css .js
     
    ### no authentification for the rss url (public)
    SetEnvIfNoCase Request_URI "/rss$" allow
     
    AuthType Basic
    AuthName "Please authenticate"
    AuthUserFile "/home5/user/.htpasswds/public/mywebsite/passwd"
    Require valid-user
     
    Order Deny,Allow
    Deny from all
    Allow from env=allow
     
    Satisfy any
     
    ### Compression
    AddOutputFilterByType DEFLATE text/text application/xml application/xhtml+xml text/html text/javascript text/css text/plain
    Le https est activé dans l'interface de gestion de l'hébergeur (ça passe par Let's Encrypt), c'est actif avec la 1e ligne du htaccess. Et ensuite j'utilise la partie "### HTTP -> HTTPS" du htaccess, hors dans ce cas ça bypasse l'authentification.

    Pour l'authentification, ce sont les 8 lignes qui démarre par AuthType Basic jusqu'à Satisfy any. Je les laisse toujours décommentées (en http et https) car je veux toujours qu'on s'authentifie, sauf que si j'ai décommenté les lignes du https, l'authentification ne se fait pas. Pour être plus précis, j'ai bien la fenêtre qui demande le login, mais si je fais Annuler, je peux quand même voir le contenu du site (le html brut s'affiche, sans js et css).

    Je n'ai pas la possibilité de voir le vhost, c'est un héberment mutualisé, donc je ne peux agir que sur ce htacces.

    Qu'est-ce qui cloche là dedans ?

    Merci pour votre aide.

  2. #2
    Membre habitué Avatar de silfun1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2015
    Messages : 117
    Points : 187
    Points
    187
    Par défaut
    Bonjour Jarodd, bonjour à tous,

    C'est vrai que c'est embettant de ne pas avoir accès à la conf globale
    Je pencherai pour un problème avec le fait d'avoir une condition (SI c'est pour le rss = rien SINON authentification). Donc implicitement, un pb avec le Satisfy.
    Peux tu tester en supprimant la condition du flux rss ?

    Je me suis permis de remanier un peu ta conf. Tente avec ma version, pour voir:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    ### Videos types
    AddType video/ogg  .ogv
    AddType video/mp4  .mp4 .m4v .f4v .f4p
    AddType video/webm .webm
     
    ### Encoding files
    AddDefaultCharset UTF-8
    AddCharset UTF-8 .html .css .js
     
    ### Compression
    AddOutputFilterByType DEFLATE text/text application/xml application/xhtml+xml text/html text/javascript text/css text/plain
     
    ### tests
    SetEnv APPLICATION_ENV production
    SetEnv OPERATING_SYSTEM linux
     
    ### Initialise Variables
    SetEnv authorise deny
     
    ### no authentification for the rss url (public)
    # Pour etre sur du nom de la variable qu'on veut renseigner, je prèfere la nommer (ici 'authorise')
    SetEnvIfNoCase Request_URI "/rss$" authorise=allow
     
    RewriteEngine On
     
    ### Let's Encrypt
    # Regle a placer après 
    RewriteRule ^\.well-known/acme-challenge - [L]
     
    ### HTTP -> HTTPS
    RewriteCond %{HTTPS} off
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
     
    ### rewrite url
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
     
    # A mon avis, cette règle n'est pas utile
    #RewriteRule ^.*$ index.php [NC,L]
     
    ### Authentification par mot de passe
    AuthType Basic
    AuthName "Please authenticate"
    AuthUserFile "/home5/user/.htpasswds/public/mywebsite/passwd"
    Require valid-user
     
    Order allow,deny
    Allow from authorise=allow
     
    Satisfy any

    Pour info, je crois que Apache traite d'abord l'authentification avant les rewrite rules.

    Sylvain


    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
    - Ne vous privez pas pour voter pour ma réponse si elle vous plaît bien
    - Ne pas hésiter à cliquer sur "Résolu" quand votre problème posé a trouvé une solution. Et un petit merci fait toujours plaisir

  3. #3
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Ah c'est pas mal du tout ! Merci pour ton aide.
    C'est là dessus (ordre des traitements) que j'ai du mal à trouver de la doc.

    Je viens de tester ton htaccess : ça fonctionne bien sur la racine du site.
    La redirection vers le https semble bien fonctionner (à part que ça renvoie vers une page 401.shtml mais ça, ça doit venir d'une config hébergeur puisque moi je n'ai rien défini de tel, donc je les contacterai à ce sujet)
    Idem pour le www, s'il est manquant on retombe toujours sur une page où on l'a (je ne suis pas sûr de conserver cette directive car cela pourrait être gênant en cas de sous-domaine... je verrai)

    Par contre sur une page domain.fr/xxx, je passe encore l'authentification quand je fais Annuler, toujours en voyant le contenu sans js et css.
    Et c'est vraiment bizarre car je n'ai pas de notion de domaine dans les directives de l'authentification, je spécifie juste le fichier où est le mot de passe.
    Donc ça signifierait que cette partie n'est pas du tout exécutée ?
    Est-ce qu'il ne faudrait pas refuser dans tous les cas, sauf si on valide le mot de passe ?
    Je vais essayer de chercher dans cette partie...

  4. #4
    Membre habitué Avatar de silfun1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2015
    Messages : 117
    Points : 187
    Points
    187
    Par défaut
    Salut Jarodd,

    Est-ce que l'authentification via un login/mot de passe fonctionne (indépendamment du pb du bouton "annuler") ?

    Pour le fait que tu puisse passer outre l'authentification, peux-tu tester ta conf en commentant les lignes suivantes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Order Deny,Allow
    Deny from all
    Allow from env=allow
    Satisfy any
    ou sur mon exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Order allow,deny
    Allow from authorise=allow
    Satisfy any
    Le but étant de retirer la condition de la variable env/authorise.

    Sylvain


    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
    - Ne vous privez pas pour voter pour ma réponse si elle vous plaît bien
    - Ne pas hésiter à cliquer sur "Résolu" quand votre problème posé a trouvé une solution. Et un petit merci fait toujours plaisir

  5. #5
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    En écartant le problème du bouton Annuler, oui l'authentification fonctionne. Si je ne met pas d'identifiant, ou des mauvais, je n'entre pas sur le site.
    Maic ce Annuler est vraiment bizarre, car si je vois ma page d'accueil sans js/css, je ne suis pas considéré comme authentifié pour autant, car si je rafraîchis la page, j'ai de nouveau la demande d'authentification !

    Je teste ton bout de code, mais je ne le comprends pas : il refuse tout accès, sauf pour l'url du flux RSS ? Dans ce cas on ne peut jamais s'authentifier sur le site, puisqu'on n'aura pas l'url du flux ?

  6. #6
    Membre habitué Avatar de silfun1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2015
    Messages : 117
    Points : 187
    Points
    187
    Par défaut
    Salut Jarodd,

    En fait, j'ai l'impression qu'on ne peut pas avoir plusieurs conditions sur la même balise (comme c'est le cas ici).
    Du coup, il faudrait ajouter une balise "Location" pour les flux rss.

    Peux tu tester ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    ### Videos types
    AddType video/ogg  .ogv
    AddType video/mp4  .mp4 .m4v .f4v .f4p
    AddType video/webm .webm
     
    ### Encoding files
    AddDefaultCharset UTF-8
    AddCharset UTF-8 .html .css .js
     
    ### Compression
    AddOutputFilterByType DEFLATE text/text application/xml application/xhtml+xml text/html text/javascript text/css text/plain
     
    ### tests
    SetEnv APPLICATION_ENV production
    SetEnv OPERATING_SYSTEM linux
     
    ### Initialise Variables
    SetEnv authorise deny
     
    ### no authentification for the rss url (public)
    # Pour etre sur du nom de la variable qu'on veut renseigner, je prèfere la nommer (ici 'authorise')
    SetEnvIfNoCase Request_URI "/rss$" authorise=allow
     
    RewriteEngine On
     
    ### Let's Encrypt
    RewriteRule ^\.well-known/acme-challenge - [L]
     
    ### HTTP -> HTTPS
    RewriteCond %{HTTPS} off
    RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
    RewriteCond %{HTTP_HOST} !^www\.
    RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
     
    ### rewrite url
    ## Test si la requete concerne un fichier ou un répertoire qui existe
    RewriteCond %{REQUEST_FILENAME} -s [OR]
    RewriteCond %{REQUEST_FILENAME} -l [OR]
    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^.*$ - [NC,L]
     
    # A mon avis, cette règle n'est pas utile
    #RewriteRule ^.*$ index.php [NC,L]
     
    ### Authentification par mot de passe
    AuthType Basic
    AuthName "Please authenticate"
    AuthBasicProvider file
    AuthUserFile "/home5/user/.htpasswds/public/mywebsite/passwd"
    Require valid-user
     
    <Location /rss>
    	Order Allow,Deny
    	Allow from All
    	Satisfy Any
    </Location>


    L'informatique, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
    - Ne vous privez pas pour voter pour ma réponse si elle vous plaît bien
    - Ne pas hésiter à cliquer sur "Résolu" quand votre problème posé a trouvé une solution. Et un petit merci fait toujours plaisir

  7. #7
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Hello,

    J'ai essayé en simplifiant au max le fichier .htaccess pour cibler le problème. Voici son contenu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    ErrorDocument 401 "Test"
     
    # Let's encrypt
    RewriteRule ^.well-known/acme-challenge - [L]
     
    ### Authentication by passwd
    AuthUserFile "/home5/jarodd/.htpasswds/public_html/laschamps.net/passwd"
    AuthType Basic
    AuthName "Veuillez vous identifier"
    Require valid-user
    Sur une requête http, en faisant Annuler je vois le contenu du site, et je suis redirigé vers 401.shtml.
    Sur une requête https, j'ai bien le refus d'authenficiation (nouvelle fenêtre de demande).

    C'est incompréhensible...

  8. #8
    Membre expérimenté
    Avatar de Jarodd
    Profil pro
    Inscrit en
    Août 2005
    Messages
    851
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 851
    Points : 1 717
    Points
    1 717
    Par défaut
    Bonjour,

    Suite et fin des recherches... Avec le htaccess ci-dessus, cela fonctionne aujourd'hui. Il y avait peut-être un problème de cache serveur qui prenait une ancienne version ?
    En tout cas c'est résolu.

    Merci bcp pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre une adresse http dans une variable php
    Par Glork dans le forum Langage
    Réponses: 15
    Dernier message: 25/07/2013, 16h15
  2. Erreur d'appel à un Web Service avec une authentification HTTP basic
    Par Lordsephiroth dans le forum Services Web
    Réponses: 3
    Dernier message: 28/09/2011, 16h53
  3. anuler une authentification http
    Par berok37 dans le forum Sécurité
    Réponses: 1
    Dernier message: 18/01/2008, 22h44
  4. Réponses: 1
    Dernier message: 25/09/2007, 09h18
  5. Réponses: 6
    Dernier message: 11/09/2007, 18h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo