Files
s-informer-sur-la-tech-www/articles/2026/Créer sa propre Autorité de Certification (CA) avec OpenSSL.md

141 lines
4.8 KiB
Markdown

---
title: "Guide Complet : Créer sa propre Autorité de Certification (CA) avec OpenSSL"
description:
tags: [openssl, certification, ac, san]
date: 2026-02-28 00:29
lastmod: 2026-02-28 00:36
type:
- article
category:
- "[[Guide]]"
status: brouillon
---
# Guide Complet : Créer sa propre Autorité de Certification (CA) avec OpenSSL
Dans un environnement de test, un laboratoire local ou un intranet, l'utilisation de certificats SSL "auto-signés" classiques pose souvent problème : les navigateurs affichent des alertes de sécurité rouges et bloquent l'accès.
La solution professionnelle consiste à **devenir votre propre Autorité de Certification**. En créant une "Racine de confiance" et en l'installant sur vos appareils, tous les certificats que vous générerez ensuite seront instantanément reconnus comme valides et sécurisés.
## 1. Création de l'Autorité de Certification (La Racine)
C'est votre "passeport maître". Une fois généré, vous devrez installer le fichier `ma-ca.crt` dans les "Autorités de certification racines de confiance" de vos ordinateurs ou navigateurs.
### Générer la clé privée de l'AC
Cette clé est le cœur de votre sécurité. Gardez-la précieusement et ne la partagez jamais.
```bash
openssl genrsa -out ma-ca.key 4096
```
### Générer le certificat de l'AC (Self-Signed)
Ce certificat est valable 10 ans. C'est lui que vous distribuerez à vos clients (PC, serveurs, mobiles).
```
openssl req -x509 -new -nodes -key ma-ca.key -sha256 -days 3650 -out ma-ca.crt \
-subj "/C=FR/ST=Paris/L=Paris/O=MonLabo/CN=Mon AC Locale"
```
---
## 2. Configuration SAN (Subject Alternative Name)
Depuis quelques années, les navigateurs modernes (Chrome, Firefox, Edge) rejettent les certificats qui n'utilisent que le simple "Common Name" (CN). Il est désormais impératif d'utiliser une extension **SAN** pour lister vos domaines explicitement.
Créez un fichier nommé `domaines.ext` et collez-y la configuration suivante :
```toml
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = acegrp.lan
DNS.2 = *.acegrp.lan
DNS.3 = abonnel.fr
DNS.4 = a5l.fr
DNS.5 = localhost
```
---
## 3. Génération du Certificat pour vos domaines
Nous allons maintenant créer un certificat serveur signé par votre propre AC.
### Étape A : Créer la clé privée du serveur
```bash
openssl genrsa -out monserveur.key 2048
```
### Étape B : Créer la demande de signature (CSR)
Le CSR est une requête officielle contenant vos informations d'identité.
```bash
openssl req -new -key monserveur.key -out monserveur.csr \
-subj "/C=FR/ST=Paris/L=Paris/O=MonLabo/CN=acegrp.lan"
```
### Étape C : Signer le certificat avec votre AC
C'est ici que la magie opère : vous utilisez votre clé racine pour valider le certificat du serveur.
```bash
openssl x509 -req -in monserveur.csr -CA ma-ca.crt -CAkey ma-ca.key \
-CAcreateserial -out monserveur.crt -days 825 -sha256 -extfile domaines.ext
```
> **Note de sécurité :** Nous limitons la validité à **825 jours** (environ 2 ans). Les navigateurs récents refusent les certificats serveurs ayant une durée de vie trop longue pour des raisons de sécurité.
---
## 4. Récapitulatif des fichiers obtenus
|**Fichier**|**Rôle**|**Action requise**|
|---|---|---|
|**ma-ca.crt**|Certificat Racine|**À importer** sur vos PC/Mobiles (Root Store).|
|**monserveur.crt**|Certificat Serveur|**À installer** sur Nginx, Apache ou IIS.|
|**monserveur.key**|Clé privée Serveur|**À installer** sur le serveur (Garder secret !).|
---
## 5. Mise en place pratique (Exemple Nginx)
Pour que vos sites soient reconnus sans erreur, configurez votre bloc `server` ainsi :
```nginx
server {
listen 443 ssl;
server_name acegrp.lan abonnel.fr a5l.fr;
ssl_certificate /etc/nginx/ssl/monserveur.crt;
ssl_certificate_key /etc/nginx/ssl/monserveur.key;
# Paramètres de sécurité recommandés
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
}
```
---
## Astuces de déploiement "Pro"
- **Sur Windows (Parc informatique) :** Utilisez une **GPO** (Stratégie de groupe) pour déployer `ma-ca.crt` automatiquement dans le magasin "Autorités de certification racines de confiance" de tous les postes du domaine.
- **Sur Linux (Ubuntu/Debian) :** Pour que votre système fasse confiance à votre AC en ligne de commande (ex: pour `curl`), copiez le fichier dans `/usr/local/share/ca-certificates/` et lancez la commande :
`sudo update-ca-certificates`
- **Sur Android/iOS :** Envoyez-vous le fichier `.crt` par email et ouvrez-le pour l'installer dans les réglages de confiance du profil.
---
à suivre : **script Bash** pour automatiser entièrement la génération et le renouvellement de ces certificats.