Certificats SSL : Différence entre versions
(Page créée avec « = Commandes générales OpenSSL = == Uné clé privée == Génération d'une clé privée, avec 2048 bits, sans encodage particulier : openssl genrsa -out monserveur.key... ») |
(→Validation de la chaine CERT / CA / CHAIN) |
||
(10 révisions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
= Commandes générales OpenSSL = | = Commandes générales OpenSSL = | ||
== Uné clé privée == | == Uné clé privée == | ||
− | Génération d'une clé privée, avec | + | Génération d'une clé privée, avec 4096 bits, sans encodage particulier : |
− | openssl genrsa -out monserveur.key | + | openssl genrsa -out monserveur.key 4096 |
== Paramètres DH == | == Paramètres DH == | ||
Ligne 9 : | Ligne 9 : | ||
== Générer votre CSR (basé sur OpenSSL) == | == Générer votre CSR (basé sur OpenSSL) == | ||
− | '''La clé RSA doit faire | + | '''La clé RSA doit faire minimum 2048bits, mais 4096 est plus conseillé en ce moment''' |
Pour générer votre couple Clé privée / CSR sous Apache/OpenSSL, vous devez utiliser la commande suivante : | Pour générer votre couple Clé privée / CSR sous Apache/OpenSSL, vous devez utiliser la commande suivante : | ||
− | openssl req -nodes -newkey rsa: | + | openssl req -nodes -newkey rsa:4096 -sha256 -keyout monserveur.key -out serveur.csr |
Le processus va créer 2 fichiers: un public en .csr et un privé en .key qu'il faudra absolument garder | Le processus va créer 2 fichiers: un public en .csr et un privé en .key qu'il faudra absolument garder | ||
Ligne 52 : | Ligne 52 : | ||
== SAN == | == SAN == | ||
'''SubjectAltName''' = plusieurs noms dans un seul certificat (multiadresses) | '''SubjectAltName''' = plusieurs noms dans un seul certificat (multiadresses) | ||
+ | |||
+ | * Dans la section '''[ req ]''', activer <code>req_extensions = v3_req</code> | ||
+ | * Ensuite, dans la section '''[ v3_req ]''' créer une ligne <code>subjectAltName = @alt_names</code> | ||
+ | * Puis créer une section '''[ alt_names ]''' et y mettre les infos souhaitées : | ||
+ | [alt_names] | ||
+ | DNS.1 = example.com | ||
+ | DNS.2 = www.example.org | ||
+ | DNS.3 = webmail.example.org | ||
+ | |||
http://apetec.com/support/GenerateSAN-CSR.htm | http://apetec.com/support/GenerateSAN-CSR.htm | ||
== Créer un certificat autosigné et une clé == | == Créer un certificat autosigné et une clé == | ||
− | openssl req -x509 -nodes -days 3650 -newkey rsa: | + | openssl req -x509 -nodes -days 3650 -newkey rsa:4096 -sha256 -keyout privateKey.key -out certificate.crt |
== Créer un certificat autosigné avec une clé privée existante == | == Créer un certificat autosigné avec une clé privée existante == | ||
Ligne 66 : | Ligne 75 : | ||
=== Créer une CA === | === Créer une CA === | ||
- Créer l'arbo qui va bien : | - Créer l'arbo qui va bien : | ||
− | mkdir -p | + | mkdir -p CA/{newcerts,private} |
- Créer les fichiers qui vont bien : | - Créer les fichiers qui vont bien : | ||
− | echo "01" > | + | echo "01" > CA/serial |
− | echo "01" > | + | echo "01" > CA/crlnumber |
− | touch | + | touch CA/index.txt |
− | - Créer une clé privée pour la CA ( | + | - Créer une clé privée pour la CA (4096 bits, avec une passphrase) |
− | openssl genrsa -des3 -out | + | openssl genrsa -des3 -out CA/private/cakey.pem 4096 |
genrsa : Directive pour générer des clés privées | genrsa : Directive pour générer des clés privées | ||
Ligne 79 : | Ligne 88 : | ||
out : Enregistre la clé privée RSA dans le fichier passé en paramètre | out : Enregistre la clé privée RSA dans le fichier passé en paramètre | ||
− | + | 4096 : Nombre de bits de la clé privée | |
2- Créer une Autorité de Certification racine "CA ROOT" | 2- Créer une Autorité de Certification racine "CA ROOT" | ||
− | openssl req -new -sha256 -x509 -days 3560 -key | + | openssl req -new -sha256 -x509 -days 3560 -key CA/private/cakey.pem -out CA/cacert.pem |
req : Directive de gestion des requêtes de certificats | req : Directive de gestion des requêtes de certificats | ||
Ligne 106 : | Ligne 115 : | ||
=== Générer une liste de révocations === | === Générer une liste de révocations === | ||
− | openssl ca -md sha256 -gencrl -out | + | openssl ca -md sha256 -gencrl -out CA/ca-crl.pem -crldays 30 |
== Intégrer une CA sur une Debian == | == Intégrer une CA sur une Debian == | ||
Ligne 132 : | Ligne 141 : | ||
== Convert a PEM file to DER == | == Convert a PEM file to DER == | ||
openssl x509 -outform der -in certificate.pem -out certificate.der | openssl x509 -outform der -in certificate.pem -out certificate.der | ||
+ | == Convert a PKCS#7 (.p7b) into a PEM x509 encoded file == | ||
+ | openssl pkcs7 -print_certs -in certificate.p7b -out certificate.pem | ||
== Convert a PKCS#12 file (.pfx .p12) containing a private key and certificates to PEM == | == Convert a PKCS#12 file (.pfx .p12) containing a private key and certificates to PEM == | ||
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes | openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes | ||
Ligne 137 : | Ligne 148 : | ||
== Convert a PEM certificate file and a private key to PKCS#12 (.pfx .p12) == | == Convert a PEM certificate file and a private key to PKCS#12 (.pfx .p12) == | ||
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt | openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt | ||
+ | == Convertir une clé openssh en format PEM RFC4716 (clé ssh2)== | ||
+ | ssh-keygen -e -f ~/.ssh/id_rsa.pub | ||
+ | (affiche sur stdout) | ||
+ | == Converture une clé SSH2 (RFC4716) en clé OpenSSH == | ||
+ | ssh-keygen -i -f ~/.ssh/id_rsa_ssh2.pub > ~/.ssh/id_rsa.pub | ||
= Debug = | = Debug = | ||
Ligne 148 : | Ligne 164 : | ||
openssl verify -CAfile CAroot.crt -untrusted CAchain.crt ourdomain.com.crt | openssl verify -CAfile CAroot.crt -untrusted CAchain.crt ourdomain.com.crt | ||
− | openssl verify -CAfile CAchain.pem | + | openssl verify -CAfile CAchain.pem ourdomain.com.crt |
= Commandes générales IIS = | = Commandes générales IIS = |
Version actuelle datée du 10 juillet 2023 à 12:56
Sommaire
- 1 Commandes générales OpenSSL
- 1.1 Uné clé privée
- 1.2 Paramètres DH
- 1.3 Générer votre CSR (basé sur OpenSSL)
- 1.4 SAN
- 1.5 Créer un certificat autosigné et une clé
- 1.6 Créer un certificat autosigné avec une clé privée existante
- 1.7 Supprimer une passphrase d'une clée privée
- 1.8 Autorité de Certification CA
- 1.9 Intégrer une CA sur une Debian
- 2 Vérifications avec OpenSSL
- 3 Conversions OpenSSL
- 3.1 Convert a DER file (.crt .cer .der) to PEM
- 3.2 Convert a PEM file to DER
- 3.3 Convert a PKCS#7 (.p7b) into a PEM x509 encoded file
- 3.4 Convert a PKCS#12 file (.pfx .p12) containing a private key and certificates to PEM
- 3.5 Convert a PEM certificate file and a private key to PKCS#12 (.pfx .p12)
- 3.6 Convertir une clé openssh en format PEM RFC4716 (clé ssh2)
- 3.7 Converture une clé SSH2 (RFC4716) en clé OpenSSH
- 4 Debug
- 5 Commandes générales IIS
- 6 sources
Commandes générales OpenSSL
Uné clé privée
Génération d'une clé privée, avec 4096 bits, sans encodage particulier :
openssl genrsa -out monserveur.key 4096
Paramètres DH
De plus en plus nécessaire, des paramètres DH (Diffie Hellman)
openssl dhparam -out dhparam.pem 2048
Générer votre CSR (basé sur OpenSSL)
La clé RSA doit faire minimum 2048bits, mais 4096 est plus conseillé en ce moment
Pour générer votre couple Clé privée / CSR sous Apache/OpenSSL, vous devez utiliser la commande suivante :
openssl req -nodes -newkey rsa:4096 -sha256 -keyout monserveur.key -out serveur.csr
Le processus va créer 2 fichiers: un public en .csr et un privé en .key qu'il faudra absolument garder
Pour générer la CSR en utilisant une clé existante
openssl req -sha256 -out serveur.csr -key monserveur.key -new
Country Name (2 letter code) [AU]: FR State or Province Name (full name) [Some-State]: . Locality Name (eg, city) []: Paris Organization Name (eg, company) [Internet Widgits Pty Ltd]: MaSociété Organizational Unit Name (eg, section) []: IT Common Name (eg, YOUR name) []: sousdomaine.domaine.tld Email Address []: A challenge password []: An optional company name []:
Les champs optional company name
et challenge password
sont facultatifs.
Il est préférable de remplir le champ Email Address
.
sousdomaine.domaine.tld
indique l'adresse que vous voulez protéger.
Le contenu du fichier CSR généré vous sera alors demandé lors de la création de votre certificat.
Pour l'afficher et le communiquer à l'autorité de certification, il suffit ensuite de faire
cat serveur.csr
Générer la CSR basée sur un certif et une clé existante
openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key
Astuce : Dans le cas d'un certificat Wildcard, vous devrez entrer dans Common Name : *.votredomaine.tld
Attention : Un Wildcard protégera tout sous-domaine de second niveau, mais ne sera pas valide pour les sous-domaines de niveau supérieur. Le certificat SSL sera valide pour second.domaine.tld et tout autre sous-domaine que 'second'. Il ne sera pas valide pour troisieme.second.domaine.tld par contre.
SAN
SubjectAltName = plusieurs noms dans un seul certificat (multiadresses)
- Dans la section [ req ], activer
req_extensions = v3_req
- Ensuite, dans la section [ v3_req ] créer une ligne
subjectAltName = @alt_names
- Puis créer une section [ alt_names ] et y mettre les infos souhaitées :
[alt_names] DNS.1 = example.com DNS.2 = www.example.org DNS.3 = webmail.example.org
http://apetec.com/support/GenerateSAN-CSR.htm
Créer un certificat autosigné et une clé
openssl req -x509 -nodes -days 3650 -newkey rsa:4096 -sha256 -keyout privateKey.key -out certificate.crt
Créer un certificat autosigné avec une clé privée existante
openssl req -x509 -nodes -days 365 -sha256 -new -key /path/to/privateKey.key -out certificate.crt
Supprimer une passphrase d'une clée privée
openssl rsa -in privateKey.pem -out newPrivateKey.pem
Autorité de Certification CA
Créer une CA
- Créer l'arbo qui va bien :
mkdir -p CA/{newcerts,private}
- Créer les fichiers qui vont bien :
echo "01" > CA/serial echo "01" > CA/crlnumber touch CA/index.txt
- Créer une clé privée pour la CA (4096 bits, avec une passphrase)
openssl genrsa -des3 -out CA/private/cakey.pem 4096
genrsa : Directive pour générer des clés privées
3des : Chiffre la clé privée en 3DES
out : Enregistre la clé privée RSA dans le fichier passé en paramètre
4096 : Nombre de bits de la clé privée
2- Créer une Autorité de Certification racine "CA ROOT"
openssl req -new -sha256 -x509 -days 3560 -key CA/private/cakey.pem -out CA/cacert.pem
req : Directive de gestion des requêtes de certificats
new : Génère une nouvelle demande de certificat
x509 : Génère un certificat autosigné
days : Détermine la période de validité du certificat si l’option x509 est spécifiée
key : Utilise la clé contenue dans le fichier passé en paramètre
out : Enregistre dans le fichier passé en paramètre le résultat
Signer une CSR
openssl ca -in req.pem -out newcert.pem
Signer une CSR avec extention de la CA
openssl ca -in req.pem -extensions v3_ca -out newcert.pem
Révoquer un certiticat
openssl ca -revoke newcert.pem
Générer une liste de révocations
openssl ca -md sha256 -gencrl -out CA/ca-crl.pem -crldays 30
Intégrer une CA sur une Debian
Copier le certificat de la CA (ou le certificat auto-signé) au format PEM (avec extension .CRT) :
/usr/share/ca-certificates
Ajouter l'entrée dans le fichier
/etc/ca-certificates.conf
Exécuter la commande
dpkg-reconfigure ca-certificates
Accepter l'installation de nouveaux certificats et cocher ce qu'il faut.
Vérifications avec OpenSSL
Check a Certificate Signing Request (CSR)
openssl req -text -noout -verify -in CSR.csr
Check a private key
openssl rsa -in privateKey.key -check
Check a certificate
openssl x509 -in certificate.crt -text -noout
Check a PKCS#12 file (.pfx or .p12)
openssl pkcs12 -info -in keyStore.p12
Conversions OpenSSL
Convert a DER file (.crt .cer .der) to PEM
openssl x509 -inform der -in certificate.cer -out certificate.pem
Convert a PEM file to DER
openssl x509 -outform der -in certificate.pem -out certificate.der
Convert a PKCS#7 (.p7b) into a PEM x509 encoded file
openssl pkcs7 -print_certs -in certificate.p7b -out certificate.pem
Convert a PKCS#12 file (.pfx .p12) containing a private key and certificates to PEM
openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes
You can add -nocerts to only output the private key or add -nokeys to only output the certificates.
Convert a PEM certificate file and a private key to PKCS#12 (.pfx .p12)
openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
Convertir une clé openssh en format PEM RFC4716 (clé ssh2)
ssh-keygen -e -f ~/.ssh/id_rsa.pub
(affiche sur stdout)
Converture une clé SSH2 (RFC4716) en clé OpenSSH
ssh-keygen -i -f ~/.ssh/id_rsa_ssh2.pub > ~/.ssh/id_rsa.pub
Debug
Concordance key/pem CSR CER/CRT
Le hash MD5 des modulo des clés, certificats, et CSR doivent concorder
openssl x509 -noout -modulus -in certificate.crt | openssl md5 openssl rsa -noout -modulus -in privateKey.key | openssl md5 openssl req -noout -modulus -in CSR.csr | openssl md5
Validation de la chaine CERT / CA / CHAIN
openssl verify -CAfile CAroot.crt -untrusted CAchain.crt ourdomain.com.crt
openssl verify -CAfile CAchain.pem ourdomain.com.crt
Commandes générales IIS
Générer votre CSR sous IIS
Dans panneau de configuration
, outils d'administration
, sélectionnez le gestionnaire IIS. Faites un clic droit sur le site concerné, sélectionnez Propriétés
. Dans l'onglet Sécurité de répertoire
(Directory Security), cliquez sur Certificat de serveurs
(Server certificate), choisissez Créer un certificat
(Create a new certificate) et Préparer la demande, mais ne pas l'envoyer maintenant
(Prepare the request now but send it later).
Le formulaire de création vous est maintenant proposé avec les mêmes champs qu'avec OpenSSL. Indiquez le fichier où stocker votre CSR en fin de processus. Il faudra alors copier-coller son contenu lors de l'activation du certificat dans l'interface de l'autorité de certification.
sources
http://www.batard.eu/2010/11/maitriser-les-certificats-avec-openssl/ https://weakdh.org/sysadmin.html