Public
personnels opérant des serveurs
Certificats X.509
Règle
le RSSI impose qu'aucun mot de passe ne transite « en clair », suivant en cela les bonnes pratiques en cours. Tout service requérant une authentification par login / mot de passe doit donc passer uniquement à travers un protocole chiffré.
Les services sécurisés par TLS (HTTPS par exemple) requièrent un certificat X.509. Pour que les clients se connectent de manière transparente, ils ont besoin de connaître l'autorité de certification. La DSI peut fournir de tels certificats ainsi reconnus pour un certain nombre de domaines DNS qu'elle opère.
Information
Les certificats sont à renouveler une fois par an.
Créer une clef privée sur le serveur ; le RSSI demande d'utiliser de préférence la courbe elliptique P-256.
Générer ensuite la CSR (certificate signature request) à partir de la clef et adresser le fichier CSR à assistance@cnam.fr.
Danger
La clef privée ne doit pas être transmise, jamais, à personne ; elle est secrète et doit le rester. Et elle doit donc rester sur le serveur.
Penser à régler les permissions sur le fichier et à supprimer les éventuelles copies de manière efficace comme conseillé par le RSSI.
Pour créer la clef avec OpenSSL :
Le fichier monserveur.key
contient alors la clef privée.
Certaines applications ne supportent toujours pas les courbes elliptiques (pourtant spécifiées par le NIST en 1999), utiliser alors RSA.
Ce fichier ne doit jamais être divulgué ni évidemment envoyé à quiconque.
Astuce
Pour protéger la clef par une passphrase, ajouter l'option
-aes256
à la commande précédente.
Créer ensuite la CSR :
$ openssl req -new -key monserveur.key \
? -subj '/C=FR/O=Conservatoire National des Arts et Métiers/CN=monserveur.cnam.fr/' \
? -out monserveur.csr -verbose
Le fichier monserveur.csr
contient la CSR, c'est celui-là qu'il faut
adresser par courriel à assistance@cnam.fr.
Astuce
Les certificats doivent être renouvellés une fois par an. Plutôt que de demander un certificat par virtual host, demander un seul certificat par serveur. Il suffit alors de configurer le serveur pour utiliser ce certificat pour chacun de ses virtual hosts en utilisant Server Name Identication.
La demande de création de CSR ci-dessus doit être adaptée comme suit :
- créer un fichier de configuration
monserveur.cnf
- ajouter
-config monserveur.cnf
à la commande de création de CSR
avec dans le fichier :
$ cat monserveur.cnf
[ req ]
req_extensions = req_ext
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
commonName = monserveur.cnam.fr
countryName = FR
stateOrProvinceName =
localityName =
organizationName = Conservatoire National des Arts et Métiers
organizationalUnitName =
[ req_ext ]
subjectAltName = @alt_names
[ alt_names ]
DNS.1 = autrenom1.cnam.fr
DNS.2 = autrenom2.cnam.fr
où il faudra adapter commonName
et les noms DNS.x
.
Astuce
Tous les daemons d'un même serveur peuvent parfaitement partager une clef et un certificat, quand bien même ils sont lancés avec des identités différentes :
- stocker la clef dans
/etc/ssl/private/monserveur.key
- stocker le certificat dans
/etc/ssl/certs/monserveur.crt
Créer (s'il n'existe pas déjà) un groupe dédié (par défaut ssl-cert
sur Debian et Ubuntu). La clef ne doit être lisible que par les membres
de ce groupe et root
:
# chmod 0440 /etc/ssl/private/monserveur.key
# chown root:ssl-cert /etc/ssl/private/monserveur.key
# stat -c '%a (%A) %U:%G %n' /etc/ssl/private/monserveur.key
440 (-r--r-----) root:ssl-cert /etc/ssl/private/monserveur.key
Enfin, ajouter les identités des daemons utilisant cette clef dans
le groupe ssl-cert
(par exemple nginx
).
Ainsi, il n'y a besoin que d'un seul couple (clef, certificat) par serveur.