<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Web &amp;mdash; Jélatine</title>
    <link>https://bla.calut.fr/djelouze/tag:Web</link>
    <description>Partage d&#39;expériences d&#39;autohébergement et autres aventures trépidantes.</description>
    <pubDate>Sat, 30 May 2026 10:17:09 +0200</pubDate>
    <item>
      <title>Configuration SSL - les galères d&#39;un naïf</title>
      <link>https://bla.calut.fr/djelouze/configuration-ssl-les-galeres-dun-naif</link>
      <description>&lt;![CDATA[Nextcloud et Pelican sont sur un bateau. Le https de Pelican tombe à l&#39;eau, qui l&#39;a poussé ?&#xA;&#xA;Contexte&#xA;&#xA;J&#39;ai un VPS chez Hetzner et mon nom de domaine chez Gandi. Par confort d&#39;utilisation, c&#39;est une Fedora qui tourne sur le VPS. Après plusieurs années d&#39;utilisation d&#39;une instance Nextcloud sur un Simple Hosting Gandi, j&#39;ai voulu passer au niveau supérieur et gérer un serveur intégralement. La migration s&#39;est plutôt bien passée : j&#39;ai maintenant une instance Nextcloud sur mon VPS et j&#39;y ai retrouvé toutes mes données. Le serveur http est Apache, encore une fois pour confort personnel.&#xA;&#xA;J&#39;ai directement configuré Nextcloud pour être servi via https en utilisant les outils recommandés dans la documentation de Nextcloud, en particulier certbot pour générer un certificat Let&#39;s encrypt.&#xA;&#xA;Sans mettre les mains dans le cambouis, j&#39;ai une configuration qui semble opérationnelle. Une redirection permanente permet, en bonus, de servir uniquement du https quand le navigateur pointe vers http.&#xA;&#xA;Le début des problèmes&#xA;&#xA;Ce modeste blog vous est généré grâce à Pelican (cf À propos). Il s&#39;agit donc d&#39;un site statique, tout ce qu&#39;il y a de plus basique à gérer pour un serveur Apache. Aucun inconvénient à ce qu&#39;il cohabite sur le même serveur que Nextcloud, d&#39;autant que je voulais justement faire interagir&#xA;les deux. Je me retrouve alors avec deux racines de site :&#xA;&#xA;/var/www/html/nextcloud&#xA;/var/www/html/pelican&#xA;&#xA;J&#39;ajoute un fichier de configuration pour le site .../pelican en me basant sur /etc/httpd/conf.d/nextcloud.conf mais en gardant uniquement ce que je connais : la configuration de Nextcloud a été plutôt transparente, et je ne maitrise pas les sections concernant les réécriture d&#39;URL et les proxy. Tout au plus, je sais que je n&#39;en ai pas besoin pour un site de simple facture. Ce qui donne :&#xA;VirtualHost :80&#xA;  DocumentRoot /var/www/html/pelican/&#xA;  ServerName  djelly.calut.fr&#xA;  Redirect permanent / https://djelly.calut.fr/&#xA;  Directory /var/www/html/pelican/&#xA;    Require all granted&#xA;    AllowOverride All&#xA;    Options FollowSymLinks MultiViews&#xA;  /Directory&#xA;/VirtualHost&#xA;J&#39;ai alors dans mes fichiers de configuration http un pelican.conf (ci0-dessus) et un nextcloud.conf qui ressemble à celui-ci, mais pointant vers le DocumentRoot correct et un sous-domaine différent de djelly. Nul doute que les yeux avertis auront déjà repéré une bévue, mais ce n&#39;est pas mon cas.&#xA;&#xA;Constat amiable&#xA;&#xA;Après redémarrage du serveur apache sudo service httpd restart, la partie nextcloud est toujours fonctionnelle : http://... renvoie bien vers  https://..., et les différentes synchronisations en place (contact sur Android, calendrier, fichiers en local) sont toujours actives.&#xA;&#xA;Par contre, http://djelly.calut.fr redirige bien vers https://djelly.calut.fr, mais c&#39;est le index.php de Nextcloud qui est affiché !&#xA;À noter que la navigation sur le site nextcloud à partir de ce sous-domaine est impossible : &#xA;&#xA;  Accès à partir d&#39;un domaine non approuvé&#xA;    Veuillez contacter votre administrateur. Si vous êtes un administrateur, éditez la variable &#34;trusteddomains&#34; dans le fichier config/config.php comme l&#39;exemple dans le fichier config/config.sample.php.&#xA;    Vous trouverez d&#39;autres informations sur la configuration dans la documentation .&#xA;&#xA;Je renomme nextcloud.conf en nextcloud.conf.old puis redémarre le service httpd (de cette manière, il ne prendra pas en compte la configuration nextcloud).&#xA;J&#39;avais dans l&#39;idée que http://xxx.calut.fr ne serait plus accessible. Que nenni ! Il renvoie vers toujours vers https://djelly.calut.fr/index.php&#xA;&#xA;Donc de nouveau un fichier appartenant au DocumentRoot de nextcloud, mais avec le sous-domaine de ce site (djelly). Bien sûr, je parle de Pelican, mais il n&#39;y est pour rien. D&#39;ailleurs, il n&#39;est même pas installé sur le VPS. Il ne fait que générer localement les fichiers html. Le problème se situe au niveau de la configuration Apache, j&#39;en suis convaincu.&#xA;&#xA;Configuration SSL&#xA;&#xA;J&#39;ai noté que les VirtualHostnextcloud et pelican sont définis pour le port 80... Mais où est donc 443, le port utilisé pour servir https ? Le répertoire /etc/httpd/conf.d contient un ssl.conf. Il ne fallait pas chercher bien loin ! On trouve assez rapidement :&#xA;VirtualHost default:443&#xA;&#xA;General setup for the virtual host, inherited from global configuration&#xA;DocumentRoot &#34;/var/www/html/nextcloud&#34;&#xA;ServerName xxx.calut.fr:443&#xA;...&#xA;&#xA;Qu&#39;est-ce que default:443 comparé à :80 ? &#34;RTFM!&#34; ! Où l&#39;on apprend que &#34;La chaîne default_, dont la signification est identique à celle du caractère `` [...]&#34;.&#xA;Rien à voir de ce côté là, donc. Mais par contre, je n&#39;ai aucun VirtualHost pour un ServerName djelly.calut.fr:443... et pourquoi le sous-domaine djelly renvoie sur le VirtualHost nextcloud ?&#xA;&#xA;Je supprime la ligne Redirect permanent / https://djelly.calut.fr/   de pelican.conf, et on commence à retrouver quelque chose de normal :&#xA;&#xA;http://djelly.calut.fr sert bien ce site, en http donc&#xA;https://xxx.calut.fr est bien mon instance nextcloud&#xA;&#xA;Mais !&#xA;https://djelly.calut.fr sert toujours le index.php de nextcloud&#xA;http://xxx.calut.fr sert le index.html de ce site!!&#xA;&#xA;Je reste dubitatif : si le VirtualHost :80 n&#39;existe pas pour ServerName xxx.calut.fr, pourquoi est-il quand même interprété comme DocumentRoot &#34;.../pelican&#34; ? &#xA;En testant avec un sous-domaine inexistant, j&#39;ai bien une erreur de mon navigateur qui ne trouve pas le site.&#xA;&#xA;Je pense, tout candide que je suis, que ma configuration DNS entre en jeu ici. J&#39;ai :&#xA;&#xA;une entrée type A pour xxx qui renvoie vers l&#39;IP de mon VPS&#xA;une entrée type A pour djelly qui renvoie vers l&#39;IP de mon VPS&#xA;pas d&#39;entrée pour yyy&#xA;&#xA;Petite analyse :&#xA;&#xA;J&#39;ai une erreur pour yyy.calut.fr : normal, le navigateur ne sait pas où aller chercher les fichiers&#xA;http://xxx ou http://djelly renvoient tous les deux vers /var/www/html/pelican&#xA;https://xxx ou https://djelly renvoient tous les deux vers /var/www/html/nextcloud&#xA;&#xA;On dirait que le VirtualHost de djelly écrase celui de nextcloud...&#xA;&#xA;La réponse !&#xA;&#xA;Tout ça pour ça : en plus de ServerName, il faut aussi ServerAlias... &#xA;&#xA;Je récupère un certificat let&#39;s encrypt pour djelly.calut.fr et sépare le fichier ssl.conf en 3 fichiers différents :&#xA;&#xA;ssl.conf garde la configuration globale du SSL de ce serveur apache&#xA;ssl-nextcloud.conf déclare le VirtualHost pour nextcloud&#xA;ssl-pelican.conf déclare le VirtualHost pour ce site, en modifiant simplement les références à nextcloud et xxx pour correspondre à djelly.&#xA;&#xA;Je réactive la redirection permanente pour pelican.conf, redémarre httpd, et tout fonctionne à merveille.&#xA;&#xA;Ce n&#39;était pas si compliqué. Mais je ne sais toujours pas pourquoi ServerName ne suffit pas.&#xA;&#xA;: Je ne suis pas passé par la migration de base de donnée documentée. J&#39;ai simplement synchronisé mes comptes localement, installer le nouveau Nextcloud, et resynchronisé en changeant le nom du serveur.&#xA;: Voir le billet Le choix d&#39;un moteur de blog&#xA;: Read The Fantastic/Funny/... Manual&#xA;&#xA;#Web #SSL #Pelican #Nextcloud  #selfHosting&#xA;]]&gt;</description>
      <content:encoded><![CDATA[<p><em>Nextcloud et Pelican sont sur un bateau. Le https de Pelican tombe à l&#39;eau, qui l&#39;a poussé ?</em></p>

<h2 id="contexte">Contexte</h2>

<p>J&#39;ai un VPS chez <em>Hetzner</em> et mon nom de domaine chez <em>Gandi</em>. Par confort d&#39;utilisation, c&#39;est une Fedora qui tourne sur le VPS. Après plusieurs années d&#39;utilisation d&#39;une instance Nextcloud sur un <em>Simple Hosting</em> Gandi, j&#39;ai voulu passer au niveau supérieur et gérer un serveur intégralement. La migration s&#39;est plutôt bien passée : j&#39;ai maintenant une instance Nextcloud sur mon VPS et j&#39;y ai retrouvé toutes mes données[^1]. Le serveur <strong>http</strong> est Apache, encore une fois pour confort personnel.</p>

<p>J&#39;ai directement configuré Nextcloud pour être servi <em>via</em> <strong>https</strong> en utilisant les outils recommandés dans la documentation de Nextcloud, en particulier <code>certbot</code> pour générer un certificat <em>Let&#39;s encrypt</em>.</p>

<p>Sans mettre les mains dans le cambouis, j&#39;ai une configuration qui semble opérationnelle. Une redirection permanente permet, en bonus, de servir uniquement du <strong>https</strong> quand le navigateur pointe vers <strong>http</strong>.</p>

<h2 id="le-début-des-problèmes">Le début des problèmes</h2>

<p>Ce modeste blog vous est généré grâce à Pelican (cf <a href="/pages/a-propos.html" rel="nofollow">À propos</a>). Il s&#39;agit donc d&#39;un site statique, tout ce qu&#39;il y a de plus basique à gérer pour un serveur Apache. Aucun inconvénient à ce qu&#39;il cohabite sur le même serveur que Nextcloud, d&#39;autant que je voulais justement faire interagir
les deux[^2]. Je me retrouve alors avec deux racines de site :</p>
<ul><li><code>/var/www/html/nextcloud</code></li>
<li><code>/var/www/html/pelican</code></li></ul>

<p>J&#39;ajoute un fichier de configuration pour le site <code>.../pelican</code> en me basant sur <code>/etc/httpd/conf.d/nextcloud.conf</code> mais en gardant uniquement ce que je connais : la configuration de Nextcloud a été plutôt transparente, et je ne maitrise pas les sections concernant les réécriture d&#39;URL et les <em>proxy</em>. Tout au plus, je sais que je n&#39;en ai pas besoin pour un site de simple facture. Ce qui donne :</p>

<pre><code>&lt;VirtualHost *:80&gt;
  DocumentRoot /var/www/html/pelican/
  ServerName  djelly.calut.fr
  Redirect permanent / https://djelly.calut.fr/
  &lt;Directory /var/www/html/pelican/&gt;
    Require all granted
    AllowOverride All
    Options FollowSymLinks MultiViews
  &lt;/Directory&gt;
&lt;/VirtualHost&gt;
</code></pre>

<p>J&#39;ai alors dans mes fichiers de configuration <strong>http</strong> un <code>pelican.conf</code> (ci0-dessus) et un <code>nextcloud.conf</code> qui ressemble à celui-ci, mais pointant vers le <code>DocumentRoot</code> correct et un sous-domaine différent de <code>djelly</code>. Nul doute que les yeux avertis auront déjà repéré une bévue, mais ce n&#39;est pas mon cas.</p>

<h2 id="constat-amiable">Constat amiable</h2>

<p>Après redémarrage du serveur apache <code>sudo service httpd restart</code>, la partie nextcloud est toujours fonctionnelle : <strong>http://...</strong> renvoie bien vers  <strong>https://...</strong>, et les différentes synchronisations en place (contact sur Android, calendrier, fichiers en local) sont toujours actives.</p>

<p>Par contre, <code>http://djelly.calut.fr</code> redirige bien vers <code>https://djelly.calut.fr</code>, mais c&#39;est le <code>index.php</code> de Nextcloud qui est affiché[^3] !
À noter que la navigation sur le site nextcloud à partir de ce sous-domaine est impossible :</p>

<blockquote><p>Accès à partir d&#39;un domaine non approuvé</p>

<p>Veuillez contacter votre administrateur. Si vous êtes un administrateur, éditez la variable “trusted_domains” dans le fichier config/config.php comme l&#39;exemple dans le fichier config/config.sample.php.</p>

<p>Vous trouverez d&#39;autres informations sur la configuration dans la documentation .</p></blockquote>

<p>Je renomme <code>nextcloud.conf</code> en <code>nextcloud.conf.old</code> puis redémarre le service <code>httpd</code> (de cette manière, il ne prendra pas en compte la configuration nextcloud).
J&#39;avais dans l&#39;idée que <code>http://xxx.calut.fr</code> ne serait plus accessible. Que nenni ! Il renvoie vers toujours vers <code>https://djelly.calut.fr/index.php</code></p>

<p>Donc de nouveau un fichier appartenant au <code>DocumentRoot</code> de nextcloud, mais avec le sous-domaine de ce site (djelly). Bien sûr, je parle de Pelican, mais il n&#39;y est pour rien. D&#39;ailleurs, il n&#39;est même pas installé sur le VPS. Il ne fait que générer localement les fichiers <code>html</code>. Le problème se situe au niveau de la configuration Apache, j&#39;en suis convaincu.</p>

<h2 id="configuration-ssl">Configuration SSL</h2>

<p>J&#39;ai noté que les <code>VirtualHost</code>nextcloud et pelican sont définis pour le port <code>80</code>... Mais où est donc <code>443</code>, le port utilisé pour servir <code>https</code> ? Le répertoire <code>/etc/httpd/conf.d</code> contient un <code>ssl.conf</code>. Il ne fallait pas chercher bien loin ! On trouve assez rapidement :</p>

<pre><code>&lt;VirtualHost _default_:443&gt;

# General setup for the virtual host, inherited from global configuration
DocumentRoot &#34;/var/www/html/nextcloud&#34;
ServerName xxx.calut.fr:443
...
</code></pre>

<p>Qu&#39;est-ce que <code>_default_:443</code> comparé à <code>*:80</code> ? “RTFM!”[^3] ! Où l&#39;on apprend que “La chaîne <code>_default_</code>, dont la signification est identique à celle du caractère <code>*</code> [...]“.
Rien à voir de ce côté là, donc. Mais par contre, je n&#39;ai aucun <code>VirtualHost</code> pour un <code>ServerName djelly.calut.fr:443</code>... et pourquoi le sous-domaine <code>djelly</code> renvoie sur le <code>VirtualHost</code> nextcloud ?</p>

<p>Je supprime la ligne <code>Redirect permanent / https://djelly.calut.fr/&gt;</code> de <code>pelican.conf</code>, et on commence à retrouver quelque chose de normal :</p>
<ul><li><code>http://djelly.calut.fr</code> sert bien ce site, en <strong>http</strong> donc</li>
<li><code>https://xxx.calut.fr</code> est bien mon instance nextcloud</li></ul>

<p>Mais !
– <code>https://djelly.calut.fr</code> sert toujours le <code>index.php</code> de nextcloud
– <code>http://xxx.calut.fr</code> sert le <code>index.html</code> de ce site!!</p>

<p>Je reste dubitatif : si le <code>&lt;VirtualHost *:80&gt;</code> n&#39;existe pas pour <code>ServerName xxx.calut.fr</code>, pourquoi est-il quand même interprété comme <code>DocumentRoot &#34;.../pelican&#34;</code> ?
En testant avec un sous-domaine inexistant, j&#39;ai bien une erreur de mon navigateur qui ne trouve pas le site.</p>

<p>Je pense, tout candide que je suis, que ma configuration DNS entre en jeu ici. J&#39;ai :</p>
<ul><li>une entrée type <code>A</code> pour <code>xxx</code> qui renvoie vers l&#39;IP de mon VPS</li>
<li>une entrée type <code>A</code> pour <code>djelly</code> qui renvoie vers l&#39;IP de mon VPS</li>
<li>pas d&#39;entrée pour <code>yyy</code></li></ul>

<p>Petite analyse :</p>
<ul><li>J&#39;ai une erreur pour <code>yyy.calut.fr</code> : normal, le navigateur ne sait pas où aller chercher les fichiers</li>
<li><a href="http://xxx" rel="nofollow">http://xxx</a> ou <a href="http://djelly" rel="nofollow">http://djelly</a> renvoient tous les deux vers <code>/var/www/html/pelican</code></li>
<li><a href="https://xxx" rel="nofollow">https://xxx</a> ou <a href="https://djelly" rel="nofollow">https://djelly</a> renvoient tous les deux vers <code>/var/www/html/nextcloud</code></li></ul>

<p>On dirait que le <code>VirtualHost</code> de djelly écrase celui de nextcloud...</p>

<h2 id="la-réponse">La réponse !</h2>

<p>Tout ça pour ça : en plus de <code>ServerName</code>, il faut aussi <code>ServerAlias</code>...</p>

<p>Je récupère un certificat <code>let&#39;s encrypt</code> pour <code>djelly.calut.fr</code> et sépare le fichier <code>ssl.conf</code> en 3 fichiers différents :</p>
<ul><li><code>ssl.conf</code> garde la configuration globale du SSL de ce serveur apache</li>
<li><code>ssl-nextcloud.conf</code> déclare le <code>VirtualHost</code> pour nextcloud</li>
<li><code>ssl-pelican.conf</code> déclare le <code>VirtualHost</code> pour ce site, en modifiant simplement les références à nextcloud et xxx pour correspondre à djelly.</li></ul>

<p>Je réactive la redirection permanente pour <code>pelican.conf</code>, redémarre <code>httpd</code>, et tout fonctionne à merveille.</p>

<p>Ce n&#39;était pas si compliqué. Mais je ne sais toujours pas pourquoi <code>ServerName</code> ne suffit pas.</p>

<p>[^1]: Je ne suis pas passé par la migration de base de donnée documentée. J&#39;ai simplement synchronisé mes comptes localement, installer le nouveau Nextcloud, et resynchronisé en changeant le nom du serveur.
[^2]: Voir le billet <a href="le-choix-dun-moteur-de-blog.html" rel="nofollow">Le choix d&#39;un moteur de blog</a>
[^3]: Read The Fantastic/Funny/... Manual</p>

<p><a href="/djelouze/tag:Web" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Web</span></a> <a href="/djelouze/tag:SSL" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">SSL</span></a> <a href="/djelouze/tag:Pelican" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Pelican</span></a> <a href="/djelouze/tag:Nextcloud" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">Nextcloud</span></a>  <a href="/djelouze/tag:selfHosting" class="hashtag" rel="nofollow"><span>#</span><span class="p-category">selfHosting</span></a></p>
]]></content:encoded>
      <guid>https://bla.calut.fr/djelouze/configuration-ssl-les-galeres-dun-naif</guid>
      <pubDate>Tue, 05 Apr 2022 15:39:28 +0200</pubDate>
    </item>
  </channel>
</rss>