141 lines
4.8 KiB
Markdown
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. |