Aller au contenu

Installation De Certificats Ssl/tls (Exemple


Epok

Messages recommandés

Bonjour,

Ce week-end j'ai changé le certificat de mon synology (DS409+) pour un certificat "officiel" et je me suis dit que ce serait pas mal de partager ma méthode car la fonction du webman ne suffit pas.

Ce tuto permet d'utiliser son certificat pour :

- la webstation (port 5001)

- le filestation (port 7001)

- le serveur FTP (ftpes)

Prérequis

- Mot de passe admin

- Accès SSH activé sur le NAS

- Un client SSH (comme PuTTY par exemple)

- Une clé privée (cryptée ou non)

- Un certificat émis par une autorité de confiance (OVH dans mon cas)

- Un fichier de certificats intermédiaires de l'autorité de confiance (type chain)

Concernant la première partie c'est à vous de trouver tout ça.

Concernant la deuxième, dans le cas d'OVH tout vous est expliqué par ce dernier au moment de la création du certificat chez eux, sinon tournez-vous vers un tuto de création de certificats avant de suivre celui-ci wink.gif

Introduction

Il faut commencer par ramener sur le NAS les fichiers nécessaires (d'autre méthodes existent mais en voila une simple pour ceux sous windows) :

- Créer un dossier partagé ayant pour nom certifs (par exemple) sur le volume 1 (de même).

- Lors de la création indiquer que ce dossier est caché dans "Mes emplacements réseaux" (c'est mieux).

- Accéder au dossier partagé depuis votre poste :

- Ouvrir le poste de travail

- Dans la barre d'adresse, renseigner : \\NomduNAS\certifs

- Y copier les fichiers (key, certificat, chain)

Puis on se connecte au NAS en SSH, pour cela on lance PuTTY et on renseigne les champs suivants :

- Host : IP du NAS (de préférence locale, type 192.168.x.x)

- Port : 22

- Type : SSH

Pas besoin d'autre chose, on appuie sur Open pour lancer la connexion mellow.gif

Une fois la fenêtre ouverte le login doit être renseigné. Pour cela indiquer root et non admin. Indiquer ensuite le mot de passe d'admin.

A partir d'ici faîtes attention, l'utilisateur root a, pour ainsi dire, accès à toute la machine, il serait dommage d'endommager la machine à cause d'une fausse manip' sad.gif

Vous voila connecté en SSH en tant que root.

Installation des certificats

Bon les choses sérieuses commencent rolleyes.gif

Avant toute chose, si votre clé privée est cryptée, vous allez avoir besoin de la passer en clair pour que le serveur Apache puisse l'utiliser. Pour cela :

cd /volume1/certifs

openssl rsa -in ma_cle.key > ma_cle_decrypt.key
On va commencer par faire un backup des fichiers à remplacer (inutile car on peut en régénérer comme on le vera à la fin du tuto mais c'est une habitude à prendre !) Pour cela exécuter les commandes suivantes :
mv /usr/syno/etc/ssl/ssl.crt/server.crt /usr/syno/etc/ssl/ssl.crt/server.crt.old

mv /usr/syno/etc/ssl/ssl.key/server.key /usr/syno/etc/ssl/ssl.key/server.key.old
On vient donc de sauvegarder la clé privée et le certificat de base du NAS. Dans le cas où vous avez un fichier de certificats intermédiaires de votre autorité de confiance (type chain), nous allons créer un répertoire qui l'accueillera en respectant l'architecture synology :
 mkdir /usr/syno/etc/ssl/ssl.chain/
Bon, maintenant nous allons copier nos certificats à leurs emplacement respectifs (ils sont supposés être présents dans le dossier partagé certifs suite à mon introduction) :
cp /volume1/certifs/mon_certificat.cert /usr/syno/etc/ssl/ssl.crt/server.crt

cp /volume1/certifs/ma_cle_decrypt.key /usr/syno/etc/ssl/ssl.key/server.key

cp /volume1/certifs/cert.chain /usr/syno/etc/ssl/ssl.chain/cert.chain
Les fichiers sont en place ! wink.gifConfiguration des applications Pour modifier les fichiers de configuration deux méthodes : - Modification directement dans la console grâce au programme vi (utilisateurs moyens/avancés) - Rapatriement des fichiers puis modifications grâce à un éditeur de texte (type Notepad++) Ceux qui préfèrent vi n'ont pas besoin d'explications, je les laisse donc se débrouiller laugh.gif En leur indiquant tout de même les deux fichiers à modifier :
/usr/syno/apache/conf/extra/httpd-ssl.conf-sys

/usr/syno/etc/httpd-ssl-filestation.conf-sys
Pour les autres voila la marche à suivre : Tout d'abord on récupère ces fichiers de configuration
cp /usr/syno/apache/conf/extra/httpd-ssl.conf-sys /volume1/certifs

cp /usr/syno/etc/httpd-ssl-filestation.conf-sys /volume1/certifs
Avant de pouvoir les modifier sous votre explorer d'OS, il faut autoriser la modification de ces derniers :
chmod 707 /volume1/certifs/httpd-ssl.conf-sys

chmod 707 /volume1/certifs/httpd-ssl-filestation.conf-sys
Attention ! Ces modifications permettent à n'importe quel utilisateurs de lire, écrire et executer ces fichiers. Ne faîtes pas cela sur n'importe quel fichier !! --> Vous pouvez maintenant les ouvrir dans votre explorer ( \\NomduNAS\certifs ) ¤ Concernant le fichier httpd-ssl.conf-sys Repérer les lignes suivantes :
[...]

SSLCertificateFile /usr/syno/etc/ssl/ssl.crt/server.crt

[...]

SSLCertificateKeyFile /usr/syno/etc/ssl/ssl.key/server.key

[...]

#SSLCACertificateFile /usr/syno/apache/conf/ssl.crt/ca-bundle.crt
Les deux premières correspondent aux fichier que nous avons préalablement "remplacer", aucune modification n'est requise mais sachez qu'elles existent et qu'elles se trouvent içi. La dernière est commenté (la ligne commence par #), le serveur ne les prends donc pas en compte. C'est ce que nous allons changer. De nos trois fichiers, deux sont déjà pris en compte par la configuration : le certificat du serveur ainsi que sa clé (décryptée). OVH fournit en plus un certificat de type chain, donc tout naturellement je l'aurais mis pour l'option SSLCertificateChainFile (entre la clé et le certificat de l'autorité tierce dans le fichier de configuration), mais dans leur exemple de configuration il était utilisé pour l'option SSLCACertificateFile. J'ai testé, ca fonctionne mais si quelqu'un peut m'expliquer la différence entre les deux et pourquoi on met un type chain pour le CA alors qu'une option chain est présente juste au dessus, je suis preneur tongue.gif Bref voici ce que cela devrait vous donner :
[...]

SSLCertificateFile /usr/syno/etc/ssl/ssl.crt/server.crt

[...]

SSLCertificateKeyFile /usr/syno/etc/ssl/ssl.key/server.key

[...]

SSLCACertificateFile /usr/syno/etc/ssl/ssl.chain/cert.chain
(remarquez que le # a disparu) Enregistrer le fichier et fermer le. ¤ Concernant le fichier httpd-ssl.conf-sys Reperez les deux lignes suivantes :
SSLCertificateFile /usr/syno/etc/ssl/ssl.crt/server.crt

SSLCertificateKeyFile /usr/syno/etc/ssl/ssl.key/server.key
et rajoutez-y celle-ci : SSLCACertificateFile /usr/syno/etc/ssl/ssl.chain/cert.chain ce qui nous donne :
SSLCertificateFile /usr/syno/etc/ssl/ssl.crt/server.crt

SSLCertificateKeyFile /usr/syno/etc/ssl/ssl.key/server.key

SSLCACertificateFile /usr/syno/etc/ssl/ssl.chain/cert.chain
Enregistrer le fichier et fermer le. Vous remarquerez qu'il n'y a aucun fichier de configuration pour le ftp. Et bien, c'est parce que... je n'ai pas pu le trouver ^_^' La solution que j'ai trouvé est donc de garder les anciens noms (nous aurions pu garder les noms originaux de nos certificats et les modifier dans les fichiers de conf) pour que quoi qu'il arrive le serveur FTP aille chercher (au même endroit donc) nos certificats et non ceux de synology. Les fichiers de configuration sont prêts, il ne reste plus qu'à les rapatrier. Pour cela, trois étapes : - Faire un backup des fichiers de la configuration actuelle - Déplacer les nouveaux fichiers de configuration - Rétablir les droits originaux Etape 1:
mv /usr/syno/apache/conf/extra/httpd-ssl.conf-sys /usr/syno/apache/conf/extra/httpd-ssl.conf-sys.old

mv /usr/syno/etc/httpd-ssl-filestation.conf-sys /usr/syno/etc/httpd-ssl-filestation.conf-sys.old
Etape 2:
mv /volume1/certifs/httpd-ssl.conf-sys  /usr/syno/apache/conf/extra

mv /volume1/certifs/httpd-ssl-filestation.conf-sys /usr/syno/etc
Etape 3:
chmod 700 /usr/syno/apache/conf/extra/httpd-ssl.conf-sys

chmod 700 /usr/syno/etc/httpd-ssl-filestation.conf-sys
Tout est en place ! Il ne nous reste plus qu'a redémarrer le synology... Finalisation ... ou simplement les applications concernées rolleyes.gif pour cela, executez les commandes suivantes :
/usr/syno/etc/rc.d/S97apache-sys.sh restart

/usr/syno/etc/rc.d/S97apache-user.sh restart

/usr/syno/etc/rc.d/S99ftpd.sh restart
Il est imporant de noter que si vous avez fait une erreur dans votre configuration, c'est à ce moment là que vous le saurez. En effet, en redémarrant, les applications vont de nouveau lire les fichiers de configuration et vous indiquer dans la console la nature des erreurs rencontrées (si il y a erreur ;) ). Dernier point, vous pouvez à tout moment revenir a la configuration initiale en reprenant les fichiers .old que nous avons fait. Par exemple :
mv /usr/syno/apache/conf/extra/httpd-ssl.conf-sys.old /usr/syno/apache/conf/extra/httpd-ssl.conf-sys
puis en redémarrant les programmes comme indiqué ci-dessus ! La présence du script mkcert.sh est aussi à connaître, en effet il permet de regénerer des certificats auto-signés synology.
/usr/syno/etc/ssl/mkcert.sh

Voila, les trois services (web manager, file station, et serveur FTP) devraient maintenant utiliser votre propre certificat !

Lien vers le commentaire
Partager sur d’autres sites

  • 2 mois après...
  • 6 mois après...

Bonjour, j'ai tester et a chaque fois je perd l'accès en https

et j'ai une erreur lors du restart


/usr/syno/etc/rc.d/S97apache-sys.sh restart

/usr/syno/etc/rc.d/S97apache-sys.sh: system httpd stopped

Start System Apache Server .....  -DSSL -f /usr/syno/apache/conf/httpd.conf-sys

Syntax error on line 123 of /usr/syno/apache/conf/extra/httpd-ssl.conf-sys:

SSLCACertificateFile: file '/usr/syno/apache/conf/ssl.crt/ca-bundle.crt' does not exist or is empty

j'ai essayer de mettre le fichier .cert dans '/usr/syno/apache/conf/ssl.crt/ca-bundle.crt mais rien y fait la page n'est plus accessible

j'ai du faire une boulette quelque part ^^ en tous cas sinon super tuto

j'ai peut être réussi, si tel est le cas je ferrais part de mon expérience

Lien vers le commentaire
Partager sur d’autres sites

Resolu, le probleme venais d'une toute petit erreur

faire attention a la ligne

#SSLCACertificateFile /usr/syno/apache/conf/ssl.crt/ca-bundle.crt
par sa :
SSLCACertificateFile /usr/syno/etc/ssl/ssl.chain/cert.chain
c'etait dit dans le tuto mais je suis passé a coté une autre information que je peux communiquer dans le cas d'ovh pour la création de la cle public il y a deux possibilité soit la générer via le site (nom recommander) soit générer la clé public manuellement pour que sa fonctionne ou tous cas chez moi il a fallu que je le le face manuellement voici les commande générer la cle
openssl genrsa -des3 -out ca.key 2048
générer la crs
openssl req -new -key ca.key -out ca.csr

sur cette dernière partie des informations vont vous être demander

remplissez les si besoin, ovh vous indique ceux que vous devez renseigner

j'espère que mon expérience pourras aider d'autre personne

cordialement

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...
  • 2 semaines après...

au moment de faire la sauvegarde des ancien certficat du syno j'ai le message suivant alor que je suis bien connecter en admin

mv: can't rename '/usr/syno/etc/ssl/ssl.crt/server.crt': Permission denied

Bonjour,

la connexion se fait en root, donc a la place de admin vous mettez root et le pass, c'est celui de l'admin

je me permet d'ajouter a nouveau un complement a ce merveilleux tuto, tous est nikel a l'execption d'un petit detail les certificat sont completement installer sur diskstation et filestation, cependant ce n'est pas le cas pour webstation, en effet la chain n'est pas préciser pour l'ecoute du port 443 pour remédiez a ce probleme:

Édité le fichier

/usr/syno/apache/conf/extra/httpd-ssl.conf-user
Ajoutez la ligne
SSLCACertificateFile /usr/syno/etc/ssl/ssl.chain/cert.chain
vous aviez ceci
#

#   Global parameters for virtual host

#

SSLCipherSuite HIGH:MEDIUM:!RC4:!aNULL

SSLProtocol all -SSLv2

SSLCertificateFile /usr/syno/etc/ssl/ssl.crt/server.crt

SSLCertificateKeyFile /usr/syno/etc/ssl/ssl.key/server.key

##

## SSL Virtual Host Context

##
vous devriez avoir
#

#   Global parameters for virtual host

#

SSLCipherSuite HIGH:MEDIUM:!RC4:!aNULL

SSLProtocol all -SSLv2

SSLCertificateFile /usr/syno/etc/ssl/ssl.crt/server.crt

SSLCertificateKeyFile /usr/syno/etc/ssl/ssl.key/server.key

SSLCACertificateFile /usr/syno/etc/ssl/ssl.chain/cert.chain

##

## SSL Virtual Host Context

##

voila

Cordialement

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.