Renouveler/Créer des certificats « PKI » sur un NAS VNX

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 :

[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 :

#
# 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 :

[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.

[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 :

[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 :

[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.