Création du certificat

  1. Créer une clé privée de 2048 bit sans mot-de-passe (sinon le mot-de-passe est réclamé à chaque démarrage d’Apache…) :
     # cd /etc/pki/tls/private
    # openssl genrsa 2048 > ./mon-serveur.key
    # chown root:root ./mon-serveur.key
    # chmod 400 ./mon-serveur.key
  2. On créé et auto-signe directement le certificat qui sera distribué et valable pendant 2000 jours :
     # openssl req -new -x509 -days 2000 -key ./mon-serveur.key > ./mon-serveur.crt

    Saisir les données demandées :

    Country Name (2 letter code) [XX]:FR
    State or Province Name (full name) []:Paris
    Locality Name (eg, city) [Default City]:Paris
    Organization Name (eg, company) [Default Company Ltd]:Pic
    Organizational Unit Name (eg, section) []:SI
    Common Name (eg, your name or your server's hostname) []:mon-serveur.fr
    Email Address []: Cette adresse e-mail est protégée contre les robots spammeurs. Vous devez activer le JavaScript pour la visualiser.

  3. Il semble que la méthode précédement pose maintenant quelques soucis à partir de RHEL/Rocky Linux 9. En effet, le certificat généré est de type "autorité de certification" (CA=True) au lieu du type "serveur" ce qui pose un problème à HTTPd. On peut s'en sortir avec la commande suivante :

    # openssl req -new -key mon-serveur.key -x509 -days 2000 -out mon-serveur.crt -subj "/C=US/ST=State/L=City/O=Organization/OU=Organizational Unit/CN=www.exemple.com" -addext "subjectAltName = DNS:www.exemple.com,DNS:exemple.com" -addext "keyUsage = critical, digitalSignature, keyEncipherment" -addext "extendedKeyUsage = serverAuth"
  4. Déplacer le certificat auto-signé dans le répertoire "certs"
    # mv ./mon-serveur.crt /etc/pki/tls/certs
  5. Déclarer le certificat et la clé privée dans le virtualhost Apache en ouvrant le fichier /etc/httpd/conf.d/ssl.conf et en modifiant les chemins des paramètres suivants du virtualhost concerné :
     SSLCertificateFile /etc/pki/tls/certs/mon-serveur.crt
    SSLCertificateKeyFile /etc/pki/tls/private/mon-serveur.key
  6. Redémarrer Apache :
     # systemctl restart httpd

 

Erreur navigateur

Quand on utilise un certificat auto-signé sur un site Web afin de proposer du HTTPS, le navigateur affichera un message d'avertissement signalant qu'il ne fait pas confiance à ce site. Pour éviter cela, par exemple dans le cadre d'un labo de test, on peut récupérer le certificat du site (aller dans les options du petit cadenas à gauche de l'URL) et l'installer dans la section "Autorités de certification racines de confiance" du magasin de certificats de Windows. Pour cela, il faudra utiliser mmc.exe et le composant "Certificats".

Dans le cas où le nom saisi dans le navigateur ne correspond pas au champ CN du certificat, on peut obtenir le message d'erreur suivant même si le certificat a été ajouté dans le magasin Windows :

NET::ERR_CERT_COMMON_NAME_INVALID

Il faut donc veiller à ce que les 2 noms correspondent. Parfois, bien que le CN soit correct on peut obtenir quand même cette erreur car certains navigateurs modernes accordent plus d'importance aux SAN. Il faut donc également s'assurer que le certificat inclut un SAN qui corresponde au nom saisi dans l'URL du navigateur.

Pour générer un certificat avec un SAN en une seule commande, on peut s'inspirer de l'exemple suivant :
https://raymii.org/s/tutorials/OpenSSL_generate_self_signed_cert_with_Subject_Alternative_name_oneliner.html

Ajouter un commentaire

Joomla templates by a4joomla