Apache - Redirection http vers https

Salut la planète,

J’aimerais résoudre un problème sur mon serveur Apache 2.4. Je voudrais faire une redirection http vers https de mon domaine mais j’obtiens une réponse type 400 quand j’essaie en http :

Bad Request
Your browser sent a request that this server could not understand.
Reason: You’re speaking plain HTTP to an SSL-enabled server port.
Instead use the HTTPS scheme to access this URL, please.

Je n’ai pas trouvé comment y parvenir.

Pouvez-vous m’aidez ?

Voici ma conf apache :

<VirtualHost *:80>
    ServerName mondomaine.fr
    ServerAdmin XXX@gmail.com
    DocumentRoot /var/www/html/owncloud

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    #Include conf-available/serve-cgi-bin.conf

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

    #RewriteCond %{SERVER_NAME} = mondomaine.fr
    #RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName mondomaine.fr
    ServerAdmin XXX@gmail.com
    DocumentRoot /var/www/html/owncloud

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    #Include conf-available/serve-cgi-bin.conf

    RewriteEngine on
# Some rewrite rules in this file were disabled on your HTTPS site,
# because they have the potential to create redirection loops.
#     RewriteCond %{SERVER_NAME} = mondomaine.fr
#     RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
SSLCertificateFile /etc/letsencrypt/live/mondomaine.fr/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mondomaine.fr/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>

</IfModule>

Merci ! :wink:

Bonjour

Ta partie http est trop lourde ce n’est pas un Rewrite qu’il faut mais un Redirect comme cela ton cloud est full https.

Voila ma config pour owncloud également qui fonctionne parfaitement

<VirtualHost *:80>
       ServerName owncloud.mondomaine.com
       Redirect permanent / https://owncloud.mondomaine.com

</VirtualHost>

<VirtualHost *:443>
        ServerName owncloud.mondomaine.lan
        ServerAlias owncloud.mondomaine.com
        DocumentRoot "/var/www/owncloud/"
        <Directory "/var/www/owncloud/">
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                Allow from all
        </Directory>
        SSLEngine on
        SSLVerifyClient none
        SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
        SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
        SSLCertificateFile /etc/letsencrypt/live/owncloud.mondomaine.com/fullchain.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/owncloud.mondomaine.com/privkey.pem
        Include /etc/letsencrypt/options-ssl-apache.conf
        ServerSignature Off
        <IfModule mod_headers.c>
        Header always set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"
        </IfModule>
        ErrorLog /var/log/apache2/owncloud-error.log
        LogLevel warn
</virtualHost>

Effectivement,

j’ai effacé les Rewrite Rules et j’ai mis la directive Redirect dans < VH *:80 > avant de voir ta réponse, mais cela n’y change rien. Le Bad Request 400 est toujours présent, aucune redirection n’est effectuée. J’essaye avec les directives que tu as écrite. Merci !

Avec ça, c’est mieux ?

1 J'aime

Clairement mieux :innocent:

Merci pour vos réponses,

Malheureusement rien ne fonctionne. Je n’arrive pas à comprendre où est ce que la config ne me permet pas de rediriger vers https dans la conf apache. J’obtiens à chaque fois le Bad Request 400. Évidemment je redémarre apache2 à chaque modification. À l’heure actuel voici le < VH *:80 > :

<VirtualHost *:80>
        ServerName mondomaine.fr

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        #Include conf-available/serve-cgi-bin.conf

        Redirect permanent / https://mondomaine.fr/

</VirtualHost>

Ce fichier de conf est bien activé (avec a2ensite) et de même pour mon fichier de conf < VH *:443 > (enfin je ne pense pas que le problème provient de se VirtualHost dont j’ai pris le soin de séparé de celui en écoute sur le port 80.

HTTPS fonctionne très bien. Inutile de vous montrer la configuration donc.
Je peux juste vous dire que lorsque j’ai lancé le script letsencrypt j’ai bien précisé que je souhaitais autoriser HTTP et HTTPS.

Voici les access logs apache :

[18/Mar/2017:09:04:44 +0100] “POST /backend.php HTTP/1.1” 200

J’ai bien un code retour 200

Peut être s’agit t-il simplement d’un mauvais paramétrage de owncloud que j’utilise, je vais regarder.

EDIT : Après 20 minutes, environ, tout semble fonctionner. Je n’ai pas compris réellement pourquoi. Mais ca fonctionne. Merci à vous :wink: !!