Sécuriser ownCloud par HTTPS/SSL

I. Présentation

Dans ce tutoriel, nous allons apprendre à faire fonctionner ownCloud à travers une couche SSL en transformant les échanges HTTP en son homologue sécurisé HTTPS. Cela est notamment une obligation pour la communication entre le serveur ownCloud et les ownCloud clients qui servent à la synchronisation des clients avec les répertoires des serveurs.

II. Création du VitrualHost

Sous Apache2, nous allons commencer par créer un VirtualHost ("site") avec une configuration qui fonctionnera avec le HTTPS (port 443)

Dans le répertoire « /etc/apache2/sites-available », nous créerons un nouveau fichier « owncloud.https » et saisirons les lignes suivantes

NameVirtualHost *:443
# Hôte virtuel qui écoute sur le port HTTPS 443
<VirtualHost *:443>
DocumentRoot /var/www/
# Activation du mode SSL
SSLEngine On 
SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
# On indique ou est le certificat
SSLCertificateFile /etc/ssl/certs/owncloud.crt
SSLCertificateKeyFile /etc/ssl/private/owncloud.key
</VirtualHost>

III. Activation des nouveaux modules

Nous allons maintenant activer le module SSL dans Apache2 pour que celui-ci puisse être utilisé dans nos échanges ownCloud :

a2enmod ssl

activer module SSL

On doit ensuite ajouter notre nouveau site aux sites actifs d'Apache2 :

a2ensite owncloud.https

Activer site HTTPS owncloud

Une dernière étape est à faire avant de rallumer notre serveur apache2.

IV. Création du certificat auto-signé

Maintenant nous pouvons accéder à Owncloud via le HTTPS, seulement on peut encore passer aussi via le HTTP, nous allons donc le forcer à utiliser le HTTPS. Il faut aller modifier un fichier PHP dans Owncloud pour forcer l'accès en HTTPS. Dans "/var/www/config/config.php", ajouter : ‘force ssl’ => true.

Nous allons ensuite passer à la génération de nos clés, on crée un répertoire pour les clés :

cd /etc/apache2/ && mkdir CertOwncloud && cd CertOwncloud

On génère notre clé sur 1024 bits :

openssl genrsa -out owncloud.key 1024

Création des ".key" et ".csr" :

openssl req -new -key owncloud.key -out owncloud.csr

On rempliera ensuite les données du certificat correctement, il est important de noter que l'absence du CommonName pourra générer des erreurs plus tards. On crée ensuite le fichier de certificat :

openssl x509 -req -days 365 -in owncloud.csr -signkey owncloud.key -out owncloud.crt

On copiera ensuite nos certificats là on tous les certificats sont stockés :

cp owncloud.crt /etc/ssl/certs
cp owncloud.key /etc/ssl/private

Procédez au redémarrage d'Apache2 après avoir vérifié sa configuration

apachectl configtest
service apache2 restart

On pourra ensuite vérifier dans notre navigateur que le HTTPS est bien utilisé en nous rendant sur l'interface web de notre ownCloud :

owncloudssl3

Bien que le certificat soit ici auto-signé (il n'est pas reconnu par une véritable autorité de certification), le chiffrement des échanges est bien présent.

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian Burnel

Co-Fondateur d'IT-Connect, je souhaite partager mes connaissances et expériences avec vous, et comme la veille techno' est importante je partage aussi des actus.

florian a publié 1601 articles sur IT-Connect.See all posts by florian

24 réactions sur “Sécuriser ownCloud par HTTPS/SSL

  • 05/12/2013 à 09:12
    Permalink

    J’ai suivi le tuto en modifiant la ligne DocumentRoot par
    DocumentRoot /var/www/owncloud

    Et configtest me retourne une erreur.
    Il faut mettre tout le contenu de SSLOptions à la ligne.

    SSLEngine On
    SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire

    Test en https, Owncloud m’affiche l’erreur : fichier introuvable.

    Une idée ?

    Répondre
    • 10/12/2013 à 20:52
      Permalink

      Bonjour,

      Désolé pour l’attente…

      Est-ce que les chemins vers les certificats sont corrects ?

      Répondre
    • 13/01/2015 à 23:18
      Permalink

      Super tuto mais c’est : ‘forcessl’ => true, NE PAS METTRE D’ESPACE!!! entre force et ssl.
      bye ^^

      Répondre
  • 14/01/2014 à 18:10
    Permalink

    Merci beaucoup pour les deux tutos qui m’ont énormément aidé. J’ai surtout galéré pour la connexion en https. Ca n’a pas marché du premier coup j’ai dû revoir le fichier config.php, si ça peut aider quelqu’un:

    config.php ->
    'datadirectory' => '/var/www/owncloud/data',
    et non '/var/www/owncloud/'
    comme j’ai pu le voir dans certains tutos.

    en rajoutant moi-même ‘force ssl’ => true dans le fichier, je tombais sur une page blanche (en http ou en https même chose), allez savoir pourquoi… mais si je supprimais cette ligne ça fonctionne dans les deux modes, mais il faut (quand tout est bon et que l’on peut se connecter en http et en https) s’y connecter (en https) et dans ‘administration’, on doit cocher la case ‘forcer la connexion en https’ et le logiciel ajoute tout seul ‘force ssl’ => true, dans le fichier config.php

    Il m’est aussi arriver un drôle de truc, owncloud m’a affiché une fois que la connexion automatique a été rejeté, ok je rentre mes identifiants, mais ils ne sont pas reconnus… j’ai dû supprimer l’historique, cookie, etc pour pouvoir y accéder à nouveau, bizarre… une idée d’où peut venir le problème? qui n’est certes pas tant grave 🙂

    Merci encore, j’ai suivi 2-3 tutos, réinstaller mon serveur sur 2-3 unix différents et c’est le seul que j’ai réussi à faire fonctionner, surtout en gardant debian ^^

    Répondre
    • 14/01/2014 à 18:49
      Permalink

      Merci de pour le complément d’info, avec les versions et mises à jours, quelques manipulations ont pu changer =)

      Au niveau du problème que tu as eu cela provient peut être d’un enregistrement fait dans ton navigateur ou par un cookie envoyé par Owncloud qui contenait d’anciens paramètres faussés, ça tiens parfois à peu de choses ! =)

      Répondre
  • 05/02/2014 à 15:28
    Permalink

    Bonjour,

    Merci pour le tuto!

    J’ai suivi les étapes, par contre, quand je veut acceder par https, je n’ai un message d’erreur de owncloud : « Cloud not found ».
    Apres j’ai mis la config en /etc/apache2/sites-enable/000-default, apres la config de virtual host *80. J’ai aujouté quelques lignes que j’ai trouvé ici : http://beeznest.wordpress.com/2008/04/25/how-to-configure-https-on-apache-2/

    Si jamais quelq’un a le meme probleme, je peut copier le ficher de config 🙂

    Répondre
  • 15/03/2014 à 12:39
    Permalink

    Bonjour,

    je viens d’installer owncloud grace à votre tuto et j’ai voulu le passer en https avec ce tuto ci.

    Probleme lorsque je veux y accéder en https : il me met Introuvable à l’endroit où normalement il y a le login et mdp..

    J’ai essayé en mettant ou enlevant froce ssl dans config.php mais rien n’y fait..

    J’ai l’impression qu’il ne va pas chercher le fichier owncloud.https…

    si quelqu’un à des piste?

    Mary est ce que c’est le même soucis que tu a eu?

    Je précise que je ne suis pas à la racine de www mais dans www/owncloud

    en espérant que quelqu’un saura me guider vers la solution 😉

    Cordialement.

    Répondre
    • 15/03/2014 à 12:40
      Permalink

      Bonjour,

      Pour mieux t’aider je te propose de t’inscrire sur le forum et à poster ton fichier de configuration du virtualhost owncloud/ dans un topic du forum

      Cdlt

      Répondre
    • 15/04/2014 à 16:44
      Permalink

      Bonjour Yohann,

      Tu as trouvé la solution?

      Oui, j’ai eu le meme probleme. J’ai ajouté des lignes dans etc/apache2/sites-enable/000-default.
      Si tu as en besoin, je peux le copier ici..

      Bon courage

      Répondre
  • 20/03/2014 à 12:25
    Permalink

    Bonjour le chemin exact est

    /var/www/owncloud/config/config.php

    Répondre
  • 03/06/2014 à 12:34
    Permalink

    Bonjour!

    Je rencontre un souci avec le webdav en SSL (voir article http://www.it-connect.fr/connexion-en-webdav-a-owncloud-sous-windows/)

    Deja quand je fais le apachectl configtest j’obtiens :
    « apache2: Could not reliably determine the server’s fully qualified domain name, using IP_DU_SERVEUR for ServerName »

    le Webdav fonctionne sans SSL mais dés que je force le SSL, impossible de me connecter et le panel OwnCloud indique l’erreur suivante :
    « isWebDAVWorking: NO – Reason: [CURL] Error while making request: SSL: certificate subject name ‘NOM_DU_SSL’ does not match target host name ‘IP_DU_SERVEUR’ (error code: 51) (Sabre_DAV_Exception) »
    Windows indique quant à lui « Erreur réseau inattendue » ou « Un périphérique attaché au système ne fonctionne pas correctement »

    Le hostname est le même que le NOM_DU_SSL.

    J’ai essayé de suivre http://forum.owncloud.org/viewtopic.php?f=26&t=18542 en ajoutant dans le array du $curlSettings de /var/www/owncloud/3rdparty/Sabre/DAV/Client.php
    CURLOPT_SSL_VERIFYPEER => 0,
    CURLOPT_SSL_VERIFYHOST => 0,
    mais cela ne fonctionne toujours pas à la difference que Owncloud n’enregistre plus aucune erreur dans son log ?!

    Une idée??

    Merci!

    Répondre
  • 09/07/2014 à 15:34
    Permalink

    Bonjour,

    je viens de me monter un serveur owncloud sur une ubuntun 14.04
    j’ai pus installer https et désactiver l’accé en http

    mais je viens de m’apercevoir qu’on à accès au dossier https://192.168.0.2/data/%5Butilsateur%5D/files/

    depuis n’importe qu’elle navigateur.

    comment sécuriser cette parti svp ?

    Répondre
    • 09/07/2014 à 17:59
      Permalink

      Bonjour,

      Il faut sortir le répertoire « /data/ » de la racine du site ownCloud. Normalement, cela s’effectue dans le fichier config.php et la ligne suivante :

      « datadirectory » => ‘/var/www/data’,

      Si votre site est installé sous /var/www/owncloud, on peut imaginer stocker les données en dehors de cette racine soit /var/www/data

      Florian

      Répondre
  • 10/07/2014 à 00:04
    Permalink

    Merci pour ton Tuto :

    J’ai suivi ton tuto à la lettre et j’ai obtenu une erreur SSL dans le navigateur : ssl_error_rx_record_too_long

    # Notez que le site est déjà fonctionnel en http

    j’ai réussi à contourner la problématique :

    j’ai modifié/éditer : /etc/apache2/sites-available/owncloud.https

    J’ai commenter la ligne : # SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire

    ensuite :
    a2ensite owncloud.https
    a2enmod ssl
    service apache2 reload

    Je me suis loger en ‘admin’ sur l’interface web Owncloud

    Dans le menu administration j’ai coché la case « force SSL »

    Maintenant depuis un navigateur lorsque j’accède à http://owncloud.xxxxx.xxx est automatiquement rediriger vers https://owncloud.xxxxx.xxx

    C’est fonctionnel de mon coté !

    Répondre
    • 10/07/2014 à 11:47
      Permalink

      Merci du partage de ta solution, elle sera utile à ceux qui auront le même problème que toi.

      Bonne journée ! 🙂

      Répondre
  • 28/09/2014 à 12:13
    Permalink

    super tuto par contre il faut changer le fichier owncloud.https => owncloud.conf sinon il le trouve pas !

    Répondre
  • 06/10/2014 à 13:29
    Permalink

    Hello, d’abord Florian pour te dire un grand merci et bravo pour ce tuto. Simple et efficace!

    Ensuite, (cela pourrait servir à certains) j’ai rencontré une erreur que j’ai corrigé seul mais qui pourrait poser problème aux moins expérimentés.

    Par défaut, apache2.conf n’autorise la lecture que des fichiers *.conf dans le dossier sites-available.

    A la commande:

    #a2ensite owncloud.https

    j’avais une erreur « site doesn’t exist »

    j’ai renommé avec la commande :

    #mv /etc/apache2/sites-available/owncloud.https /etc/apache2/sites-available/owncloud.conf

    Puis

    #a2ensite owncloud.conf

    Et là, ça marche!

    Le reste à fonctionner à merveille du premier coup.

    Répondre
    • 06/10/2014 à 19:21
      Permalink

      Bonjour Jose,

      Merci pour ce complément d’informations, ce sera sûrement utile à d’autres personnes !

      A bientôt,
      Florian

      Répondre
  • 07/02/2015 à 12:00
    Permalink

    Bonjour
    sous dedié debian 7 ispconfig owncloud8.0.0.6 (le problème est le même avec la version 7) j’ai suivi ce tuto très clair (merci pour celui ci !), je n’arrivai pas à cocher dans le panneau administration de owncloud le passage en ssl, j’ai donc forcé celui ci dans :/var/www/owncloud/settings/admin.php de false à true ce qui as pour effet dans la page admin de cocher le ssl et modifier le fichier /var/www/owncloud/config/config.php pour avoir « owerwrite -> https//:myip/owncloud ».
    Néanmoins je me trouve toujours avec une erreur 404 lorsque je vais en https.
    je constate un message d’alerte sur chrome qui m’informe que le serveur veut me rediriger sur un autre site hébergé sur celui ci qui dispose d’ un certificat startssl.
    J’ai écumé les forums et tuto en essayant différents solutions sans résultat.

    Merci de vos idées par avance

    Répondre
    • 10/02/2015 à 14:12
      Permalink

      Bonjour Christian,

      Je t’invite à créer un sujet dans notre forum (après inscription gratuite) afin que la communauté t’aide à résoudre ton problème 🙂

      Florian

      Répondre
  • 13/08/2015 à 16:08
    Permalink

    Je ne recommande certainement pas de mettre data dans /var/www/, car c’est normalement webroot

    si placer comme vous le recommandez, « http:///data » y accèdera.

    Utiliser plutôt /var/lib/owncloud/data

    Répondre
  • 25/11/2015 à 20:51
    Permalink

    Salut,

    Je ne suis que de passage sur ce blog (bien que deja visité par hasard à plusieurs reprises…)
    Je me permets d’ajouter en commentaires que pour passer le test de SSLLabs
    https://www.ssllabs.com/ssltest/analyze.html
    Il faut remplacer le 1024 par 2048 dans la ligne « openssl genrsa -out owncloud.key 1024 » cela permet d’obtenir une meilleure « note » et donc j’imagine représente une meilleure sécurité par rapport à la conf SSL…

    En espérant que ça puisse servir à d’autres…

    @+
    Julien

    Répondre
  • 12/12/2015 à 14:45
    Permalink

    Bonjour,
    Merci pour ton tuto, j’ai enfin réussi à sécuriser mon serveur en HTTPS
    J’ai eu le message d’erreur avec la commande:
    a2ensite owncloud.https

    Le problème vient du fait que votre serveur apache ne reconnais pas forcément les fichiers avec l’extention .https

    regardez votre fichier /etc/apache2/apache2.conf

    pour la part j’ai renommé le fichier « owncloud.https » en « owncloud.conf » extention reconnue par mon serveur apache

    extrait de mon fichier apache2.conf

    # |– conf-enabled
    # | `– *.conf
    # `– sites-enabled
    # `– *.conf

    apres le fonctionnement est correct.

    J’espère que cela aidera et merci encore

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *