Cette page est obsolète : pour créer un certificat x509 à l'AUF, voir PKI
Générer une clef privée et un certificat auto-signé
La technique indiquée ici permet de générer une clé privée au format RSA 1024 bits associée à un certificat x509 auto-signé. On ajoute des extensions x509 pour permettre au certificat de couvrir plusieurs noms pour une seule machine (une seule adresse IP). Cela est particulièrement utile pour des serveurs web configurés en VirtualHost sur une seule adresse IP (on a un seul certificat qui couvre tous les noms).
Note : une fois le certificat généré, il est impossible de lui ajouter un nom...
Copier le modèle de configuration d'OpenSSL ci-dessous, en l'appelant openssl.cnf
- Adapter les lignes "subjectAltName" et "nsComment" au niveau de la section [ usr_cert ]
- Lancer la commande ci-dessous et répondre au questions posées :
$ openssl req -nodes -new -x509 -out server.crt -text -config ./openssl.cnf -extensions usr_cert -days 1826
- Deux fichiers sont produits :
server.key contient la clé privée
server.crt le certificat associé (clé publique signée)
- Vérifier dans le fichier server.crt (il est au format texte) que les paramètres générés semblent corrects
Notez bien :
la clé privée n'est pas chiffrée, elle est "en clair", sans mot de passe afin que les serveurs qui auront à l'utiliser puisse le faire directement. Il faut donc lui donner des accès minimums (lecture seule par root, en général). Si vous devez crypter la clé : man rsa
- le certificat est auto-signé, il provoquera donc l'affichage d'un message d'alerte sur la plupart des navigateurs, voire nécessitera de gérer une «exception de sécurité» sur Firefox 3 et assimilés.
# # FICHIER "openssl.cnf" à copier puis adapter avant utilisation # # Il s'agit de la configuration OpenSSL pour générer un certificat pour une machine # avec PLUSIEURS noms (certificat auto-signé, en attendant une AC racine pour l'AUF) # # Mode d'emploi : # 1) adapter les lignes "subjectAltName" et "nsComment" au niveau de la section [ usr_cert ] # 2) lancer la commande ci-dessous et répondre au questions posées : # $ openssl req -nodes -new -x509 -out server.crt -text -config ./openssl.cnf -extensions usr_cert -days 1826 # 3) Deux fichiers sont produits : # * "server.key" contient la clé privée # * "server.crt" le certificat associé (clé publique signée) # Vérifier dans le fichier server.crt (il est au format texte) que les paramètres générés semblent corrects # # Notez bien : # * la clé privée n'est pas chiffrée, elle est "en clair", sans mot de passe afin que les serveurs # qui auront à l'utiliser puisse le faire directement. Il faut donc lui donner des accès minimums # (lecture seule par root, en général) # Si vous devez crypter la clé : "man rsa" # * le certificat est auto-signé, il provoquera donc l'affichage d'un message d'alerte sur la plupart # des navigateurs, voire nécessitera de gérer une "exception de sécurité" sur Firefox 3 et assimilés. # [ usr_cert ] subjectAltName = DNS:www.auf.org, DNS:wiki.auf.org, DNS:courriel.auf.org, DNS:courrier.auf.org nsComment = "Certificat pour www.pays.auf.org et sites freres" nsCertType = server basicConstraints = CA:FALSE subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer [ req ] default_bits = 1024 default_keyfile = server.key distinguished_name = req_distinguished_name string_mask = nombstr [ v3_req ] keyUsage = nonRepudiation, digitalSignature, keyEncipherment [ req_distinguished_name ] countryName = Code pays, sur 2 lettres countryName_default = SN countryName_min = 2 countryName_max = 2 stateOrProvinceName = Région ou province stateOrProvinceName_default = Dakar localityName = Ville localityName_default = Dakar 0.organizationName = Nom de l'organisation 0.organizationName_default = AUF organizationalUnitName = Unité ou service dans l'organisation organizationalUnitName_default = DRI 0.commonName = Nom complet de la machine, avec domaine (FQDN) 0.commonName_default = www.pays.auf.org emailAddress = Adresse électronique emailAddress_default = hostmaster@pays.auf.org emailAddress_max = 64