Sécuriser ownCloud par HTTPS/SSL
Sommaire
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
On doit ensuite ajouter notre nouveau site aux sites actifs d'Apache2 :
a2ensite owncloud.https
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 :
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.
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 ?
Bonjour,
Désolé pour l’attente…
Est-ce que les chemins vers les certificats sont corrects ?
Super tuto mais c’est : ‘forcessl’ => true, NE PAS METTRE D’ESPACE!!! entre force et ssl.
bye ^^
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.phpIl 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 ^^
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 ! =)
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 🙂
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.
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
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
Bonjour le chemin exact est
/var/www/owncloud/config/config.php
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!
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 ?
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
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é !
Merci du partage de ta solution, elle sera utile à ceux qui auront le même problème que toi.
Bonne journée ! 🙂
super tuto par contre il faut changer le fichier owncloud.https => owncloud.conf sinon il le trouve pas !
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.
Bonjour Jose,
Merci pour ce complément d’informations, ce sera sûrement utile à d’autres personnes !
A bientôt,
Florian
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
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
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
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
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
Marche nickel sur Raspbian !!
Merci 🙂
Bonjour,
j’ai fais toutes les manip. Refais plusieurs fois le certificat. Rien y fait.
J’ai toujours le site en http ! Il marche parfaitement.
Mes fichiers se trouvent sur /var/www/html/owncloud/data.
Je n’ai plus d’idées !
Bonjour, je possède un serveur freenas. Connaissez-vous la manip pour configurer onwcloud en HTTPS sous Freenas. Merci pour votre retour.