User Tools

Site Tools


informatique:logiciels:openssl

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatique:logiciels:openssl [2013/10/14 20:45] – modification externe 127.0.0.1informatique:logiciels:openssl [2022/10/27 09:54] (current) – [Afficher des informations] afficher le contenu de la requête pteu
Line 1: Line 1:
-{{tag>sécurité ssl certificat}} 
  
 ======OpenSSL====== ======OpenSSL======
  
 +=====Signer un certificat=====
 Pour générer un certificat (par exemple pour Apache) : Pour générer un certificat (par exemple pour Apache) :
-  openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache/ssl/apache.pem+<code bash> 
 +openssl req -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.pem -keyout /etc/apache/ssl/apache.pem 
 +</code>
  
   * ''req'' request   * ''req'' request
Line 12: Line 14:
   * ''-out <fichier.pem>'' l'emplacement du certificat créé   * ''-out <fichier.pem>'' l'emplacement du certificat créé
   * ''-keyout <fichier.pem>'' fichier contenant la clé RSA   * ''-keyout <fichier.pem>'' fichier contenant la clé RSA
 +
 +
 +=====Afficher des informations=====
 +
 +Il faut d'abord connaitre le format du certificat à lire : on utilise ''-inform <FORMAT>'' pour le définir ; les formats étant PEM, DER ou NET. Dans les exemples ci-dessous, on n'utilisera que le format PEM (par défaut donc implicite) pour simplifier les lignes de commande.
 +
 +Lire les informations d'un fichier local :
 +<code bash>
 +# afficher le contenu de la requête
 +openssl req -noout -text -verify -in request.csr
 +# ou en plus court
 +openssl req -noout -subject -verify -in request.csr
 +
 +# afficher l'ensemble des infos du certificat
 +openssl x509 -noout -in fichier.pem -text
 +
 +# afficher toutes les infos sauf la signature chiffrée
 +openssl x509 -noout -in fichier.pem -text -certopt no_sigdump
 +
 +# afficher uniquement le sujet, l'email, le numéro de série ou les dates de validité (début/fin)
 +openssl x509 -noout -in fichier.pem -subject
 +openssl x509 -noout -in fichier.pem -email
 +openssl x509 -noout -in fichier.pem -serial 
 +# 2 équivalents :
 +openssl x509 -noout -in fichier.pem -dates
 +openssl x509 -noout -in fichier.pem -startdate -enddate
 +
 +# pas d'option pour afficher directement le CN ; il faut filtrer manuellement le résultat :
 +openssl x509 -noout -in fichier.pem -subject | sed -e 's/^.*CN=//' -e 's/\/.*$//'
 +
 +# afficher uniquement les extensions x509v3
 +# (on est d'accord qu'il faudra sûrement un coup de grep/awk/sed derrière...)
 +openssl x509 -noout -in fichier.pem -text -certopt \
 + no_subject,no_header,no_version,no_serial,no_signame,no_validity,no_subject,no_issuer,no_pubkey,no_sigdump,no_aux
 +</code>
 +
 +Pour un site web (distant) donné :
 +<code bash>
 +openssl s_client -connect google.fr:443 | openssl x509 -noout -text
 +</code>
 +
 +
 +=====Convertir un certificat=====
 +
 +Pour convertir un certificat du format PEM vers DER par exemple :
 +<code bash>
 +openssl x509 -inform pem -in fichier.pem -outform der -out fichier.der
 +</code>
 +
 +=====Vérifier si un certificat est révoqué=====
 +
 +Un certificat peut être invalide s'il n'est pas signé par une CA reconnue, s'il est expiré (ou pas encore valide :D), et s'il a été révoqué. Pour vérifier ce dernier cas il faut récupérer le numéro de série du certificat et vérifier s'il n’apparaît pas dans la liste de révocation (CRL) de la CA. En très sale ça donnerait ceci :
 +<code bash>
 +# on récupère le numéro de série du certificat à tester
 +SN=$(openssl x509 -noout -in louche.pem -serial | cut -d"=" -f2)
 +# rechercher son occurence dans la liste de révocation
 +openssl crl -noout -text -in crl.pem | grep -A1 "Serial Number: $SN"
 +</code>
 +Si le certificat est révoqué ça nous retournera quelque chose du style :
 +<code bash>
 +    Serial Number: 0007
 +        Revocation Date: Nov  6 14:23:40 2017 GMT
 +</code>
 +
 +
 +=====Révoquer un certificat=====
 +
 +A faire sur la CA évidemment ; cela permet d'invalider un certificat qui n'a pas atteint sa date d'expiration.
 +<code bash>
 +openssl ca -config openssl.cnf -revoke fired-employee.pem
 +</code>
 +
 +Puis il faut re-générer la CRL.
 +
 +
 +=====Création de la CRL=====
 +
 +La liste de révocation et un fichier signé par la CA, qui contient tous les certificats révoqués ; il est à mettre à disposition de tous afin que chacun puisse connaître et rejeter les certificats qui ont été révoqués.
 +
 +<code bash>
 +openssl ca -config openssl.cnf -gencrl -out crl.pem
 +</code>
 +
informatique/logiciels/openssl.1381783501.txt.gz · Last modified: 2017/11/06 15:54 (external edit)