Certificats SSL

De Sn4kY
Révision datée du 27 mars 2020 à 14:51 par Sn4kY (discussion | contributions) (SAN)
Aller à : navigation, rechercher

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) http://apetec.com/support/GenerateSAN-CSR.htm 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

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#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

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 report_iam_randstad_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