informatique:securite:manip_certificat_ssl

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
Prochaine révisionLes deux révisions suivantes
informatique:securite:manip_certificat_ssl [2016/01/12 11:20] – [Activation du SSL sur un VirtualHost] bn8informatique:securite:manip_certificat_ssl [2017/12/12 12:59] – [Vérifier la concordance d'une clé et d'un CSR] bn8
Ligne 5: Ligne 5:
 ==== Version simple ==== ==== Version simple ====
  
-  openssl req -newkey rsa:2048 -subj /CN=example.com -nodes -keyout example.com.key -out example.com.csr+<code bash>openssl req -newkey rsa:2048 -subj /CN=example.com -nodes -keyout example.com.key -out example.com.csr</code>
  
 ou ou
- +<code bash>CN="domain.tld" 
-  CN="domain.tld" +FILE=cert-domain.tld 
-  FILE=cert-domain.tld +openssl req -newkey rsa:2048 -subj /CN=$CN -nodes -keyout $FILE.key -out $FILE.csr</code>
-  openssl req -newkey rsa:2048 -subj /CN=$CN -nodes -keyout $FILE.key -out $FILE.csr+
  
 ==== Version complète ==== ==== Version complète ====
  
-  CN="domain.tld" +<code bash> 
-  FILE=cert-domain.tld +CN="domain.tld" 
-  STATE=My State +FILE=cert-domain.tld 
-  VILLE=My City +STATE=My State 
-  PAYS=FR +VILLE=My City 
-  ORGA=My Company +PAYS=FR 
-  ORGA_UNIT=My Unit +ORGA=My Company 
-  openssl req -new -newkey rsa:2048 -nodes -out $FILE.csr -keyout $FILE.key -subj "/C=$PAYS/ST=$STATE/L=$VILLE/O=$ORGA/OU=$ORGA_UNIT/CN=$CN"+ORGA_UNIT=My Unit 
 +openssl req -new -newkey rsa:2048 -nodes -out $FILE.csr -keyout $FILE.key -subj "/C=$PAYS/ST=$STATE/L=$VILLE/O=$ORGA/OU=$ORGA_UNIT/CN=$CN"</code>
  
  
Ligne 33: Ligne 33:
   * Copier le fichier de configuration //openssl.cnf// : <code>cp /etc/ssl/openssl.cnf /etc/ssl/private/openssl-domaine.tld.cnf</code>   * Copier le fichier de configuration //openssl.cnf// : <code>cp /etc/ssl/openssl.cnf /etc/ssl/private/openssl-domaine.tld.cnf</code>
   * Modifier la copie :   * Modifier la copie :
-    * Dans //[req]]// ajouter : <code>req_extensions = v3_req</code> +    * Dans //[req]]// ajouter : <code ini>req_extensions = v3_req</code> 
-    * Dans //[v3_req]// ajouter : <code>subjectAltName = @alt_names</code> +    * Dans //[v3_req]// ajouter : <code ini>subjectAltName = @alt_names</code> 
-    * Ajouter la section suivante : <code>[alt_names]+    * Ajouter la section suivante : <code ini>[alt_names]
 DNS.1 = alt1.domain.tld DNS.1 = alt1.domain.tld
 DNS.2 = alt2.domain.tld DNS.2 = alt2.domain.tld
Ligne 60: Ligne 60:
     Signature Algorithm: sha1WithRSAEncryption     Signature Algorithm: sha1WithRSAEncryption
     [...]</code>     [...]</code>
-==== Vérifier la concordance d'une clé et d'un CSR ====+==== Vérifier la concordance d'une cléd'un CSR et d'un certificat ====
  
-<code>+<code bash>
 ~# openssl rsa -noout -modulus -in server.key |openssl md5 ~# openssl rsa -noout -modulus -in server.key |openssl md5
 XXXXXXXXXXXXXXXXXXXXXcfbf186e13f XXXXXXXXXXXXXXXXXXXXXcfbf186e13f
 ~# openssl req -noout -modulus -in server.csr |openssl md5 ~# openssl req -noout -modulus -in server.csr |openssl md5
 +XXXXXXXXXXXXXXXXXXXXXcfbf186e13f
 +~# openssl x509 -noout -modulus -in server.crt |openssl md5
 XXXXXXXXXXXXXXXXXXXXXcfbf186e13f XXXXXXXXXXXXXXXXXXXXXcfbf186e13f
 </code> </code>
Ligne 74: Ligne 76:
 Nous commençons par générer la bi-clé RSA, qui peut être protégée par une passphrase. Pour se faciliter la vie, on peut ne rien mettre pour la phrase de passe. Ceci nous évite de devoir la retaper à chaque redémarrage du serveur. Nous commençons par générer la bi-clé RSA, qui peut être protégée par une passphrase. Pour se faciliter la vie, on peut ne rien mettre pour la phrase de passe. Ceci nous évite de devoir la retaper à chaque redémarrage du serveur.
  
-<code>openssl genrsa -out server.key 1024</code> +<code bash>openssl genrsa -out server.key 1024</code>
- +
-Nous générons ensuite le certificat autosigné+
  
-  openssl req -new -x509 -days 365 -key server.key -out server.crt+Nous générons ensuite le certificat autosigné : <code bash>openssl req -new -x509 -days 365 -key server.key -out server.crt</code>
  
 Dans les questions posées, il faut faire attention au champ Common Name (eg, YOUR name) : Il faut mettre le nom du serveur (FQDN). Sinon, nous aurons un message comme quoi le nom du propriétaire du certificat et du site ne correspond pas. Dans les questions posées, il faut faire attention au champ Common Name (eg, YOUR name) : Il faut mettre le nom du serveur (FQDN). Sinon, nous aurons un message comme quoi le nom du propriétaire du certificat et du site ne correspond pas.
Ligne 89: Ligne 89:
 Le certificat n'est pas signé par une autorité de certification (type verisign). Ainsi, lors de son utilisation, le browser affichera une anomalie. Pour information, sur verisign.fr, un certificat 40 bits coûte 450€ par an et un certificat pro de 128 bits coûte 1150€ par an. Le certificat n'est pas signé par une autorité de certification (type verisign). Ainsi, lors de son utilisation, le browser affichera une anomalie. Pour information, sur verisign.fr, un certificat 40 bits coûte 450€ par an et un certificat pro de 128 bits coûte 1150€ par an.
  
-**Pour vérifier le bon usage du certificat :** +**Pour vérifier le bon usage du certificat :** <code bash>openssl x509 -in server.crt -text -noout</code>
- +
-  openssl x509 -in server.crt -text -noout+
  
 ===== Voir les informations contenues dans un certificat SSL ===== ===== Voir les informations contenues dans un certificat SSL =====
  
-Pour un CRT : <code>openssl x509 -noout -text -in server.pem</code>+Pour un CRT : <code bash>openssl x509 -noout -text -in server.pem</code>
  
-Pour un CSR : <code>openssl req -noout -text -in server.csr</code>+Pour un CSR : <code bash>openssl req -noout -text -in server.csr</code>
  
 Pour un P12 : le convertir en PEM d'abord (cf. plus bas) Pour un P12 : le convertir en PEM d'abord (cf. plus bas)
Ligne 103: Ligne 101:
 ===== Convertir un P12 en PEM ===== ===== Convertir un P12 en PEM =====
  
-<code>openssl pkcs12 -out file-out.pem -in file-in.p12</code>+<code bash>openssl pkcs12 -out file-out.pem -in file-in.p12</code>
  
 +===== Extraire les certificats d'un fichier PFX =====
 +
 +<code bash>openssl pkcs12 -in file.pfx -clcerts -nokeys -out domain.crt
 +openssl pkcs12 -in file.pfx -nocerts -nodes  -out domain.key</code>
  
 ===== Utilisation d'un certificat SSL par Apache ===== ===== Utilisation d'un certificat SSL par Apache =====
Ligne 115: Ligne 117:
 Créer le fichier /etc/apache2/conf.d/ssl : Créer le fichier /etc/apache2/conf.d/ssl :
  
 +<code apache>
   <IfModule mod_ssl.c>   <IfModule mod_ssl.c>
     SSLCertificateFile    /etc/ssl/certs/server.crt     SSLCertificateFile    /etc/ssl/certs/server.crt
     SSLCertificateKeyFile /etc/ssl/private/server.key     SSLCertificateKeyFile /etc/ssl/private/server.key
   </IfModule>   </IfModule>
 +</code>
  
-ou +ou :
  
 +<code apache>
   <IfModule mod_ssl.c>   <IfModule mod_ssl.c>
     SSLCertificateKeyFile /etc/apache2/ssl/server.pem     SSLCertificateKeyFile /etc/apache2/ssl/server.pem
   </IfModule>   </IfModule>
 +</code>
  
 **NB :** un fichier .pem est la concaténation de la clef privée et du certificat : **NB :** un fichier .pem est la concaténation de la clef privée et du certificat :
  
-  cat server.key > apache.pem +<code bash>cat server.key > apache.pem 
-  cat server.crt >> apache.pem+cat server.crt >> apache.pem</code>
  
-**NB2 :** dans le cas de l'utilisation d'une clef certifié par une autorité fille d'une Autorité de certification connue des navigateurs, il faut ajouté une directive pour indiqué la **ligné** des certificats : +**NB2 :** dans le cas de l'utilisation d'une clef certifié par une autorité fille d'une Autorité de certification connue des navigateurs, il faut ajouté une directive pour indiqué la **ligné** des certificats : <code bash>SSLCertificateChainFile cachaine.txt</code>
- +
-  SSLCertificateChainFile cachaine.txt+
  
 ==== Activation du module SSL ==== ==== Activation du module SSL ====
-  a2enmod ssl+<code bash>a2enmod ssl</code>
  
 ==== Activation du SSL sur un VirtualHost ==== ==== Activation du SSL sur un VirtualHost ====
 Dans le fichier de définition du //VirtualHost// : Dans le fichier de définition du //VirtualHost// :
  
 +<code apache>
   <VirtualHost *:443>   <VirtualHost *:443>
      ...      ...
Ligne 146: Ligne 151:
      ...      ...
   </VirtualHost>   </VirtualHost>
-  +</code> 
 ===== Lister les ciphers supporté par un serveur ===== ===== Lister les ciphers supporté par un serveur =====
  
  • informatique/securite/manip_certificat_ssl.txt
  • Dernière modification : 2024/03/01 17:12
  • de bn8