Table des matières
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