Gestionnaire de Certificats Auto-Hébergé

Gestionnaire de Certificats Auto-Hébergé

🔗 Sources

🤖 À propos de Step-CA

Step-CA est un ensemble d’outils astucieux développé par Smallstep, une entreprise spécialisée dans la gestion sécurisée des identités et l’automatisation des certificats. 🚀
Sa mission ? Simplifier la mise en place et la gestion de vos propres autorités de certification (AC) avec facilité et sécurité !

Principales fonctionnalités

  1. Gestion des Autorités de Certification 🔑
    Configurez et gérez facilement vos propres AC. Créez des AC racines et intermédiaires, délivrez des certificats et gérez les révocations comme un pro.

  2. Gestion Sécurisée des Clés 🛡️
    Respecte les bonnes pratiques pour le stockage et la gestion sécurisés des clés, garantissant que vos clés cryptographiques restent protégées contre les accès non autorisés.

  3. Automatisation et Scalabilité ⚙️
    Idéal pour les déploiements de petite à grande envergure. Profitez des API et intégrations qui automatisent la délivrance, le renouvellement et la révocation des certificats pour un cycle de vie sans accrocs.

  4. Sécurité Renforcée 🔒
    Grâce à l’utilisation d’algorithmes et de protocoles cryptographiques modernes, Step-CA prend en charge les certificats X.509 conformes aux normes de l’industrie, offrant un chiffrement robuste et des signatures numériques.

  5. Intégration avec l’Infrastructure 🌐
    S’intègre parfaitement avec vos outils et systèmes existants. Prend en charge diverses méthodes d’authentification telles que nom d’utilisateur/mot de passe, MFA et fournisseurs d’identité externes.

  6. Auditabilité et Conformité 📜
    Avec des capacités complètes de journalisation et d’audit, vous pouvez suivre les activités des certificats et satisfaire aux exigences de conformité en toute simplicité.

  7. API Conviviales pour les Développeurs 👩‍💻👨‍💻
    Des API et SDK conçus pour les développeurs facilitent l’intégration de la gestion des certificats dans vos applications et flux de travail personnalisés.

En résumé : Step-CA de Smallstep est conçu pour rendre la gestion des autorités de certification à la fois ludique et sans tracas. Grâce à ses fonctionnalités sécurisées, scalables et conviviales, vous pouvez gérer facilement le cycle de vie de vos certificats tout en protégeant votre infrastructure !

🚀 Installation

🔧 Installation Binaire

1. Step CLI

wget https://dl.step.sm/gh-release/cli/docs-cli-install/v0.24.3/step-cli_0.24.3_amd64.deb
sudo dpkg -i step-cli_0.24.3_amd64.deb

2. Step-CA

wget https://dl.step.sm/gh-release/certificates/docs-ca-install/v0.24.1/step-ca_0.24.1_amd64.deb
sudo dpkg -i step-ca_0.24.1_amd64.deb

3. Création d’un Utilisateur Spécifique

adduser adminCA

Configuration

$ step ca init --password-file=password.txt
✔ Type de déploiement : Autonome
Quel nom souhaitez-vous donner à votre nouvelle PKI ?
(ex. Smallstep) : Lab
(ex. ca.example.com[,10.1.2.3,etc.]) : ca.lab.loc, localhost, 192.168.1.101
À quelle IP et sur quel port votre nouvelle AC sera-t-elle liée ? (:443 se lie à 0.0.0.0:443). 1.101
(ex. :443 ou 127.0.0.1:443) : :443
Quel nom souhaitez-vous donner au premier provisionneur de l'AC ?
✔ (ex. vous@smallstep.com) : contact@lab.loc
Choisissez un mot de passe pour vos clés AC et le premier provisionneur.
✔ [laissez vide et nous en générerons un] : 

Génération du certificat racine... fait ! 🎉  
Génération du certificat intermédiaire... fait ! 🎊

✔ Certificat racine : /home/adminCA/.step/certs/root_ca.crt  
✔ Clé privée racine : /home/adminCA/.step/secrets/root_ca_key  
✔ Empreinte du certificat racine : 7d754397c6897aa87d21e33c64daad7be087dc6fe18bf04627848ae1c8e26a4f  
✔ Certificat intermédiaire : /home/adminCA/.step/certs/intermediate_ca.crt  
✔ Clé privée intermédiaire : /home/adminCA/.step/secrets/intermediate_ca_key  
✔ Dossier de la base de données : /home/adminCA/.step/db  
✔ Configuration par défaut : /home/adminCA/.step/config/defaults.json  
✔ Configuration de l'Autorité de Certification : /home/adminCA/.step/config/ca.json  

Votre PKI est prête ! Pour générer des certificats pour des services individuels, consultez `step help ca`.

💌 **RETROACTION**  
L'utilitaire step n'est pas instrumenté pour les statistiques d'utilisation. Il ne contacte pas un serveur central. Toutefois, vos retours sont très précieux ! N'hésitez pas à nous écrire à feedback@smallstep.com, rejoindre les Discussions GitHub ou nous rejoindre sur Discord à [https://u.step.sm/discord](https://u.step.sm/discord).

Démarrer Step-CA :

step-ca .step/config/ca.json

Activer ACME

$ step ca provisioner add acme --type ACME
✔ Configuration de l'AC : /home/adminCA/.step/config/ca.json

Succès ! La configuration de votre `step-ca` a été mise à jour. Pour prendre en compte la nouvelle configuration, envoyez un SIGHUP (kill -1 <pid>) ou redémarrez le processus step-ca. 🎉

Exécuter Step-CA en tant que Service systemd

Créez un fichier :

vim /etc/systemd/system/step-ca.service

Copiez-collez ce qui suit :

[Unit]
Description=step-ca
After=syslog.target network.target

[Service]
User=adminCA
Group=adminCA
ExecStart=/bin/sh -c '/bin/step-ca /home/adminCA/.step/config/ca.json --password-file=/home/step/.step/pwd >> /var/log/step-ca/output.log 2>&1'
Type=simple
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

Créez le répertoire de logs :

mkdir -p /var/log/step-ca
chown -R adminCA:adminCA /var/log/step-ca

Rechargez le démon systemd :

systemctl daemon-reload
systemctl start step-ca.service

🐳 Installation avec Docker

docker run -it -v step:/home/step \
    -p 9000:9000 \
    -e "DOCKER_STEPCA_INIT_NAME=Lab" \
    -e "DOCKER_STEPCA_INIT_DNS_NAMES=caserver.lab.loc,localhost,192.168.1.101" \
    -e "DOCKER_STEPCA_INIT_REMOTE_MANAGEMENT=true" \
    -e "DOCKER_STEPCA_INIT_ACME=true" \
    smallstep/step-ca

🔑 Accès à l’AC avec un Autre Client

Adaptez le port en fonction de votre installation :

  • Binaire : port 443
  • Docker : port 9000

Installez le Step CLI :

wget https://dl.step.sm/gh-release/cli/docs-cli-install/v0.24.3/step-cli_0.24.3_amd64.deb
sudo dpkg -i step-cli_0.24.3_amd64.deb

Initialisez votre AC :

step ca bootstrap --ca-url https://caserver.lab.loc:$PORT/ --fingerprint 685059c30eb305db5272a7a199a2b5823624d55c732121ac65c06b0915d3c887

Pour obtenir l’empreinte, exécutez simplement :

step certificate fingerprint $(step path)/certs/root_ca.crt

Pour Docker, consultez les logs du conteneur.

Exemple de sortie :

admin@User:~$ step ca bootstrap --ca-url https://caserver.lab.loc:$PORT --fingerprint 685059c30eb305db5272a7a199a2b5823624d55c732121ac65c06b0915d3c887
Le certificat racine a été enregistré dans /home/admin/.step/certs/root_ca.crt.
La configuration de l'autorité a été enregistrée dans /home/admin/.step/config/defaults.json.

Installez le certificat :

step certificate install $(step path)/certs/root_ca.crt

Installation sur Debian :

  • Copiez les fichiers CRT individuels (format PEM) dans /usr/local/share/ca-certificates/
  • Les fichiers doivent appartenir à root:root avec les droits 644
  • Assurez-vous que le paquet ca-certificates est installé (sinon, installez-le)
  • Ensuite, exécutez en tant que root :
# /usr/sbin/update-ca-certificates

Tous les certificats seront consolidés dans : /etc/ssl/certs/ca-certificates.crt


📝 Obtenir un Certificat

admin@User:~$ step ca certificate nas.lab.loc srv.crt srv.key
✔ Provisionneur : contact@lab.loc (JWK) [kid: chyGkrZqp-BGSHUZ8v3jsPipegt2JLcC7y6RPq4OOkU]
Veuillez entrer le mot de passe pour déchiffrer la clé du provisionneur :
✔ AC : https://caserver.lab.loc:443
✔ Certificat : srv.crt
✔ Clé Privée : srv.key

Pour effectuer un test de santé :

curl https://caserver.lab.loc:443/health -k

Il pourrait être nécessaire de personnaliser le fichier ca.json pour augmenter la durée minimale de validité des certificats. Voici la structure du répertoire :

.
|-- certs
|   |-- intermediate_ca.crt
|   `-- root_ca.crt
|-- config
|   |-- ca.json
|   `-- defaults.json
|-- db
|   |-- 000000.vlog
|   |-- 000020.sst
|   |-- KEYREGISTRY
|   |-- LOCK
|   `-- MANIFEST
|-- secrets
|   |-- intermediate_ca_key
|   |-- password
|   `-- root_ca_key
`-- templates

Exemple de fichier ca.json :

{
    "root": "/home/step/certs/root_ca.crt",
    "federatedRoots": null,
    "crt": "/home/step/certs/intermediate_ca.crt",
    "key": "/home/step/secrets/intermediate_ca_key",
    "address": ":9000",
    "insecureAddress": "",
    "dnsNames": [
        "caserver.lab.loc",
        "caserver",
        "localhost",
        "192.168.1.200"
    ],
    "logger": {
        "format": "text"
    },
    "db": {
        "type": "badgerv2",
        "dataSource": "/home/step/db",
        "badgerFileLoadingMode": ""
    },
    "authority": {
        "enableAdmin": true,
        "claims": {
            "maxTLSCertDuration": "4380h"
        }
    },
    "tls": {
        "cipherSuites": [
            "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256",
            "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"
        ],
        "minVersion": 1.2,
        "maxVersion": 1.3,
        "renegotiation": false
    }
}