diff --git a/articles/2026/Créer sa propre Autorité de Certification (CA) avec OpenSSL.md b/articles/2026/Créer sa propre Autorité de Certification (CA) avec OpenSSL.md new file mode 100644 index 0000000..7747e63 --- /dev/null +++ b/articles/2026/Créer sa propre Autorité de Certification (CA) avec OpenSSL.md @@ -0,0 +1,141 @@ +--- +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. \ No newline at end of file