Files
Notebook/content/netlab/sécurité/stepca.fr.md
Damien 2d8830960b
All checks were successful
Build and Deploy Hugo / Deploy Hugo Website (pull_request) Successful in 24s
Update documentation for clarity and consistency
Remove emojis and em dash separators
Simplify introductory sentences
Standardize section headings
2026-07-19 15:09:56 +02:00

9.5 KiB

title, date, weight, cascade
title date weight cascade
Gestionnaire de Certificats Auto-Hébergé 2024-08-01T20:00:00+02:00 2
type
docs

Sources

À propos de Step-CA

Step-CA est un ensemble d'outils 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 est de simplifier la mise en place et la gestion de vos propres autorités de certification (AC).

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.

  2. Gestion sécurisée des clés : respecte les bonnes pratiques pour le stockage et la gestion des clés, afin que vos clés cryptographiques restent protégées contre les accès non autorisés.

  3. Automatisation et scalabilité : adapté aux déploiements de petite à grande envergure. Les API et intégrations automatisent la délivrance, le renouvellement et la révocation des certificats tout au long du cycle de vie.

  4. Cryptographie moderne : Step-CA prend en charge les certificats X.509 conformes aux normes de l'industrie, avec des algorithmes et protocoles cryptographiques modernes pour le chiffrement et les signatures numériques.

  5. Intégration avec l'infrastructure : s'intègre avec vos outils et systèmes existants, et 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é : la journalisation et l'audit complets permettent de suivre les activités des certificats et de répondre aux exigences de conformité.

  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.

Step-CA de Smallstep est conçu pour rendre la gestion des autorités de certification simple : vous gérez 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 dédié

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`.

**Retours :**
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

[!NOTE] 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

[!TIP] 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

[!TIP] 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

[!TIP] 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
    }
}