Aller au contenu
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 :

$ umask 077
$ openssl genpkey -algorithm EC -pkeyopt ec_paramgen_curve:prime256v1 \
?   -out monserveur.key
$ umask 077
$ openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:2048 \
?   -out monserveur.key

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.


Dernière mise à jour: 22 novembre 2023