Anachronique me direz-vous ? C’est sûr que par rapport à mes billets “habituels” plutôt tournés vers les nouvelles technologies et solutions avant-gardistes, ça parait un peu vieillot de parler de nos bons vieux NAS VNX. Maaaaais, vous le savez bien, quand on met en production une nouvelle infrastructure de stockage, il faut la garder et l’exploiter longtemps (au moins 4/5 ans en moyenne chez nous). Logique, dans ces conditions que l’on continue à apprendre sur ces équipements, n’est-ce pas :)
Je vous propose donc un petit tuto rapide qui vous permettra de renouveller/changer le certificat SSL de votre tête NAS VNX (Celerra pour les intimes) en deux temps, trois mouvements. L’opération est valable si vous disposez déjà en interne d’une PKI d’entreprise où si vous êtes capable de générer directement une CA pour l’occasion (il existe de nombreux exemple basés sur OpenSSL sur la toile).
La première étape consiste à recréer une clef privée ainsi que le CSR associé à destination de la PKI de votre infrastructure. Pour se faire, logguez vous via SSH sur votre tête nas, sous root (nasadmin n’a pas les droits suffisants). Une fois connecté, placez-vous dans le répertoire /nas/http/conf. Il ressemble normalement à quelque chose comme ça :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
[root@nasvnx conf]# ll total 192 -rwxr-xr-x 1 root root 349 May 7 2015 access.conf -rwxr-xr-x 1 root root 1571 Jun 27 09:37 celerrassl.cnf -rwxr-xr-x 1 root root 1621 Jun 27 2013 celerrassl.cnf.orig -rw-r--r-- 1 root root 1736 Jun 27 2013 cert_request.req lrwxrwxrwx 1 root root 30 Jun 27 09:40 current.crt -> /nas/http/conf/ssl2016/ssl.crt lrwxrwxrwx 1 root root 30 Jun 27 09:39 current.key -> /nas/http/conf/ssl2016/ssl.key -rw-r--r-- 1 root root 180 Jun 20 2013 digest -rw-r--r-- 1 root root 91 Jun 20 2013 digest.groups -rw-rw---- 1 root apache 52091 Oct 20 2015 httpd.conf -rw-rw---- 1 root apache 52090 May 7 2015 httpd.conf.old -rwxr-xr-x 1 root root 43861 May 7 2015 httpsd.conf -rwxr-xr-x 1 root root 1525 May 7 2015 initial.crt -rwxr-xr-x 1 root root 887 May 7 2015 initial.key -rwxr-xr-x 1 root root 1471 May 7 2015 localhost_srm.conf -rwxr-xr-x 1 root root 3319 May 7 2015 mime.types -rw-r--r-- 1 root root 3314 May 7 2015 mod_jk.conf -rw-rw---- 1 root apache 8299 Mar 16 19:20 perl.conf -rw-r----- 1 root apache 6 Oct 20 2015 secret.txt -rwxr-xr-x 1 root root 358 May 7 2015 srm.conf drwxr-xr-x 2 root root 1024 Jun 27 09:40 ssl2016 -rw-r----- 1 root apache 884 May 7 2015 startup.pl -rw-r--r-- 1 root root 5217 May 7 2015 workers.properties [root@nasvnx conf]# |
Commencez par éditer le fichier “celerrassl.cnf” (vi est ton ami). Si vous n’avez pas de fichier de backup, je vous conseille avant toute opération d’en faire une copie pour être plus tranquille (cp est ton ami). Ce fichier correspond au fichier de réponse que nous allons utiliser pour générer automatiquement la nouvelle clef et le certificat request via OpenSSL. Il ressemble à cela :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# # Configuration file for generating CS-CA signed X509 certificates for # the Celerra Control Station. Used for HTTPS exchanges. # (...) ## Celerra routine using this configuration file. IP_ADDR = "1.2.3.4" HOSTNAME_SHORT = "Celerra Temporary Certificate - NOT VALID" HOSTNAME_LONG = "Generate New Certificate with /nas/sbin/nas_config -ssl" #################################################################### [ req ] default_bits = 2048 default_keyfile = privkey.pem distinguished_name = celerra_distinguished_name prompt = no x509_extensions = v3_ca # The extentions to add to the self signed cert string_mask = nombstr default_md = sha1 [ celerra_distinguished_name ] organizationName = VNX Control Station Administrator 0.commonName = $ENV::IP_ADDR 1.commonName = $ENV::HOSTNAME_SHORT 2.commonName = $ENV::HOSTNAME_LONG [ v3_ca ] subjectKeyIdentifier=hash authorityKeyIdentifier=keyid:always,issuer:always basicConstraints = CA:true subjectAltName= @altsec [ altsec ] DNS.1 = $ENV::HOSTNAME_SHORT DNS.2 = $ENV::HOSTNAME_LONG IP = $ENV::IP_ADDR |
Seules les 3 premières lignes nous intéressent, à savoir IP_ADDR, HOSTNAME_SHORT et HOSTNAME_LONG. Remplacez le contenu de ces variables par, respectivement, l’IP de votre Control Station, son nom Host court et son FQDN. Une fois l’édition réalisée, on va générer notre nouvelle clef privée et son csr associé. Pour se faire, utilisez les commandes suivantes :
1 2 3 4 5 6 7 8 |
[root@nasvnx conf]# mkdir mon_nouveau_ssl [root@nasvnx conf]# openssl req -nodes -newkey rsa:2048 -keyout /nas/http/conf/mon_nouveau_ssl/ssl.key -config celerrassl.cnf -out /nas/http/conf/mon_nouveau_ssl/ssl.csr Generating a 2048 bit RSA private key ...........................................................+++ ..............+++ writing new private key to '/nas/http/conf/mon_nouveau_ssl/ssl.key' ----- [root@nasvnx conf]# |
Si vous le souhaitez, vous pouvez aussi modifier la taille/complexité de la clef privée qui va être générée en augmentant la valeur située juste après l’argument “rsa”. Aujourd’hui un petit 4096 est de bon aloi ;)
A l’issue de cette opération, récupérez le fichier .csr (le certificate request) ou son contenu et demandez à vos administrateurs de PKI de vous générer le certificat correspondant. En retour, vous devriez récupérer un fichier de type .crt / .cert au format “PEM”. Placez ce fichier dans le répertoire “mon_nouveau_ssl”, qui contient donc désormais la clef privée, le certificate request et le certificat.
1 2 3 4 5 6 |
[root@nasvnx conf]# ll mon_nouveau_ssl/ total 7 -rw-r--r-- 1 root root 2610 Jun 27 09:40 ssl.crt -rw-r--r-- 1 root root 1041 Jun 27 09:37 ssl.csr -rw-r--r-- 1 root root 1679 Jun 27 09:37 ssl.key [root@nasvnx conf]# |
Enfin, il va falloir changer les liens symboliques situés dans le répertoire. Ces fichiers s’appellent respectivement current.key et current.crt et pointent actuellement sur l’ancienne clef et son certificat associé. Pour se faire, procédez comme suit :
1 2 3 4 5 6 |
[root@nasvnx conf]# rm current.crt rm: remove symbolic link `current.crt'? y [root@nasvnx conf]# rm current.key rm: remove symbolic link `current.key'? y [root@nasvnx conf]# ln -s /nas/http/conf/mon_nouveau_ssl/ssl.key current.key [root@nasvnx conf]# ln -s /nas/http/conf/mon_nouveau_ssl/ssl.crt current.crt |
C’est terminé ! Il vous reste juste à relancer le serveur apache/tomcat servant l’interface de management de la Control Station, soit en la redémarrant ou plus rapidement, via ces commandes :
1 2 |
[root@nasvnx conf]# kill `nas/http/logs/httpd.pid` [root@nasvnx conf]# /nas/sbin/httpd -D HAVE_PERL -D HAVE_SSL -D NO_DETACH -f /nas/http/conf/httpd.conf >> /nas/http/logs/apache_restart.out 2>&1 |
Cette petite documentation est librement inspirée de la documentation issue des forum communautaires EMC que voici.
Je vieillis … j’avais en fait déjà publié un article équivalent en 2013 sur vBlog.io . Mieux vaut deux fois qu’une comme dirait l’autre ….
Pfff :)