Imaginez que vous avez 10 ans et que vous voulez comprendre ce que sont les certificats et comment ils fonctionnent. Pensez aux certificats comme des cartes d'identité spéciales pour les ordinateurs et les sites web qui prouvent qu'ils sont bien ce qu'ils prétendent être !
Pensez à Internet comme un grand théâtre où tout le monde porte des masques. Comment savez-vous si quelqu'un est vraiment celui qu'il prétend être ?
Les certificats sont comme des badges d'identification spéciaux qui prouvent l'identité :
- 🎫 Votre billet = Votre ordinateur/téléphone
- 🏛️ La sécurité du théâtre = Autorité de Certification (CA)
- 🎭 Les acteurs sur scène = Sites web et serveurs
- 🆔 Badges d'identification officiels = Certificats numériques
Tout comme un agent de sécurité dans un théâtre vérifie les badges d'identité, votre ordinateur vérifie les certificats pour s'assurer que les sites web sont réels et sûrs !
Notre script est comme une usine de certificats qui crée différents types de badges d'identification pour notre système. Voyons ce qu'il produit !
# Le script vérifie d'abord s'il a les bons outils :
- OpenSSL (machine de fabrication de certificats)
- Java keytool (assistant de certificats Android)
- certificates.conf (livre de recettes avec tous les paramètres)Qu'est-ce qu'une CA ? Pensez-y comme le "Bureau des Badges d'Identification" en qui tout le monde a confiance (wms_ca.crt et wms_ca.key).
Fichiers Créés :
wms_ca.key(2048 bits) - La Clé Maîtresse 🗝️wms_ca.crt(3650 jours = 10 ans) - Le Badge d'Identification Maître 🆔
Ce qui se passe :
# Étape 2a : Crée une clé maîtresse super-secrète
openssl genrsa -aes256 -passout pass:wms_ca_password_2024 -out wms_ca.key 2048
# Crée : wms_ca.key (fichier de clé privée)
# Pourquoi : Nous avons besoin d'une clé secrète pour signer les certificats plus tard
# Étape 2b : Crée le certificat maître
openssl req -new -x509 -days 3650 -key wms_ca.key -out wms_ca.crt
# Nécessite : wms_ca.key (créé à l'étape 2a)
# Crée : wms_ca.crt (certificat public)
# Pourquoi nous avons besoin de wms_ca.key : Pour prouver que nous possédons ce certificat et pouvons en signer d'autresDétails Techniques :
- Taille de Clé : 2048 bits (sécurité très forte, comme une serrure super-compliquée)
- Algorithme : RSA avec chiffrement AES-256 (le type de serrure le plus fort)
- Validité : 10 ans (durée pendant laquelle le bureau des badges reste ouvert)
- Protégé par Mot de Passe : Oui (nécessite un mot de passe secret pour l'utiliser)
Qu'est-ce que c'est ? Le badge d'identification spécial pour notre site web (wms.crt) pour que les navigateurs lui fassent confiance.
Fichiers Créés :
wms.key(2048 bits) - Clé Privée du Site Web 🔐wms.csr- Formulaire de Demande de Certificat 📝wms.crt(365 jours = 1 an) - Badge d'Identification du Site Web 🌐wms.conf- Instructions Spéciales 📋
Ce qui se passe :
# Étape 3a : Crée la clé privée du site web
openssl genrsa -aes256 -passout pass:wms_server_password_2024 -out wms.key 2048
# Crée : wms.key (clé privée du serveur)
# Pourquoi : Le serveur a besoin de sa propre clé secrète, séparée de la CA
# Étape 3b : Crée une demande de badge d'identification
openssl req -new -key wms.key -out wms.csr -config wms.conf
# Nécessite : wms.key (créé à l'étape 3a) + wms.conf (fichier de configuration)
# Crée : wms.csr (demande de signature de certificat)
# Pourquoi nous avons besoin de wms.key : Pour prouver que nous contrôlons la clé privée du serveur
# Pourquoi nous avons besoin de wms.conf : Contient les détails du serveur et les extensions de sécurité
# Étape 3c : La CA tamponne la demande et crée le badge officiel
openssl x509 -req -in wms.csr -CA wms_ca.crt -CAkey wms_ca.key -out wms.crt
# Nécessite : wms.csr (de l'étape 3b) + wms_ca.crt (de l'étape 2) + wms_ca.key (de l'étape 2)
# Crée : wms.crt (certificat serveur signé)
# Pourquoi nous avons besoin de wms.csr : Contient la clé publique du serveur et les informations d'identité
# Pourquoi nous avons besoin de wms_ca.crt : Montre qui signe le certificat
# Pourquoi nous avons besoin de wms_ca.key : Prouve que nous sommes la CA légitime et pouvons signer des certificatsFonctionnalités Spéciales (Subject Alternative Names) :
- Peut fonctionner avec :
localhost,wms.local,*.wms.local - Peut fonctionner avec les IPs :
127.0.0.1,192.168.1.188,::1 - Pourquoi ? Pour que le même certificat fonctionne depuis différentes adresses !
Qu'est-ce que c'est ? Création de versions spéciales de notre certificat CA que Windows et Android peuvent accepter comme s'ils étaient de vraies Autorités de Certification comme VeriSign ou DigiCert !
La Transformation Magique :
Notre script prend le certificat CA principal (wms_ca.crt) et crée des versions spécifiques à chaque plateforme que chaque système d'exploitation reconnaît et en qui il a confiance.
Fichiers Créés pour Windows :
wms_ca.crt- Certificat CA X.509 Standard 🏛️
Ce qui le rend spécial pour Windows :
# Le certificat CA a ces attributs compatibles Windows :
Subject: /C=US/ST=NewYork/L=NewYork/O=WMSRootCA/OU=CertificateAuthority/CN=WMSRootCA
Basic Constraints: CA:TRUE (Critical)
Key Usage: Certificate Sign, CRL Sign
Validity: 10 ans (3650 jours)Comment Windows le reconnaît comme une vraie CA :
- Format X.509 standard - Windows comprend parfaitement cela
- Indicateur CA:TRUE - Dit à Windows "Je peux signer d'autres certificats"
- Usage Certificate Sign - Permission d'agir comme Autorité de Certification
- Installation dans le magasin racine - Quand installé dans "Autorités de certification racines de confiance"
La Magie Windows :
Quand vous installez wms_ca.crt dans le magasin racine de confiance Windows :
✅ Windows le traite exactement comme VeriSign, DigiCert, ou toute CA commerciale
✅ Tout certificat signé par cette CA est automatiquement de confiance
✅ Les navigateurs (Chrome, Edge, Firefox) lui font automatiquement confiance
✅ Toutes les applications Windows lui font automatiquement confiance
Fichiers Créés pour Android :
android_ca_system.pem- Certificat du magasin utilisateur Android 📱[hash].0(commea1b2c3d4.0) - Certificat du magasin système Android 🔒
Étape 4a : Création de android_ca_system.pem
# Simplement copier le certificat CA avec un nom compatible Android
copy "wms_ca.crt" android_ca_system.pem
# Nécessite : wms_ca.crt (de l'étape 2)
# Crée : android_ca_system.pem (copie identique avec un nom différent)
# Pourquoi nous avons besoin de wms_ca.crt : C'est notre certificat CA qu'Android doit faire confianceCe qui rend android_ca_system.pem spécial :
- Format PEM - Format texte préféré d'Android (
android_ca_system.pem) - Nom de fichier descriptif - Aide les utilisateurs à l'identifier pendant l'installation (
android_ca_system.pem) - Même contenu que wms_ca.crt - Juste renommé pour plus de clarté
Étape 4b : Création du certificat nommé par hash
# Obtenir le hash unique du certificat
for /f %%i in ('openssl x509 -noout -hash -in "wms_ca.crt"') do set CERT_HASH=%%i
# Nécessite : wms_ca.crt (de l'étape 2)
# Pourquoi : Le système Android doit calculer le hash pour créer le nom de fichier approprié
# Copier le certificat avec le nom de fichier hash (comme a1b2c3d4.0)
copy "wms_ca.crt" "%CERT_HASH%.0"
# Nécessite : wms_ca.crt (de l'étape 2) + CERT_HASH (calculé ci-dessus)
# Crée : [hash].0 (comme a1b2c3d4.0)
# Pourquoi nous avons besoin de wms_ca.crt : Même contenu de certificat, juste renommé pour le magasin système AndroidPourquoi ce nom de fichier hash bizarre ?
- Exigence du système Android - Les certificats système doivent être nommés par leur hash
- Identification unique - Le hash garantit qu'il n'y a pas de conflits de noms de fichiers
- Reconnaissance automatique - Android charge automatiquement tous les fichiers .0 dans le répertoire des certificats système
- Recherche rapide - Android peut rapidement trouver les certificats par hash
La Magie Android :
Installation dans le Magasin Utilisateur (android_ca_system.pem) :
Quand installé dans le magasin de certificats utilisateur Android :
✅ La plupart des applications lui feront confiance (si configurées pour faire confiance aux certificats utilisateur)
✅ Installation facile via les Paramètres
✅ L'utilisateur peut le supprimer à tout moment
❌ Certaines applications axées sur la sécurité ignorent les certificats utilisateur
### ⛓️ Création du Fichier de Chaîne de Certificats
**Fichiers Créés :**
- `wms_chain.crt` - **Chaîne de certificats complète** ⛓️
**Ce qui se passe :**
```bash
# Combiner certificat serveur + certificat CA
copy "wms.crt" + "wms_ca.crt" wms_chain.crt
# Nécessite : wms.crt (de l'étape 3) + wms_ca.crt (de l'étape 2)
# Crée : wms_chain.crt (chaîne de certificats combinée)
# Pourquoi nous avons besoin de wms.crt : Le certificat du serveur (fin de la chaîne)
# Pourquoi nous avons besoin de wms_ca.crt : Le certificat CA (racine de la chaîne)
# Pourquoi combiner : Les navigateurs ont besoin de la chaîne complète pour vérifier la confiance
Pourquoi c'est nécessaire :
- Chemin de confiance complet - Montre la chaîne complète du serveur à la racine de confiance (
wms_chain.crt) - Validation plus rapide - Les clients n'ont pas besoin de récupérer les certificats manquants (
wms_chain.crt) - Meilleure compatibilité - Certains clients nécessitent la chaîne complète (
wms_chain.crt) - Optimisation Apache - Le serveur web peut envoyer la chaîne complète immédiatement (
wms_chain.crt)
Regardons CHAQUE fichier que notre script de certificats crée et comprenons ce que chacun fait !
| Fichier | Taille | Objectif | Plateforme | Garder Secret ? |
|---|---|---|---|---|
wms_ca.key |
~1.7KB | Clé privée CA | Les deux | 🔴 TOP SECRET |
wms_ca.crt |
~1.3KB | Certificat CA | Les deux | 🟢 Partager librement |
wms.key |
~1.7KB | Clé privée serveur | Windows | 🔴 Garder secret |
wms.csr |
~1KB | Demande de certificat | Les deux | 🟡 Peut supprimer après |
wms.crt |
~1.3KB | Certificat serveur | Windows | 🟢 Partager librement |
wms.conf |
~500B | Config OpenSSL | Les deux | 🟡 Peut supprimer après |
android_ca_system.pem |
~1.3KB | CA utilisateur Android | Android | 🟢 Partager librement |
[hash].0 |
~1.3KB | CA système Android | Android | 🟢 Partager librement |
wms_chain.crt |
~2.6KB | Chaîne complète | Windows | 🟢 Partager librement |
Ce que c'est :
-----BEGIN ENCRYPTED PRIVATE KEY-----
MIIFJDBWBgkqhkiG9w0BBQ0wSTAxBgkqhkiG9w0BBQwwJAQQ...
...
-----END ENCRYPTED PRIVATE KEY-----
Détails Techniques :
- Format : Clé privée RSA encodée PEM, chiffrée AES-256
- Taille de Clé : 2048 bits (256 octets de matériel de clé)
- Chiffrement : AES-256-CBC avec dérivation de clé PBKDF2
- Mot de Passe :
wms_ca_password_2024(du fichier de configuration) - Objectif : Signe d'autres certificats pour les rendre de confiance
Pourquoi c'est TOP SECRET :
- Quiconque possède cette clé peut créer des certificats de confiance (
wms_ca.key) - Pourrait usurper n'importe quel site web s'il l'a (
wms_ca.key) - Comme avoir la clé maîtresse pour créer de fausses cartes d'identité (
wms_ca.key) - Stocker dans un coffre-fort, ne jamais partager, ne jamais perdre ! (
wms_ca.key)
Ce que c'est :
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJANQ8QgAf7N8pMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV...
...
-----END CERTIFICATE-----
Détails Techniques :
- Format : Certificat X.509 encodé PEM
- Validité : 10 ans (3650 jours)
- Numéro de Série : Identifiant unique généré aléatoirement
- Algorithme de Signature : SHA-256 avec RSA
- Clé Publique : Clé publique RSA 2048 bits (correspond à la clé privée)
Champs du Certificat :
Subject: C=US, ST=New York, L=New York, O=WMS Root CA, OU=Certificate Authority, CN=WMS Root CA
Issuer: C=US, ST=New York, L=New York, O=WMS Root CA, OU=Certificate Authority, CN=WMS Root CA
(Auto-signé : Subject = Issuer)
Extensions :
Basic Constraints: CA:TRUE (Critical)
Key Usage: Certificate Sign, CRL Sign
Subject Key Identifier: [hash unique]
Authority Key Identifier: [identique au Subject Key ID - auto-signé]
Pourquoi c'est partageable :
- Contient uniquement des informations publiques (
wms_ca.crt) - Montre la clé publique, pas la clé privée (
wms_ca.crt) - Comme montrer sa carte d'identité à quelqu'un - sûr à partager (
wms_ca.crt) - Les clients ont besoin de ceci pour vérifier les certificats que vous signez (
wms_ca.crt)
Ce que c'est :
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC8...
...
-----END PRIVATE KEY-----
Détails Techniques :
- Format : Clé privée RSA encodée PEM (non chiffrée après traitement du script)
- Taille de Clé : 2048 bits
- Initialement Chiffrée : Oui, mais phrase de passe supprimée pour Apache
- Objectif : Prouve que le serveur est bien ce qu'il prétend être
Le Processus de Suppression de la Phrase de Passe :
# Original : clé chiffrée avec mot de passe
openssl genrsa -aes256 -passout pass:wms_server_password_2024 -out wms.key 2048
# Crée : wms.key (chiffré avec mot de passe)
# Plus tard : supprimer le mot de passe pour Apache (les serveurs n'aiment pas taper des mots de passe)
openssl rsa -in wms.key -passin pass:wms_server_password_2024 -out wms.key.unencrypted
# Nécessite : wms.key (version chiffrée)
# Crée : wms.key.unencrypted (version sans mot de passe)
# Pourquoi nous avons besoin de la version chiffrée : Pour la déchiffrer et supprimer le mot de passePourquoi le garder secret :
- Quiconque possède ceci peut usurper votre serveur (
wms.key) - Comme quelqu'un qui vole la clé de votre maison (
wms.key) - Seul votre serveur web devrait y avoir accès (
wms.key)
Ce que c'est :
-----BEGIN CERTIFICATE REQUEST-----
MIICWjCCAUICAQAwFTETMBEGA1UEAwwKbXlkb21haW4uY29tMIIBIjANBgkqhkiG...
...
-----END CERTIFICATE REQUEST-----
Détails Techniques :
- Format : Demande de certificat PKCS#10 encodée PEM
- Contient : Clé publique + informations d'identité + extensions demandées
- Objectif : Demander à la CA "Veuillez me faire un certificat avec ces détails"
Ce qu'il y a à l'intérieur :
Subject: C=US, ST=New York, L=New York, O=WMS Organization, CN=wms.local
Public Key: [clé publique RSA 2048 bits]
Extensions Demandées :
- Subject Alternative Names: localhost, wms.local, *.wms.local, 127.0.0.1, etc.
- Key Usage: Digital Signature, Key Encipherment
- Extended Key Usage: Server Authentication
Peut supprimer après utilisation :
- Seulement nécessaire pendant la création du certificat
- Comme une candidature d'emploi - plus nécessaire une fois le poste obtenu
- Sûr à supprimer après la création de wms.crt
Ce que c'est :
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJANQ8QgAf7N8pMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV...
...
-----END CERTIFICATE-----
Détails Techniques :
- Format : Certificat X.509 encodé PEM
- Validité : 1 an (365 jours)
- Signé par : wms_ca.crt (notre CA)
- Objectif : Prouve l'identité du serveur wms.local
Champs du Certificat :
Subject: C=US, ST=New York, L=New York, O=WMS Organization, CN=wms.local
Issuer: C=US, ST=New York, L=New York, O=WMS Root CA, CN=WMS Root CA
(Signé par notre CA, pas auto-signé)
Extensions Critiques :
Subject Alternative Name:
DNS:localhost
DNS:wms.local
DNS:*.wms.local
IP:127.0.0.1
IP:192.168.1.188
IP:::1
Key Usage: Digital Signature, Key Encipherment
Extended Key Usage: Server Authentication
Pourquoi le SAN est crucial :
- Les navigateurs vérifient si le certificat correspond à l'URL que vous visitez
- Sans SAN approprié, vous obtenez des avertissements de sécurité effrayants
- Notre certificat fonctionne avec plusieurs adresses
Ce que c'est :
# Contenu identique à wms_ca.crt, juste renommé
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJANQ8QgAf7N8pMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV...
...
-----END CERTIFICATE-----
Pourquoi le renommage :
- Les utilisateurs Android s'attendent à l'extension .pem
- Le nom de fichier descriptif aide pendant l'installation
- Exactement le même contenu que wms_ca.crt
- Rend évident que c'est pour Android
Ce que c'est :
# Même contenu que wms_ca.crt, nom de fichier spécial
# Exemple de nom de fichier : a1b2c3d4.0
-----BEGIN CERTIFICATE-----
MIIDXTCCAkWgAwIBAgIJANQ8QgAf7N8pMA0GCSqGSIb3DQEBCwUAMEUxCzAJBgNV...
...
-----END CERTIFICATE-----
Le Calcul du Hash :
# Les certificats système Android doivent être nommés par leur hash de sujet
openssl x509 -noout -hash -in wms_ca.crt
# Sortie : a1b2c3d4 (exemple)
# Donc le nom de fichier devient : a1b2c3d4.0Pourquoi ce nommage :
- Exigence Android pour le magasin système
- Le hash empêche les conflits de noms de fichiers
- Android reconnaît automatiquement l'extension .0
- Permet une recherche rapide de certificats par hash
Ce que c'est :
# Certificat serveur en premier
-----BEGIN CERTIFICATE-----
[contenu de wms.crt]
-----END CERTIFICATE-----
# Puis certificat CA
-----BEGIN CERTIFICATE-----
[contenu de wms_ca.crt]
-----END CERTIFICATE-----
Structure :
Ordre de la Chaîne de Certificats (important !) :
1. Certificat d'Entité Finale (wms.crt) - Le certificat du serveur
2. CA Intermédiaire (aucune dans notre cas)
3. Certificat CA Racine (wms_ca.crt) - Notre certificat CA
Pourquoi l'ordre est important :
- Doit aller du certificat serveur à la CA racine
- Un mauvais ordre cause des échecs de validation
- Les clients suivent la chaîne maillon par maillon
Ce que c'est :
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no
[req_distinguished_name]
C = US
ST = New York
# ... plus de champs
[v3_req]
keyUsage = critical,digitalSignature,keyEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1 = localhost
DNS.2 = wms.local
# ... plus d'entréesObjectif :
- Instructions pour OpenSSL
- Définit les extensions du certificat
- Spécifie les Subject Alternative Names
- Peut être supprimé après la création du certificat
| Format | Extension | Ce que c'est | Comme... |
|---|---|---|---|
| PEM | .pem, .crt, .key |
Format texte que vous pouvez lire | Une lettre écrite en français |
| DER | .der, .cer |
Format binaire que les ordinateurs adorent | Une lettre écrite en code informatique |
| P12/PFX | .p12, .pfx |
Paquet avec clé + certificat | Une enveloppe scellée avec carte d'identité + clé à l'intérieur |
| JKS | .jks |
Keystore Java | Un coffre au trésor Java |
| BKS | .bks |
Keystore Android | Un coffre au trésor Android |
Nos Clés Utilisent :
- Algorithme : RSA (le plus courant et fiable)
- Taille de Clé : 2048 bits (très sécurisé, recommandé par les experts)
- Chiffrement : AES-256 (protection par mot de passe super forte)
Pourquoi 2048 bits ? Pensez-y comme une serrure avec 2048 goupilles différentes. Pour la forcer, quelqu'un devrait essayer 2^2048 combinaisons - c'est plus que tous les atomes de l'univers !
Windows a différents "coffres au trésor" (magasins) pour les certificats :
- Personnel 👤 - Vos certificats privés (comme votre carte d'identité personnelle)
- Autorités de certification racines de confiance 🏛️ - Les bureaux de badges d'identification en qui vous avez confiance
- Autorités de certification intermédiaires 🏢 - Bureaux de badges d'identification auxiliaires
- Éditeurs approuvés ✅ - Fabricants de logiciels en qui vous avez confiance
1. 📁 Trouvez votre fichier wms_ca.crt
2. 🖱️ Double-cliquez dessus
3. 🛡️ Cliquez sur "Installer le certificat"
4. 🏪 Choisissez "Ordinateur local" (pour tous les utilisateurs) ou "Utilisateur actuel" (juste pour vous)
5. 📍 Sélectionnez "Placer tous les certificats dans le magasin suivant"
6. 🏛️ Parcourez jusqu'à "Autorités de certification racines de confiance"
7. ✅ Cliquez sur "OK" et "Terminer"
# Importer le certificat CA dans le magasin racine de confiance
certlm.msc /add wms_ca.crt /store "Root"
# Ou en utilisant PowerShell
Import-Certificate -FilePath "wms_ca.crt" -CertStoreLocation Cert:\LocalMachine\RootCe dont vous avez besoin :
- Certificat CA Racine - Le chef ultime (votre
wms_ca.crt) - CA Intermédiaire (optionnel) - Manager intermédiaire
- Certificat d'Entité Finale - Le vrai travailleur (votre
wms.crt)
1. Installer la CA Racine dans le Magasin Racine de Confiance :
# Doit être dans "Autorités de certification racines de confiance"
Import-Certificate -FilePath "wms_ca.crt" -CertStoreLocation Cert:\LocalMachine\Root2. Installer le Certificat Serveur dans le Magasin Personnel :
# Le certificat serveur va dans le magasin "Personnel"
Import-Certificate -FilePath "wms.crt" -CertStoreLocation Cert:\LocalMachine\My3. Vérifier la Construction de la Chaîne :
# Vérifier si Windows peut construire la chaîne
Get-ChildItem Cert:\LocalMachine\My | Where-Object {$_.Subject -like "*wms.local*"}Validation de la Chaîne de Certificats :
[CA Racine] wms_ca.crt (dans le magasin Racine de confiance)
↓ signé par
[Certificat Serveur] wms.crt (dans le magasin Personnel)
↓ utilisé par
[Votre Site Web] https://wms.local
Windows vérifie :
- ✅ Le certificat serveur est-il signé par une CA de confiance ?
- ✅ Le certificat CA est-il dans le magasin Racine de confiance ?
- ✅ Les dates du certificat sont-elles valides ?
- ✅ Le certificat correspond-il au nom du site web ?
Android a deux niveaux de stockage de certificats :
- Emplacement : Paramètres > Sécurité > Chiffrement et identifiants
- Objectif : Les applications peuvent choisir de leur faire confiance ou non
- Sécurité : Moyenne (les applications décident quoi faire)
- Facile à Installer : Oui ! ✅
- Emplacement :
/system/etc/security/cacerts/ - Objectif : TOUTES les applications leur font automatiquement confiance
- Sécurité : Haute (confiance automatique pour tout)
- Facile à Installer : Non, nécessite un accès root 🔴
1. 📂 Copiez android_ca_system.pem sur votre téléphone
2. 📱 Allez dans Paramètres > Sécurité > Chiffrement et identifiants
3. 📥 Appuyez sur "Installer depuis le stockage" ou "Installer un certificat"
4. 📁 Trouvez et sélectionnez android_ca_system.pem
5. 🏷️ Donnez-lui un nom comme "WMS CA"
6. 🔒 Choisissez "Certificat CA" quand demandé
7. ✅ Entrez votre verrouillage d'écran (PIN/mot de passe/schéma)
Changements de Sécurité Android 7+ :
- Les applications ciblant l'API 24+ ignorent les certificats utilisateur par défaut
- Solution : L'application doit explicitement faire confiance aux certificats utilisateur
- Notre application : Déjà configurée pour faire confiance aux certificats utilisateur ! ✅
Ce dont Android a besoin :
- CA Racine dans le magasin de certificats (utilisateur ou système)
- Chaîne de certificats complète dans la réponse du serveur
- Extensions de certificat appropriées (Critique !)
- Correspondance de nom d'hôte valide
Le Certificat CA Racine Doit Avoir :
Basic Constraints: CA:TRUE (Critical)
Key Usage: Certificate Sign, CRL Sign
Le Certificat Serveur Doit Avoir :
Basic Constraints: CA:FALSE
Key Usage: Digital Signature, Key Encipherment
Extended Key Usage: Server Authentication
Subject Alternative Name: Noms DNS et IPs
Processus de Validation Android :
1. 📱 L'application se connecte à https://wms.local
2. 🔍 Le serveur envoie la chaîne de certificats : [wms.crt + wms_ca.crt]
3. 🔎 Android vérifie : wms_ca.crt est-il dans mon magasin de confiance ?
4. ✅ Trouvé dans le magasin utilisateur ? Vérifier si l'app fait confiance aux certs utilisateur
5. ✅ Trouvé dans le magasin système ? Confiance automatique
6. 🏷️ Vérifier : wms.crt correspond-il au nom d'hôte "wms.local" ?
7. 📅 Vérifier : Les certificats sont-ils encore valides (non expirés) ?
8. 🔐 Vérifier : Toutes les extensions requises sont-elles présentes ?
9. ✅ Tout est bon ? Connexion autorisée !
Problème : "La chaîne de certificats n'a pas pu être construite" Solution : Installer le certificat CA dans le magasin Racine de confiance, pas le magasin Personnel
Problème : "Non-correspondance du nom du certificat" Solution : Ajouter le nom de votre serveur aux Subject Alternative Names (SAN)
Problème : "Certificat expiré" Solution : Vérifier la date/heure du système et les dates de validité du certificat
Problème : "Certificat non approuvé" Solution : Installer le certificat CA correctement et s'assurer que l'application fait confiance aux certificats utilisateur
Problème : "Échec de la vérification du nom d'hôte" Solution : S'assurer que le SAN du certificat inclut l'IP/nom d'hôte de votre serveur
Problème : "L'application ignore les certificats utilisateur" Solution : L'application doit être configurée pour faire confiance aux certificats utilisateur (la nôtre l'est !)
- Certificats = Badges d'identification numériques qui prouvent l'identité
- Autorité de Certification = Bureau de badges d'identification de confiance qui signe les certificats
- Clé Privée = Clé secrète que vous seul possédez
- Certificat Public = Badge d'identification que tout le monde peut voir
- Chaîne de Certificats = Chaîne de confiance de la CA racine à votre certificat
- wms_ca.key - Clé maîtresse secrète (gardez-la TRÈS en sécurité !)
- wms_ca.crt - Certificat maître public (partagez-le avec les clients)
- wms.key - Clé secrète du serveur (gardez-la en sécurité !)
- wms.crt - Certificat public du serveur (Apache l'utilise)
- android_ca_system.pem - Certificat CA compatible Android
- [hash].0 - Certificat Android niveau système
- wms_chain.crt - Chaîne de certificats complète
- Gardez les clés privées (fichiers .key) secrètes - Ne les partagez jamais !
- Utilisez des mots de passe forts - Notre script utilise de bons paramètres par défaut
- Renouvellement régulier des certificats - Remplacez avant expiration
- Stockage approprié des certificats - Le bon magasin pour le bon objectif
- Vérifiez les chaînes de certificats - Testez que la confiance fonctionne
- Exécutez le script de certificats
- Installez le certificat CA sur vos appareils
- Configurez Apache pour utiliser le certificat serveur
- Testez les connexions HTTPS
- Surveillez les dates d'expiration des certificats
Rappelez-vous : Les certificats sont comme des badges d'identification pour le monde numérique. Tout comme vous ne feriez pas confiance à quelqu'un sans pièce d'identité appropriée dans la vraie vie, les ordinateurs utilisent des certificats pour vérifier à qui ils parlent en ligne ! 🌐🔒
- OpenSSL : Création et gestion de certificats
- certmgr.msc : Gestionnaire de certificats Windows
- certlm.msc : Gestionnaire de certificats de l'ordinateur local
- keytool : Outil de certificats Java/Android
- ADB : Débogage Android et installation de certificats
Maintenant vous comprenez les certificats comme un pro ! 🎉