Ceci est une ancienne révision du document !
OpenSSL
Ajouter un certificat au système
sudo apt install libnss3-tools sudo cp homelab.crt /usr/local/share/ca-certificates/ sudo update-ca-certificates sudo chmod a+r /usr/local/share/ca-certificates/
Pour que le certificat soit aussi reconnu dans Firefox et Thunderbird, il faut exécuter le script suivant (source) :
sudo apt install libnss3-tools # pour certutil readonly certificateFile="/usr/local/share/ca-certificates/homelab.crt" readonly certificateName="Homelab" find ~/.mozilla* ~/.thunderbird -name "cert9.db" | while read -r certDB do certDir=$(dirname "${certDB}"); echo "install '${certificateName}' in ${certDir}" certutil -A -n "${certificateName}" -t "TCu,Cuw,Tuw" -i ${certificateFile} -d ${certDir} done
Générer un certificat auto-signé
Générer une clé privée RSA
openssl genrsa -out server.key 1024
Créer une CSR
CSR: Certificate Signing Request
openssl req -new -key server.key -out server.csr
Générer le certificat auto-signé
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt # ou openssl req -new -x509 -keyout server.pem -out server.pem -days 365 -nodes # génère un .pem
Générer un certificat signé par une autorité de certification
openssl x509 -req -in myserver.csr -out myserver.crt -CA superfish.pem -CAkey superfish.key -CAcreateserial -CAserial mysuperfish.srl
Lancer un serveur HTTPS
sudo openssl s_server -accept 443 -cert server.pem
-WWWsert les fichiers présents dans le dossier courant-key <private key>: permet de spécifier la clé privée-cert <certificate.crt>: permet de spécifier le certificat du serveur
Se connecter à un serveur HTTPS
openssl s_client -connect 192.168.12.1:443
Permet d'obtenir le certificat du serveur (entre les balises CERTIFICATE) et d'interagir ensuite avec le serveur (appuyer deux fois sur ENTREE !)
Connaître les dates d'un certificat
openssl x509 -noout -dates -in cert.pem
Gérer sa propre PKI
Avec Smallstep
sudo curl -fsSL https://packages.smallstep.com/keys/apt/repo-signing-key.gpg -o /etc/apt/trusted.gpg.d/smallstep.asc && \ echo 'deb [signed-by=/etc/apt/trusted.gpg.d/smallstep.asc] https://packages.smallstep.com/stable/debian debs main' \ | sudo tee /etc/apt/sources.list.d/smallstep.list sudo apt update sudo apt install step-ca step-cli step ca init sudo step-ca $(step path)/config/ca.json step ca provisioner add acme --type ACME --x509-default-dur=$((30*24))h sudo useradd --user-group --system --home /etc/step-ca --shell /bin/false step sudo setcap CAP_NET_BIND_SERVICE=+eip $(which step-ca) sudo mv $(step path) /etc/step-ca # put password in /etc/step-ca/password.txt sudo chmod 400 /etc/step-ca/password.txt # edit and adapt paths in /etc/step-ca/config/defaults.json # edit and adapt paths in /etc/step-ca/config/ca.json sudo chown -R step:step /etc/step-ca # create the service in /etc/systemd/system/step-ca.service sudo systemctl daemon-reload sudo systemctl status step-ca sudo systemctl enable --now step-ca sudo journalctl --follow --unit=step-ca