Outils pour utilisateurs

Outils du site


securite:openssl:toc

OpenSSL

OpenSSL est une boîte à outils de chiffrement comportant deux bibliothèques et une interface en ligne de commande1).

Générer un certificat auto-signé

Ce genre de certificat doit être seulement utilisé pour le développement ou pour des tests, jamais pour des environnements de production.

Voir si OpenSSL est installé:

$ which openssl
/usr/bin/openssl

Créer le certificat:

$ openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365

Pour localhost sur Mac

cd; mkdir .ssl

openssl req -newkey rsa:2048 -x509 -nodes -keyout .ssl/localhost.key -new -out .ssl/localhost.crt -subj /CN=localhost -reqexts SAN -extensions SAN -config <(cat /System/Library/OpenSSL/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:localhost')) -sha256 -days 3650

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain .ssl/localhost.crt

Installer et démarrer un serveur:

npm install http-server -g
http-server --ssl --cert ~/.ssl/localhost.crt --key ~/.ssl/localhost.key -a localhost -o

Source : https://localhost

Enlever un passphrase d'une clé

$ openssl rsa -in key.pem -out newkey.pem && mv newkey.pem key.pem

Générer un fichier PFX

Si on suppose avoir créé un certificat auto-signé, comme ci-haut, on peut générer un fichier PFX avec cette commande :

$ openssl pkcs12 -export -out certificate.pfx -inkey key.pem -in cert.pem

Mettre à jour OpenSSL sur Ubuntu

OpenSSL est peut-être à une vieille version sur Ubuntu (1.0.1f sur 14.04 et 1.0.2g sur 16.04). La méthode apt-get upgrade openssl ne fonctionne pas, on aura 0 paquet de mis à jour.

Sur le site https://openssl.org voir quel paquetage tar est présent. Au moment d'écrire ces lignes il s'agissait de https://www.openssl.org/source/openssl-1.0.2l.tar.gz. Modifier l'URL en conséquence selon la version courante d'OpenSSL.

$ curl https://www.openssl.org/source/openssl-1.0.2l.tar.gz | tar xz
$ cd openssl-1.0.2l
$ sudo ./config
$ sudo make
$ sudo make install

Remplacer l'ancien exécutable d'OpenSSL par le nouveau avec un lien symbolique:

$ sudo ln -sf /usr/local/ssl/bin/openssl `which openssl`

Source : apt-get upgrade openssl won't bring Ubuntu 12.04 to latest version

Générer un CSR

Ces instructions sont pour générer un CSR pour un certificat SSL wildcard, par exemple *.mydomain.com.

Il faut d'abord générer une clé .key (ou .pem) :

openssl genrsa –des3 –out mydomain.com.key 2048

Ensuite, il faut générer le fichier CSR. Dans Common name, il faut mettre une étoile (*) pour le sous-domaine du domaine, exemple *.mydomain.com.

openssl req –new –key mydomain.com.key –out mydomain.com.csr

Voir le randomart du host

Sur le client, faire:

$ nano ~/.ssh/config

Entrer la ligne suivante:

VisualHostKey=yes

On peut aussi utiliser l'option dans ssh :

$ ssh user@host -o VisualHostKey=yes

Mettre à jour les certificats d'autorité sur Ubuntu 14.04

Si les certificats d'autorité (CA) ne sont pas disponibles sur le système, dans ces endroits:

  • /etc/ssl/certs
  • /usr/share/ca-certificates/mozilla

on peut les installer en faisant:

$ update-ca-certificates

Si la commande n'est pas disponible, installer le package ca-certificates:

$ sudo apt-get install ca-certificates

Créer un certificat signé par un CA

Cette opération a été utilisée avec Vault.

Générer le certificat racine:

$ openssl req -newkey rsa:2048 -days 3650 -x509 -nodes -out root.crt

Générer la requête de certificat (CSR) et la clé privée:

$ openssl req -newkey rsa:2048 -nodes -out vault.csr -keyout vault.key 

Créer des fichiers qui seront utilisés pour la génération du certificat:

$ echo 000a > serialfile
$ touch certindex

Créer un fichier vault-ca.conf avec le code suivant et en adaptant les chemins pour les fichiers root.crt, certindex, privkey.key et serialfile.

[ ca ]
default_ca = myca

[ myca ]
new_certs_dir = /tmp
unique_subject = no
certificate = /path/to/root.crt
database = /path/to/certindex
private_key = /path/to/privkey.key
serial = /path/to/serialfile
default_days = 365
default_md = sha256
policy = myca_policy
x509_extensions = myca_extensions
copy_extensions = copy

[ myca_policy ]
commonName = supplied
stateOrProvinceName = supplied
countryName = supplied
emailAddress = optional
organizationName = supplied
organizationalUnitName = optional

[ myca_extensions ]
basicConstraints = CA:false
subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
subjectAltName = IP:127.0.0.1
keyUsage = digitalSignature,keyEncipherment
extendedKeyUsage = serverAuth

Générer le certificat :

$ openssl ca -batch -config vault-ca.conf -notext -in vault.csr -out vault.crt

Copier le certificat racine root.crt dans le répertoire /usr/local/share/ca-certificates et faire une mise à jour des CA:

$ sudo update-ca-certificates
securite/openssl/toc.txt · Dernière modification: 2018/01/05 19:12 par sgariepy