Synology : régénération d'un certificat SSL
Suite à la mise à jour de mon Synology avec le dernier firmware, le certificat SSL du NAS a disparu.
Je décris ci dessous les différentes étapes nécessaires à la re-génération d'un certificat SSL.
Symptômes
Suite à la mise à jour de mon NAS avec le dernier firmaware (DSM 3.0-1337) je me suis retrouvé bloqué en essayant d'accéder à l'interface d'admin de mon Synology.
Impossible d'accéder à quoi que ce soit.
Sous firefox, l'erreur suivante s'affiche :
Your certificate contains the same serial number as another certificate issued by the certificate authority. Please get a new certificate containing a unique serial number. (Error code: sec_error_reused_issuer_and_serial)
Diagnostic
En recherchant un peu, je tombe rapidement sur la conclusion suivante : le certificat SSL a disparu.
Traitement
Il faut donc générer un nouveau certificat pour continuer à utiliser les différentes interfaces web en SSL.
Il est nécessaire d'avoir une connexion ssh root au Synology pour y arriver.
Première étape : le fichier openssl.cnf
En cherchant à créer un nouveau certificat d'autorité, je m'aperçoit que le fichier openssl.cnf nécessaire à la génération de la clef n'existe pas.
(WARNING: can't open config file: /usr/syno/ssl/openssl.cnf lors de la génération de la clef du certificat d'autorité).
Il faut donc :
1. télécharger la dernière version d'openSSL sur http://www.openssl.org/source/ (http://www.openssl.org/source/openssl-0.9.8p.tar.gz à l'heure ou j'écris ces lignes)
2. décompresser l'archive et récupérer le fichier apps/openssl.cnf
3. placer ce fichier sur le synology dans le répertoire /usr/syno/ssl
Deuxième étape : génération de l'autorité de certification
Dans la mesure ou je n'ai pas les moyens/l'envie de me payer un certificat pour mon Synology, un certificat SSL auto-signé fera très bien l'affaire.
NAS> mkdir /usr/local/ssl NAS> cd /usr/local/ssl/ NAS> openssl genrsa -des3 -out ca.key 1024 NAS> openssl req -new -key ca.key -out ca.csr NAS> openssl x509 -days 3650 -signkey ca.key -in ca.csr -req -out ca.crt
Troisième étape : génération du certificat
NAS> openssl genrsa -out server.key 1024 NAS> openssl req -new -key server.key -out server.csr NAS> openssl x509 -days 3650 -CA ca.crt -CAkey ca.key -set_serial 01 -in server.csr -req -out server.crt
Quatrième étape : installation du certificat
NAS> cd /usr/syno/etc/ssl NAS> mv /usr/local/ssl/ca.crt ssl.crt NAS> mv /usr/local/ssl/server.crt ssl.crt NAS> mv /usr/local/ssl/ca.csr ssl.csr NAS> mv /usr/local/ssl/server.csr ssl.csr NAS> mv /usr/local/ssl/ca.key ssl.key NAS> mv /usr/local/ssl/server.key ssl.key
Il ne reste plus maintenant qu'à redémarrer le Syno.
Sources:
http://59.124.41.244/enu/viewtopic.php?f=36&t=22167&start=0
http://forum.synology.com/wiki/index.php/How_to_generate_custom_SSL_certificates
Yann Wednesday 18 January à 15h36
Bonjour,
Je ne sais pas si l'auteur va se permettre par honnêteté de laisser mon commentaire mais je déconseille vivement ce tutoriel.
Je l'ai appliqué à la lettre et au moment du redémarrage du Syno, celui-ci ne veut tout simplement plus se connecter :(
Le certificat n'est pas bon ! Il faut donc chercher une solution ensuite pour aller en telnet ou ssh supprimer les fichiers liés au certificat ssl pour ensuite redémarrer le Syno et qu'on puisse s'y reconnecter !
Hubert Wednesday 18 January à 15h45
Salut Yann,
Désolé que cela n'ai pas fonctionné sur ton NAS.
Quelle est la version de ton DSM ?
Il y a maintenant sur les DSM récent la possibilité d'importer un certificat directement depuis l'interface du DSM.
Combiné avec la possibilité d'obtenir des certificats gratuitement (par exemple ici : http://www.startcom.org/)
C'est nettement plus pratique.
Guillaume Friday 6 April à 15h48
Le diagnostic était erronné : sec_error_reused_issuer_and_serial signifie que le certificat est bien présent, mais que le certificat présenté utilise le même n° de série qu'un autre certificat (alors qu'un certificat doit être unique). La solution est simple : il suffit de supprimer les enregistrements correspoindant au Syno dans le magasin du navigateur.