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
informatique:securite:manip_certificat_ssl [2019/03/12 14:10] – [Version complète] bn8informatique:securite:manip_certificat_ssl [2024/03/01 17:12] (Version actuelle) – [Extraire les certificats d'un fichier PFX] bn8
Ligne 27: Ligne 27:
 <note>Pour un certificat wildcard, utiliser en //CN// //*.domain.tld//.</note> <note>Pour un certificat wildcard, utiliser en //CN// //*.domain.tld//.</note>
  
-=== Génération d'un CSR multi-domaine ===+<note tip>Pour voir les informations dans un fichier CSR, utiliser la commande suivante : <code bash>openssl req -noout -text -in example.com.csr</code></note> 
 + 
 +==== Génération d'un CSR multi-domaine ====
  
 Pour un certificat multi-domaine, c'est à dire incluant l’extension //subjectAltName// permetant la validité du certificat pour un nom de domaine principale ainsi que un ou plusieurs nom de domaine alternatif, voilà comment procéder : Pour un certificat multi-domaine, c'est à dire incluant l’extension //subjectAltName// permetant la validité du certificat pour un nom de domaine principale ainsi que un ou plusieurs nom de domaine alternatif, voilà comment procéder :
Ligne 62: Ligne 64:
 ==== Vérifier la concordance d'une clé, d'un CSR et d'un certificat ==== ==== Vérifier la concordance d'une clé, d'un CSR et d'un certificat ====
  
-<code bash> +  * clé privée : <code bash>openssl rsa -noout -modulus -in server.key |openssl md5</code> 
-~# openssl rsa -noout -modulus -in server.key |openssl md5 +  * CSR : <code bash>openssl req -noout -modulus -in server.csr |openssl md5</code> 
-XXXXXXXXXXXXXXXXXXXXXcfbf186e13f +  * certificat : <code bash>openssl x509 -noout -modulus -in server.crt |openssl md5</code>
-~# openssl req -noout -modulus -in server.csr |openssl md5 +
-XXXXXXXXXXXXXXXXXXXXXcfbf186e13f +
-~# openssl x509 -noout -modulus -in server.crt |openssl md5 +
-XXXXXXXXXXXXXXXXXXXXXcfbf186e13f +
-</code>+
  
 ===== Génération d'un certificat SSL auto-signé ===== ===== Génération d'un certificat SSL auto-signé =====
Ligne 75: Ligne 72:
 <note important>Privilégiez lorsque possible l'utilisation d'un certificat valide, par exemple via [[informatique:securite:letsencrypt|Let's Encrypt]].</note> <note important>Privilégiez lorsque possible l'utilisation d'un certificat valide, par exemple via [[informatique:securite:letsencrypt|Let's Encrypt]].</note>
  
-Nous commençons par générer la bi-clé RSA, qui peut être protégée par une passphrase. Pour se faciliter la vieon peut ne rien mettre pour la phrase de passeCeci nous évite de devoir la retaper à chaque redémarrage du serveur.+Pour faciliter la suitedéclarons une variable d'environnement pour le nom de domaine pour lequel nous devons générer ce certificat : <code bash>export FQDN=test.example.com</code> 
  
-<code bash>openssl genrsa -out server.key 1024</code>+Générerons ensuite la clé //RSA// : <code bash>openssl genrsa -out /etc/ssl/private/${FQDN}.key 4096 
 +chown root:ssl-cert /etc/ssl/private/${FQDN}.key 
 +chmod 640 /etc/ssl/private/${FQDN}.key</code>
  
-Nous générons ensuite le certificat autosigné : <code bash>openssl req -new -x509 -days 365 -key server.key -out server.crt</code>+Générons ensuite le certificat autosigné : <code bash>openssl req -new -x509 -days 3650 -key /etc/ssl/private/${FQDN}.key -out /etc/ssl/certs/${FQDN}.crt 
 +chmod 644 /etc/ssl/certs/${FQDN}.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).
- +
-  * -x509 : génération d'un certificat autosigné, et non d'une simple requête +
-  * -days 365 : le certificat est valable 365 jours +
-  * -key server.key : la clé publique est extraite de la bi-clé précédente +
-  * -out server.crt : le certificat est copié +
- +
-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 :** <code bash>openssl x509 -in server.crt -text -noout</code>+
  
 +**Paramètres :**
 +  * **''-x509'' :** génération d'un certificat auto-signé, et non d'une //CSR//
 +  * **''-days 3650'' :** le certificat sera valable 3650 jours
 ===== Voir les informations contenues dans un certificat SSL ===== ===== Voir les informations contenues dans un certificat SSL =====
  
Ligne 105: Ligne 99:
  
 ===== Extraire les certificats d'un fichier PFX ===== ===== Extraire les certificats d'un fichier PFX =====
 +  * clé privée : <code bash>openssl pkcs12 -in server.pfx -nocerts -nodes -out server.key</code>
 +  * certificat : <code bash>openssl pkcs12 -in server.pfx -clcerts -nokeys -out server.crt</code>
  
-<code bash>openssl pkcs12 -in file.pfx -clcerts -nokeys -out domain.crt +<note tip>Si vous rencontrez une erreur du type de celle ci-dessous, ajouter le paramètre ''-legacy'' aux commandes openssl: <code>4037E9E48B7F0000:error:0308010C:digital envelope routines:inner_evp_generic_fetch:unsupported:../crypto/evp/evp_fetch.c:373:Global default library context, Algorithm (RC2-40-CBC : 0), Properties ()</code></note>
-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 116: Ligne 110:
 ==== Configuration générale du module SSL d'Apache ==== ==== Configuration générale du module SSL d'Apache ====
  
-Créer le fichier /etc/apache2/conf.d/ssl :+Créer le fichier ///etc/apache2/conf-available/ssl.conf// :
  
 <code apache> <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> </code>
  
-ou :+ou avec un seul fichier contenant la clé et le certificat :
  
 <code apache> <code apache>
-  <IfModule mod_ssl.c> +<IfModule mod_ssl.c> 
-    SSLCertificateKeyFile /etc/apache2/ssl/server.pem +  SSLCertificateKeyFile /etc/ssl/private/server.pem 
-  </IfModule>+</IfModule>
 </code> </code>
  
-**NB :** un fichier .pem est la concaténation de la clef privée et du certificat :+<note tip>Pour créé le fichier //PEM//, concaténez la clef privée et le certificat : 
 +<code bash>cat /etc/ssl/private/server.key /etc/ssl/certs/server.crt > /etc/ssl/private/server.pem 
 +</code></note>
  
-<code bash>cat server.key > apache.pem +Puis activer ce fichier de configuration : <code bash>a2enconf ssl 
-cat server.crt >> apache.pem</code>+service apache2 restart</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 : <code bash>SSLCertificateChainFile cachaine.txt</code>+<note tip>Dans le cas de l'utilisation d'une clef certifiée par une autorité fille d'une autorité de certification connue des navigateurs, il faut ajouter une directive pour indiqué la **ligné** des certificats (appelée //chaîne de certification//: <code bash>SSLCertificateChainFile cachaine.txt</code></note>
  
 ==== Activation du module SSL ==== ==== Activation du module SSL ====
  • informatique/securite/manip_certificat_ssl.1552399843.txt.gz
  • Dernière modification : 2019/03/12 14:10
  • de bn8