Créer, gérer et convertir des certificats SSL avec OpenSSL
L’une des commandes SSL les plus populaires pour créer, convertir et gérer les certificats SSL est OpenSSL.
Il y aura de nombreuses situations dans lesquelles vous devrez gérer OpenSSL de différentes manières, et je les ai répertoriées ici pour vous sous forme de feuille de triche pratique.
Dans cet article, je parlerai des commandes OpenSSL fréquemment utilisées pour vous aider dans le monde réel.
Certaines des abréviations liées aux certificats.
- SSL – couche de socket sécurisée
- CSR – Demande de signature de certificat
- TLS – Sécurité de la couche de transport
- PEM – Courrier amélioré de confidentialité
- DER – Règles de codage distinctes
- SHA – Algorithme de hachage sécurisé
- PKCS – Normes de cryptographie à clé publique
Noter: Cours d’exploitation SSL/TLS serait utile si vous n’êtes pas familier avec les termes.
Table des matières
Créer une nouvelle demande de clé privée et de signature de certificat
openssl req -out toptips.fr.csr -newkey rsa:2048 -nodes -keyout toptips.fr.key
La commande ci-dessus générera CSR et un fichier de clé RSA 2048 bits. Si vous avez l’intention d’utiliser ce certificat dans Apache ou Nginx, vous devez envoyer ce fichier CSR à l’autorité émettrice du certificat, et ils vous donneront un certificat signé principalement au format der ou pem que vous devez configurer dans le serveur Web Apache ou Nginx. .
Créer un certificat auto-signé
openssl req -x509 -sha256 -nodes -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
La commande ci-dessus générera un certificat auto-signé et un fichier de clé avec RSA 2048 bits. J’ai également inclus sha256 car il est considéré comme le plus sécurisé pour le moment.
Astuce : par défaut, il générera un certificat auto-signé valide pour un mois seulement, vous pouvez donc envisager de définir le paramètre –days pour prolonger la validité.
Ex : avoir auto-signé valable deux ans.
openssl req -x509 -sha256 -nodes -days 730 -newkey rsa:2048 -keyout gfselfsigned.key -out gfcert.pem
Vérifier le fichier CSR
openssl req -noout -text -in toptips.fr.csr
La vérification est essentielle pour vous assurer que vous envoyez le CSR à l’autorité émettrice avec les détails requis.
Créer une clé privée RSA
openssl genrsa -out private.key 2048
Si vous avez juste besoin de générer une clé privée RSA, vous pouvez utiliser la commande ci-dessus. J’ai inclus 2048 pour un cryptage plus fort.
Supprimer la phrase de passe de la clé
openssl rsa -in certkey.key -out nopassphrase.key
Si vous utilisez une phrase secrète dans le fichier de clé et que vous utilisez Apache, vous devez saisir le mot de passe à chaque démarrage. Si vous êtes ennuyé par la saisie d’un mot de passe, vous pouvez utiliser la commande openssl rsa -in toptips.fr.key -check ci-dessus pour supprimer la clé de phrase secrète d’une clé existante.
Vérifier la clé privée
openssl rsa -in certkey.key –check
Si vous doutez de votre fichier clé, vous pouvez utiliser la commande ci-dessus pour vérifier.
Vérifier le fichier de certificat
openssl x509 -in certfile.pem -text –noout
Si vous souhaitez valider des données de certificat telles que CN, OU, etc., vous pouvez utiliser une commande ci-dessus qui vous donnera les détails du certificat.
Vérifier l’autorité de signature du certificat
openssl x509 -in certfile.pem -noout -issuer -issuer_hash
L’autorité émettrice du certificat signe chaque certificat et au cas où vous auriez besoin de les vérifier.
Vérifier la valeur de hachage d’un certificat
openssl x509 -noout -hash -in bestflare.pem
Convertir le format DER en PEM
openssl x509 –inform der –in sslcert.der –out sslcert.pem
Habituellement, l’autorité de certification vous donnera un certificat SSL au format .der, et si vous avez besoin de les utiliser au format apache ou .pem, la commande ci-dessus vous aidera.
Convertir PEM au format DER
openssl x509 –outform der –in sslcert.pem –out sslcert.der
Au cas où vous auriez besoin de changer le format .pem en .der
Convertir le certificat et la clé privée au format PKCS#12
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem
Si vous avez besoin d’utiliser un certificat avec l’application Java ou avec tout autre qui n’accepte que le format PKCS # 12, vous pouvez utiliser la commande ci-dessus, qui générera un seul pfx contenant le certificat et le fichier de clé.
Conseil : vous pouvez également inclure un certificat de chaîne en transmettant –chain comme ci-dessous.
openssl pkcs12 –export –out sslcert.pfx –inkey key.pem –in sslcert.pem -chain cacert.pem
Créer un CSR à l’aide d’une clé privée existante
openssl req –out certificate.csr –key existing.key –new
Si vous ne souhaitez pas créer une nouvelle clé privée au lieu d’en utiliser une existante, vous pouvez utiliser la commande ci-dessus.
Vérifier le contenu du certificat de format PKCS12
openssl pkcs12 –info –nodes –in cert.p12
PKCS12 est un format binaire, vous ne pourrez donc pas afficher le contenu dans le bloc-notes ou un autre éditeur. La commande ci-dessus vous aidera à voir le contenu du fichier PKCS12.
Convertir le format PKCS12 en certificat PEM
openssl pkcs12 –in cert.p12 –out cert.pem
Si vous souhaitez utiliser le format pkcs12 existant avec Apache ou simplement au format pem, cela vous sera utile.
Tester le certificat SSL d’une URL particulière
openssl s_client -connect yoururl.com:443 –showcerts
Je l’utilise assez souvent pour valider le certificat SSL d’une URL particulière à partir du serveur. Ceci est très pratique pour valider les détails du protocole, du chiffrement et du certificat.
Découvrez la version d’OpenSSL
openssl version
Si vous êtes responsable de la sécurité d’OpenSSL, l’une des premières choses à faire est probablement de vérifier la version.
Vérifier la date d’expiration du certificat de fichier PEM
openssl x509 -noout -in certificate.pem -dates
Utile si vous envisagez de mettre un suivi pour vérifier la validité. Il vous montrera une date dans la syntaxe notBefore et notAfter. notAfter est celui que vous devrez vérifier pour confirmer si un certificat est expiré ou toujours valide.
Ex:
[[email protected] opt]# openssl x509 -noout -in bestflare.pem -dates notBefore=Jul 4 14:02:45 2015 GMT notAfter=Aug 4 09:46:42 2015 GMT [[email protected] opt]#
Vérifier la date d’expiration du certificat de l’URL SSL
openssl s_client -connect secureurl.com:443 2>/dev/null | openssl x509 -noout –enddate
Un autre utile si vous envisagez de surveiller à distance la date d’expiration du certificat SSL ou une URL particulière.
Ex:
[[email protected] opt]# openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -enddate notAfter=Dec 8 00:00:00 2015 GMT
Vérifiez si SSL V2 ou V3 est accepté sur l’URL
Pour vérifier SSL V2
openssl s_client -connect secureurl.com:443 -ssl2
Pour vérifier SSL V3
openssl s_client -connect secureurl.com:443 –ssl3
Pour vérifier TLS 1.0
openssl s_client -connect secureurl.com:443 –tls1
Pour vérifier TLS 1.1
openssl s_client -connect secureurl.com:443 –tls1_1
Pour vérifier TLS 1.2
openssl s_client -connect secureurl.com:443 –tls1_2
Si vous sécurisez un serveur Web et que vous devez valider si SSL V2/V3 est activé ou non, vous pouvez utiliser la commande ci-dessus. S’il est activé, vous obtiendrez « CONNECTÉ » sinon « échec de la poignée de main ».
Vérifiez si le chiffrement particulier est accepté sur l’URL
openssl s_client -cipher 'ECDHE-ECDSA-AES256-SHA' -connect secureurl:443
Si vous travaillez sur des résultats de sécurité et que les résultats des tests de pénétration montrent que certains des chiffrements faibles sont acceptés, vous pouvez utiliser la commande ci-dessus pour valider.
Bien sûr, vous devrez modifier le chiffrement et l’URL par rapport auxquels vous souhaitez tester. Si le chiffrement mentionné est accepté, vous obtiendrez « CONNECTÉ » sinon « échec de la poignée de main ».
J’espère que les commandes ci-dessus vous aideront à en savoir plus sur OpenSSL pour gérer les certificats SSL pour votre site Web.