divers:openssl

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
divers:openssl [2017/01/10 00:13] – [Requête de signature] fabien.ricodivers:openssl [2018/01/08 00:54] (Version actuelle) – [Requête de signature] fabien.rico
Ligne 3: Ligne 3:
 Openssl est un utilitaire en ligne de commande efficace pour gérer ses propres certificats. Il existe d'autre utilitaire comme [[http://xca.sourceforge.net/|XCA]]. Voila quelques utilisations possible. Openssl est un utilitaire en ligne de commande efficace pour gérer ses propres certificats. Il existe d'autre utilitaire comme [[http://xca.sourceforge.net/|XCA]]. Voila quelques utilisations possible.
  
-===== CA =====+==== Requête de signature ==== 
 +Pour authentifier un serveur, il faut un certificat valide c'est à dire un document contenant la description du serveur (notamment son identifiant et ses noms alternatifs) ainsi que sa clef publique et une signature d'une autorité de certification. 
 + 
 +  * La commande suivante permet de générer une clef secrète pour le serveur (2048 bits) : 
 + 
 +  openssl genrsa -out server.key 2048 
 + 
 +  * La commande suivante permet de générer la requête de signature à envoyer à l'autorité : 
 + 
 +  openssl req -config openssl.cnf -nodes -new -key server.key -out server.csr 
 + 
 +Ici le fichier ''openssl.cnf''est un fichier de configuration. Il est important qu'il contiennent, en plus des valeurs par défaut, les informations sur les noms alternatifs (les différents nom que peut prendre votre machine). Cela signifie que  : 
 +  * Dans la section ''[ req ]'' de ce fichier, il faut ajouter une extension : 
 + 
 +  [ req ] 
 +  ... 
 +  req_extensions = v3_req 
 + 
 +  * Il faut alors une section ''[ v3_req ]'' contenant au moins : 
 + 
 +  [ v3_req ] 
 +  basicConstraints = CA:FALSE 
 +  keyUsage nonRepudiation, digitalSignature, keyEncipherment 
 +  subjectAltName = @alt_names 
 + 
 +  * Enfin, il faut une section ''[ alt_names ]'' avec les noms alternatifs voulus: 
 + 
 +  [ alt_names ] 
 +  DNS.1 = premiernom.univ-lyon1.fr 
 +  DNS.2 = deuxiemenom.secu.univ-lyon1.fr 
 +  DNS.3 = troisiemenom.secu.univ-lyon1.fr 
 +  IP.1 = 172.18.0.2 
 +  IP.2 = ... 
 +  
 +Bien surt, les champs ''DNS.*'' présentent les noms DNS, ''IP.*'' les adresses IPs ... 
 +  
 +Attention, il est préférable que le le ''CN'' soit aussi répété dans les noms alternatifs. 
 + 
 +Une fois la requête générée, vous pouvez la vérifier (voir section lecture) et la transmettre à une autorité de certificat qui va la signer. 
 + 
 +==== CA ====
 Création d'un certificat autosigné : Création d'un certificat autosigné :
   openssl req -config ./openssl.cnf -new -x509 -keyout cakey.pem -out cacert.pem -days 3650   openssl req -config ./openssl.cnf -new -x509 -keyout cakey.pem -out cacert.pem -days 3650
Ligne 11: Ligne 51:
 Le fichier ''openssl.cnf'' dans ce cas servira à connaitre les champs à remplir et leurs valeurs par défaut. Le fichier ''openssl.cnf'' dans ce cas servira à connaitre les champs à remplir et leurs valeurs par défaut.
  
-===== Requête de signature ===== +=== Signature d'une requête ===
-Pour authentifier un serveur, il faut un certificat valide c'est à dire un document contenant la description du serveur (notamment son identifiant et ses noms alternatifs) ainsi que sa clef publique et une signature d'une autorité de certification.+
  
-  - Pour générer une clef secrète pour le serveur (2048 bits) :+Pour signer une requête il faut taper : 
 +  openssl ca -in server.csr -config ./openssl.conf
  
-  openssl genrsa -out server.key 2048+Cela produit un fichier ''server.crt'' qui contiendra le certificat. Attention, pour que les //alternative names// soient acceptés, il faut que la section ''[ default CA ]'' de ''openssl.cnf'' contienne : 
 +  [ CA_default ] 
 +  ... 
 +  copy_extensions = copy
  
-  - Pour générer la requète de signature à envoyer à l'autorité : 
  
-  openssl req -config openssl.cnf -nodes -new -key server.key -out server.csr+==== Lecture du contenu d'un certificat ==== 
 +Un certificat, une clef ou un requête sont simplement formé par un paragraphe en base64 entre 2 lignes qui décrivent le contenuPar exemple :
  
-Ici le fichier ''openssl.cnf'' en plus des valeurs par défaut doit contenir les information sur les noms alternatifs. 
-  - Dans la section ''[ req ]'' de ce fichier, il faut ajouter une extension : 
  
-  [ req ] +    
-  ... +  -----BEGIN CERTIFICATE REQUEST----- 
-  req_extensions v3_req+  MIIDxzCCAq8CAQAwgasxCzAJBgNVBAYTAkZSMR0wGwYDVQQIDBRSaG9uZS1BbHBl 
 +  cy1BdXZlcmduZTENMAsGA1UEBwwETHlvbjEMMAoGA1UECgwDVFBSMQ0wCwYDVQQL 
 +  CC6RaOwOoyoceMR+uMiWPORYmtqsnRfu24WDisNu2Sw8rCipOOCtm6FxylNZAxBt 
 +  21vfhPpFdF1Z0oKyajGCOea8bp2spz3YfBudQ4iOP/VpEw8FaWge33ifSJyJ3DBB 
 +  d96YQwDgqg+UP6fKptzq9O3Huy8yI/0DEMxhRY859Px1XPsfY31DRCyHj5Ppq+P0 
 +  pgYDVR0RBIGeMIGbgh9hdXRoLmdyb3VwZTEuc2VjdS51bml2LWx5b24xLmZygiFy 
 +  ZWxvYWQuZ3JvdXBlMS5zZWN1LnVuaXYtbHlvbjEuZnKCIm1hbmFnZXIuZ3JvdXBl 
 +  0XMY5DI42noZfH/Jqz218X1NV33DlOyN5pQPYA0VBLleODt0H822qQHdEa9NLuWr 
 +  inFlDmugu7wBPTJzyO4C87gZbhCC68jVT9dI3teuU51RAZPv+tGq1FJpAgMBAAGg 
 +  gdUwgdIGCSqGSIb3DQEJDjGBxDCBwTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIF4DCB 
 +  MS5zZWN1LnVuaXYtbHlvbjEuZnKCIHRlc3QxLmdyb3VwZTEuc2VjdS51bml2LWx5 
 +  b24xLmZygglsb2NhbGhvc3SHBKwSAAIwDQYJKoZIhvcNAQELBQADggEBABQIIt9E 
 +  wahgSY7vB/cZ+8XZr5LYPLbTsCUjyBGiSh92iO8dhMUs/wBpTInW5XoF7dHkUL2c 
 +  9wgJj3oIkfKrvKo/1dhiJ5Rc83x+8n4S1Y/fI3UV+nnvCe5en8hZs+OBrdfR+PGE 
 +  zLz2kkvykpjYySp0ZAb/oRdnG04gnoR+17KDXheIEU5o1jPtDq/slDRS1NjHTDGY 
 +  siTqRotwtNTpeN23j146deO5FrLr/wrf/EDjS3EkI5829lo2j2uu0RAZpvGpDtW8 
 +  sPXFhgAO4MkCVQ1WTIx/FswLFtcu43Z2sn2pqi8xf6Xt3z5xmYAyVsAEps5S9RuU 
 +  CZssojdoGPcCa+s= 
 +  -----END CERTIFICATE REQUEST----- 
 +Il est toujours utile de vérifier le contenu d'un certificat :
  
 +  * pour un certificat :
  
 +  openssl x509 -in NOMFICHIER.crt -text
  
-'  +  * pour une requête :
  
-===== Lecture du contenu d'un certificat =====+  openssl req   -in NOMFICHIER.csr -text
  
-   
  • divers/openssl.1484003592.txt.gz
  • Dernière modification : 2017/01/10 00:13
  • de fabien.rico