PnX-SI / GeoNature

Application de saisie et de synthèse des observations faune et flore
GNU General Public License v3.0
104 stars 102 forks source link

Question: Activer la maintenance en SSL/HTTPS #2016

Open maximetoma opened 2 years ago

maximetoma commented 2 years ago

Bonjour,

Je fais echo au ticket #757, n'étant pas très fort sur le côté apache, je n'arrive pas à activer la page de maintenance avec mon nouveau serveur en ssl J'ai le fichier geonature_maintenance.conf dans /etc/apache2/sites-available/ :

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName sep-geonature.reserves-naturelles.org
    # ServerAlias sep-geonature.reserves-naturelles.org
    DocumentRoot "/home/geonatureadmin/geonature/frontend/dist"

    IncludeOptional /etc/apache2/conf-available/geonature.conf
    IncludeOptional /etc/apache2/conf-available/taxhub.conf
    IncludeOptional /etc/apache2/conf-available/usershub.conf

    ErrorLog "/var/log/apache2/geonature_error.log"
    CustomLog "/var/log/apache2/geonature_access.log" combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/sep-geonature.reserves-naturelles.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/sep-geonature.reserves-naturelles.org/privkey.pem
</VirtualHost>
</IfModule>

Et une variante que j'ai essayé sans succès :

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName sep-geonature.reserves-naturelles.org
    # ServerAlias sep-geonature.reserves-naturelles.org
    DocumentRoot "/home/geonatureadmin/geonature/frontend/src/app/maintenance"

    IncludeOptional /etc/apache2/conf-available/geonature_maintenance.conf
    IncludeOptional /etc/apache2/conf-available/taxhub.conf
    IncludeOptional /etc/apache2/conf-available/usershub.conf

    ErrorLog "/var/log/apache2/geonature_error.log"
    CustomLog "/var/log/apache2/geonature_access.log" combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/sep-geonature.reserves-naturelles.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/sep-geonature.reserves-naturelles.org/privkey.pem
</VirtualHost>
</IfModule>

Quelqu'un à déjà eu à faire cette manip ? Et si oui, qu'est-ce qui n'irai pas dans mon code ?

Merci :)

TheoLechemia commented 2 years ago

Tu peux juste copié collé le contenu de ta conf geonature ssl qui fonctionne et changer le chemin qui pointe vers dist (le dossier ou est compiler ton front), vers la ou est le répertoire maintenance

Il semble manqué la partie DIrectory dans ta conf

Notre conf (je n'ai pas vérifié s'il elle marchait, je ne l'utilise pas)

<IfModule mod_ssl.c>
    <VirtualHost *:443>
            ServerName geonature.ecrins-parcnational.fr
            DocumentRoot /home/geonatadmin/geonature/frontend/src/app/maintenance
            #Alias / /home/geonatadmin/geonature/frontend/dist

            <Directory /home/geonatadmin/geonature/frontend/src/app/maintenance>
                    Require all granted
            </Directory>

            <Location /api>
                    ProxyPass http://127.0.0.1:8000 timeout=300
                    ProxyPassReverse  http://127.0.0.1:8000
            </Location>

SSLCertificateFile /etc/letsencrypt/live/geonature.ecrins-parcnational.fr/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/geonature.ecrins-parcnational.fr/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
maximetoma commented 2 years ago

De mon côté j'ai essayé et malheureusement il me pointe toujours sur le dist, malgré que je désactive bien le site geonature et que j'active ensuite celui de la maintenance (et que je fasse systemctl restart apache2 ou apachectl reload).... Je me demande s'il n'y a pas la config principale qui prend le dessus quoi qu'il en soit... Je te joins le fichier geonature.conf si ça peut aider

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName sep-geonature.reserves-naturelles.org
    # ServerAlias sep-geonature.reserves-naturelles.org
    DocumentRoot "/home/geonatureadmin/geonature/frontend/dist"

    IncludeOptional /etc/apache2/conf-available/geonature.conf
    IncludeOptional /etc/apache2/conf-available/taxhub.conf
    IncludeOptional /etc/apache2/conf-available/usershub.conf

    ErrorLog "/var/log/apache2/geonature_error.log"
    CustomLog "/var/log/apache2/geonature_access.log" combined

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/sep-geonature.reserves-naturelles.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/sep-geonature.reserves-naturelles.org/privkey.pem
</VirtualHost>
</IfModule>

et tant qu'à faire la nouvelle version de geonature_maintenance.conf

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName sep-geonature.reserves-naturelles.org
    DocumentRoot /home/geonatureadmin/geonature/frontend/src/app/maintenance
    #Alias / /home/geonatureadmin/geonature/frontend/dist

    <Directory /home/geonatureadmin/geonature/frontend/src/app/maintenance>
         Require all granted
    </Directory>

    <Location /api>
         ProxyPass http://127.0.0.1:8000 timeout=300
         ProxyPassReverse  http://127.0.0.1:8000
    </Location>

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/sep-geonature.reserves-naturelles.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/sep-geonature.reserves-naturelles.org/privkey.pem
</VirtualHost>
</IfModule>
TheoLechemia commented 2 years ago

ça ne peux pas être du cache ? tu as essayé dans un autre navigateur ou en navigation privé ? Si tu modifie directement la conf original pour la faire pointé vers "maintenance" ?

maximetoma commented 2 years ago

C'est bon, j'avais un "geonature-le-ssl" qui était apparu dans sites-available qui faisait doublon avec geonature.conf, je ne sais pas d'où il sortait.... En gros trop de fichier de conf ! Il perturbait les reloads :)

Affaire résolu, merci encore pour ton aide 🙏

MoulinZ commented 1 year ago

Pour info le fichier geonature-le-ssl est généré automatiquement avec certbot. De base, la commande sudo certbot ne fait que rajouter le RewriteEngine à la fin du geonature.conf, avec RewriteCond et RewriteRule, qui renvoi vers un nouveau fichier de conf geonature-le-ssl.conf pour le https.

maximetoma commented 1 year ago

En lien avec https://github.com/PnX-SI/GeoNature/issues/2535

Malgré la maj et la doc pour la maintenance en 2.12.3, je n'arrive pas à afficher l'index.html de la maintenance en HTTPS, sans charger les styles semblerait-il... cf. ci-dessous

Je joins également ma configuration que j'essaie de mettre

<IfModule mod_ssl.c>
<VirtualHost *:80>
  ServerName sep-geonature.reserves-naturelles.org

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

</VirtualHost>

<VirtualHost *:443>
    ServerName sep-geonature.reserves-naturelles.org
    DocumentRoot "/var/www/geonature_maintenance"
    # Alias /geonature /var/www/geonature_maintenance/
    <Directory /var/www/geonature_maintenance>
          Require all granted
    </Directory>

    ErrorLog "/var/log/apache2/geonature_error.log"
    CustomLog "/var/log/apache2/geonature_access.log" combined

    <IfModule mod_headers.c>
        Header set Cache-Control "no-cache, no-store, must-revalidate"
        Header set Pragma "no-cache"
        Header set Expires 0
    </IfModule>

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/sep-geonature.reserves-naturelles.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/sep-geonature.reserves-naturelles.org/privkey.pem
</VirtualHost>
</IfModule>

image

MoulinZ commented 5 months ago

Salut, Est-ce que tu as résolu ton problème @maximetoma ? J'ai le même je pense. Je n'arrive jamais à passer en mode maintenance. A chaque fois je fais :

sudo a2dissite geonature.conf
sudo a2dissite geonature-le-ssl.conf
sudo a2ensite geonature_maintenance.conf
sudo systemctl restart apache2.service

Et le geonature reste accessible malgrès tout, la seule chose qui manque c'est ma custo...

maximetoma commented 5 months ago

Salut @MoulinZ, euh effectivement j'ai réussi à résoudre le pb mais je ne sais plus si c'est ça qui l'a résolu depuis que j'avais mis ce ticket :

En gros voici ma config pour mon geonature_maintenance.conf Je remarque que j'ai ajouté cette ligne par rapport à mon message précédent : Alias / /var/www/geonature_maintenance/ ça peut venir de ça ?

Ma conf :

<IfModule mod_ssl.c>
<IfModule mod_ssl.c>
<VirtualHost *:80>
  ServerName sep-geonature.reserves-naturelles.org

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

</VirtualHost>

<VirtualHost *:443>
    ServerName sep-geonature.reserves-naturelles.org
    # DocumentRoot "/var/www/geonature_maintenance"
    # Alias /geonature /var/www/geonature_maintenance/

    Alias / /var/www/geonature_maintenance/
    <Directory /var/www/geonature_maintenance>
           Require all granted
    </Directory>

    ErrorLog "/var/log/apache2/geonature_error.log"
    CustomLog "/var/log/apache2/geonature_access.log" combined

    <IfModule mod_headers.c>
        Header set Cache-Control "no-cache, no-store, must-revalidate"
        Header set Pragma "no-cache"
        Header set Expires 0
    </IfModule>

Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/sep-geonature.reserves-naturelles.org/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/sep-geonature.reserves-naturelles.org/privkey.pem
</VirtualHost>
</IfModule>
MoulinZ commented 5 months ago

Bonjour @maximetoma , Effectivement ça vient bien de la ligne Alias / /var/www/geonature_maintenance/ Sans ça je ne sais pas par quel miracle mais il mène toujours au dossier de geonature... Bon j'ai aussi déplacé mon geonature_maintenance qui était sur home/geonatureadmin/ chez moi, et je n'arrivais pas à régler des problème d'erreur 403. C'est quand même plus propre pour les utilisateurs d'avoir une page de maintenance :)

maximetoma commented 5 months ago

Nice super ! :) J'ai observé également que le cache pouvait empêcher de visualiser tes redirections, du coup aussi en cas de doute, c'est pas mal de le vider après chaque manip