Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 04/12/2014, à 11:54

hazertyck

forcer HTTPS au lieu de HTTP avec apache2

Re-bonjour,

C'est ma journée "sécurisation" :-) en plus de mon topic a propos de la sécurisation FTP, j'aimerais forcer les visiteurs de mon site à le visiter en HTTPS et non en HTTP.

J'ai déjà installé des modules ssl, j'ai déjà auto-signé mes certificats, mon serveur apache fonctionne, et je peut le joindre en http ou en https selon ce que je met dans l'URL.

Désormais je cherche à ce que la redirection soit automatique : HTTP -> HTTPS

J'ai vu moules sites qui l'expliquent, mais il faut passer par mod rewriting (ça ne me gène pas) sauf que tous les autos parlent de modifier HTTPD.conf, or, je n'ai pas ce fichier.

Où est sensé se trouver ce fichier http.conf ?
existe-t-il d'autres solutions (les plus simples me conviendrons d'avantage big_smile ) Pour forcer le HTTPS (redirection php ... ? )

Merci par avance les amis.

(ps : promis après ces deux topics je ne vous embête plus de si tôt.)

Hors ligne

#2 Le 04/12/2014, à 13:34

mazarini

Re : forcer HTTPS au lieu de HTTP avec apache2

J'avais bricolé un système avec :
1) Pas de vhost pour l'url non désirée (domaine.com vs www.domaine.com ou http vs https) pour accéder au vhost par défaut.
2) vhost par défaut avec une page d'erreur 404 définie comme /index.php et le fichier index.php à la racine qui gère la redirection ou affiche une page d'erreur si rien de prévu avec une erreur 503.

Pour gérer la redirection, j'utilisais les variables genre $_SERVER['?'] à retrouver via la fonction phpinfo() pour avoir tout ce qui est disponible. De mémoire, je renvoyais une erreur 301 ou 302 pour indiquer que l'url avait été déplacée définitivement.

Je ne sais pas si c'est la bonne solution, mais ca marchait.


S'il existait une école de la politique, les locaux devraient être édifiés rue de la Santé. Les élèves pourraient s'habituer. (Pierre Dac)

Hors ligne

#3 Le 04/12/2014, à 13:58

bruno

Re : forcer HTTPS au lieu de HTTP avec apache2

Ce type de configuration se fait dans le fichier de l'hôte virtuel, par exemple pour un domaine toto.fr :

<VirtualHost *:80>
        ServerName toto.fr
        RewriteEngine on
        RewriteCond %{HTTPS} !^on
        RewriteRule ^(.*) https://toto.fr:443$1 [QSA,L,R=301]
</VirtualHost>
<VirtualHost *:443>
        ServerAdmin webmaster@toto.fr
        ServerName toto.fr
        DocumentRoot /srv/web/toto.fr/www
        <Directory /srv/web/toto.fr/www>
                Options -Indexes +FollowSymLinks +MultiViews
                AllowOverride all
                Order allow,deny
                allow from all
        </Directory>
        # logs
        ErrorLog /srv/web/toto.fr/logs/error.log
        LogLevel warn
        CustomLog /srv/web/toto.fr/logs/access.log combined
       # SSL config and certificate
        SSLEngine On
        SSLProtocol All -SSLv3 -SSLv2
        SSLCertificateKeyFile /etc/ssl/private/toto.fr.key
        SSLCertificateFile /etc/ssl/server-certs/toto.fr.crt
</VirtualHost>

Dernière modification par bruno (Le 04/12/2014, à 14:02)

Hors ligne

#4 Le 04/12/2014, à 14:58

hazertyck

Re : forcer HTTPS au lieu de HTTP avec apache2

Merci pour vos réponses.
Bruno, peut tu me préciser dans quel fichier metre la configuration que tu me donnes ? parce que justement j'ai souvent vu ce genre de configuration, mais c'est tout le temps dans httpd.conf, fichier que je n'ai pas visiblement.

Pourrais-tu me donner le chemin depuis la racine et le nom du fichier ? (je présumes que c'est dans /etc/apache2/ ..... ??? )

Merci encore.

Hors ligne

#5 Le 04/12/2014, à 15:38

mazarini

Re : forcer HTTPS au lieu de HTTP avec apache2

La solution de Bruno me semble meilleure que la mienne.

Il faut créer le fichier dans /etc/apache2/site-available puis activer le site (je crée juste un lien dans  /etc/apache2/site-enable mais il y a une commande pour ca)

A toi de voir si tu crées 1 fichier pour les 2 vhost ou 1 par vhost. Perso, je crée 1 fichier par vhost et je les appelle NNN-www.domaine.com-ssl (NNN : numéro d'ordre et -ssl pour distinguer http et https)
J'ai ainsi une liste de site :
000-default (juste une erreur 503)
000-default-ssl (juste une erreur 503)
100-www.domaine.com
200-www.domaine.com-ssl
300-admin.domain.com
...
comme ca je sais de suite sur quel fichier intervenir. les "default" servent à bloquer les accès via l'adresse ip ou des noms de domaine qui pointeraient vers mon ip par erreur.

Edit : Faudra que je vois comment adapter pour toto.fr => www.toto.fr ou le contraire

Dernière modification par mazarini (Le 04/12/2014, à 15:40)


S'il existait une école de la politique, les locaux devraient être édifiés rue de la Santé. Les élèves pourraient s'habituer. (Pierre Dac)

Hors ligne

#6 Le 04/12/2014, à 15:52

bruno

Re : forcer HTTPS au lieu de HTTP avec apache2

mazarini a écrit :

Edit : Faudra que je vois comment adapter pour toto.fr => www.toto.fr ou le contraire

Personnellement je considère qu'un serveur web doit répondre indifférement sur les deux domaines toto.fr et www.toto.fr (le préfixe www étant une sale habitude très ancrée dans les mœurs), j'ai donc une règle du type :

        RewriteCond %{HTTP_HOST} !^(www).toto.fr$
        RewriteRule ^(.*) https://www.toto.fr$1 [QSA,L,R=301]

pour que toto.fr soit redirigé de façon permanente sur www.toto.fr
Si tu veux faire l'inverse :

        RewriteCond %{HTTP_HOST} ^(www).toto.fr$
        RewriteRule ^(.*) https://toto.fr$1 [QSA,L,R=301]

-------------------------------------------------------------------------------------------------------

Pour hazertyck, la configuration des hôtes virtuels se fait dans les fichiers présents sous /etc/apache2/sites-available. Le fichier httpd.conf est obsolète depuis longtemps…

Si tu n'as qu'un seul site hébergé le fichier /etc/apache2/sites-available/000-default (ou 000-default.conf suivant ta version) suffit. Sinon le mieux est de créer autant fichiers que tu as de sites, par exemple un fichier /etc/apache2/sites-available/toto.fr.conf pour le domaine toto.fr. Il faut ensuite activer les site avec :

sudo a2ensite toto.fr

(ce qui crée un lien symbolique dans le dossier /etc/apache2/sites-enabled

Bon, je t'invite à lire attentivement la doc officielle d'apache et la doc spécifique à Ubuntu/Debian présente dans /usr/share/doc/apache2/README.Debian

Dernière modification par bruno (Le 04/12/2014, à 16:00)

Hors ligne