Synology : Comment créer ses propres certificats SSL 

Introduction:

Vous avez certainement remarqué ce vilain message qui apparaît lorsque l'on se connecte sur un Syno en https :


- "vous avez tenté d'établir une connexion avec ..." "...Cependant le certificat de sécurité présenté appartient à Synology..."

Impossible de s'en défaire si ce n'est refaire les certicats.
En fait, ce n'est pas très compliqué.


Prérequis :

- le module Telnet doit être activé sur le Syno
- le fichier "openssl.cnf" doit être téléchargé au préalable


Comment générer ses propres certificats SSL :


Copie du fichier openssl.cnf :
Ouvrir une connexion Telnet sur Syno en tant que "root"
Aller sur le chemin suivant : /usr/syno
Si le dossier ssl existe à cet emplacement, il suffit de copier le fichier openssl.cnf à l'intérieur.
Si le dossier ssl n'existe pas, il faut le créer : mkdir ssl et déposer le fichier openssl.cnf à l'intérieur.

Lien de téléchargement du fichier en question : openssl.cnf    Ce fichier est un fichier txt

Syno> cd ssl
-ash: cd: can't cd to ssl
Syno> mkdir ssl
Syno> cp /volume1/public/openssl.cnf /usr/syno/ssl



Création d'une clef client  [ca.key] :

openssl genrsa -des3 -out ca.key 1024

Syno> openssl genrsa -des3 -out ca.key 1024
Generating RSA private key, 1024 bit long modulus
...........++++++
........++++++
e is 65537 (0x10001)
Enter pass phrase for ca.key:
Verifying - Enter pass phrase for ca.key:

La passe phrase est demandée à deux reprises.

La phrase "-des3" est là pour enclencher la demande d'une passe phrase, dans le cas ou vous ne souhaitez pas utiliser de passe phrase, vous pouvez supprimer cet argument (non conseillé). N'utiliser pas de valeur supérieure à 1024 bits pour la création de la clef.

Création d'un certificat client [ca.csr] :

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

Syno> openssl req -new -key ca.key -out ca.csr
Enter pass phrase for ca.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:Fr
State or Province Name (full name) [Some-State]:France
Locality Name (eg, city) []:Grenoble
Organization Name (eg, company) [Internet Widgits Pty Ltd]:monorganisationamoi
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:Syno00113203399               
Email Address []:trucmuch@gmail.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:monmotdepasse
An optional company name []:

Attention, le système va vous poser plusieures questions :
Entrez votres passphrase = "JadoreLes3ballesdeMoussequipoussentSurLamousse"
Country name = Fr
State or Province = France
Locality Name or City = Paris
Organization Name = Ma boutique à Moi
Organizational Unit (section) = on peut ne rien mettre
Common Name = Syno001132033899 ==>  correspond à la MacAdresse du Syno lors de la création de ce certificat. Lors de la création du                                                                             certificat serveur, nous mettrons ici l'adresse internet du Synology (DDNS).
Email Adress = monadresse@zanadoo.fr
Challenge Password  = on peut ne rient mettre mais le mieux est d'entrer un mot de passe que l'on va retenir.



Puis Lançons la signature du certificat [ca.crt] :

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

Syno> openssl x509 -req -days 7300 -in ca.csr -signkey ca.key -out ca.crt
Signature ok
subject=/C=Fr/ST=France/L=Grenoble/O=
monorganisationamoi/CN=Syno00113203399 /emailAddress=trucmuch@gmail.com
Getting Private key
Enter pass phrase for ca.key:

365 correspond à 365 jours, vous pouvez remplacer par 7300 si vous souhaitez que votre certificat soit valable durant 20 ans par exemple.




            Maintenant nous allons créer les clefs et certificats serveur :

Création d'une clef serveur [server.key] :

openssl genrsa -des3 -out server.key 1024

Syno> openssl genrsa -des3 -out server.key 1024
Generating RSA private key, 1024 bit long modulus
.............................++++++
.................................++++++
e is 65537 (0x10001)
Enter pass phrase for server.key:
Verifying - Enter pass phrase for server.key:


La phrase "-des3" est là pour enclencher la demande d'une passe phrase, dans le cas ou vous ne souhaitez pas utiliser de passe phrase, vous pouvez supprimer cet argument. N'utiliser toujours pas de valeur supérieure à 1024 bits pour la création de la clef.

Création d'un certificat serveur [server.csr] :

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

Syno> openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:Fr
State or Province Name (full name) [Some-State]:France
Locality Name (eg, city) []:Grenoble
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
monorganisationamoi
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:monsyno.dyndns.org
Email Address []:
trucmuch@gmail.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
monmotdepasse
An optional company name []:
Attention, le système va vous poser les mêmes questions que précédemment :
Ce coup-ci nous allons répondre différent à la question "common name" Nous devons mettre l'adresse internet réelle. Le mieux est d'utiliser une adresse de type DynDns, car la validité de notre certificat tiendra sur le nom du site. Si nous changeons d'adresse, il faudra prévoir de refaire le certificat.
Common Name = monsyno.dyndns.org




Lançons la signature du certificat [server.crt] :

openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt

Syno> openssl x509 -req -days 7300 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt
Signature ok
subject=/C=Fr/ST=France/L=Grenoble/O=monorganisationamoi/CN=Syno00113203399 /emailAddress=trucmuch@gmail.com
Getting ca Private key
Enter pass phrase for ca.key:


365 correspond toujours à 365 jours

Création d'une version non sécurisée pour le fonctionnement d'Apache:

Nous allons maintenant créer une version non sécurisée pour faciliter le démarrage du serveur Apache. Cela évitera un non démarrage de SSL lors du prochain reboot.
openssl rsa -in server.key -out server.key.insecure
mv server.key server.key.secure
mv server.key.insecure server.key

Sauvegarde et mise en place :

Si nous regardons ce que nous avons maintenant à l'intérieur de /usr/syno/ssl :

Syno> ls
ca.crt       ca.key       server.crt   server.key
ca.csr       openssl.cnf  server.csr

Nous voyons que nous avons bien toutes nos clefs ainsi que nos certificats.

Les certificats actifs se trouvent sur le chemin suivant :
/usr/syno/etc/ssl
Rendons nous sur ce chemin et commençons par les sauvegarder avant de les remplacer.

cp -r ssl /usr/syno/etc/ssl.back

Maintenant nous pouvons remplacer les clefs et certificats :

cp /usr/syno/ssl/*.crt /usr/syno/etc/ssl/ssl.crt
Dans ssl.crt doivent être positionnés ca.crt et server.crt

cp /usr/syno/ssl/*.csr /usr/syno/etc/ssl/ssl.csr
Dans ssl.csr doivent être positionnés ca.csr et server.csr

cp /usr/syno/ssl/*.key /usr/syno/etc/ssl/ssl.key
Dans ssl.key doivent être positionnés ca.key et server.key

Un redémarrage du Syno est requis pour prise en compte des nouveaux certificats.
Si vous aviez fait une erreur, surtout pas de panique, telnet est là pour vous sortir de la situation.

A vous de jouer !

Pour toutes remarques ou questions concernant ce tuto, vous pouvez m'envoyer un  email