Outils pour utilisateurs

Outils du site


linux:nginx (lu 30113 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
linux:nginx [17-10-2025 09:33] edmc73linux:nginx [10-07-2026 19:42] (Version actuelle) – [Convertir pour le smartphone (.p12)] edmc73
Ligne 74: Ligne 74:
   dpkg -i geoipupdate_7.1.0_linux_amd64.deb   dpkg -i geoipupdate_7.1.0_linux_amd64.deb
  
-<code>+<code bash>
 # configuration # configuration
 vi /etc/GeoIP.conf vi /etc/GeoIP.conf
Ligne 105: Ligne 105:
 Pour Nginx Pour Nginx
  
-<code>+<code nginx>
 #Fichier de config pour spécifier l'emplacement de la base de données #Fichier de config pour spécifier l'emplacement de la base de données
 vi /etc/nginx/conf.d/geoip2.conf vi /etc/nginx/conf.d/geoip2.conf
Ligne 112: Ligne 112:
     auto_reload 60m;     auto_reload 60m;
     $geoip2_data_country_code country iso_code;     $geoip2_data_country_code country iso_code;
 +}
 +
 +geoip2 /usr/share/GeoIP/GeoLite2-ASN.mmdb {
 +    auto_reload 60m;
 +    $geoip2_data_isp autonomous_system_organization;
 } }
  
Ligne 120: Ligne 125:
   apt install mmdb-bin   apt install mmdb-bin
  
-<code>+<code json>
 mmdblookup --file /usr/share/GeoIP/GeoLite2-Country.mmdb --ip 152.65.252.11 mmdblookup --file /usr/share/GeoIP/GeoLite2-Country.mmdb --ip 152.65.252.11
  
Ligne 208: Ligne 213:
 Config pour restreindre par pays Config pour restreindre par pays
  
-<code>+<code nginx>
 server{ server{
     server_name toto.com; # managed by Certbot     server_name toto.com; # managed by Certbot
Ligne 248: Ligne 253:
  
 </code> </code>
 +
 +===== Authentification par Certificat Client (TLS Mutual Auth) =====
 +
 +Permet de sécuriser l'accès à un site via un certificat placé au niveau du client. Pratique si on ne peut pas restreindre l'accès par ip ou si on veut éviter la connexion VPN en permanence.
 +
 +==== Création du notre Autorité de Certification (CA) ====
 +
 +<code bash>
 +# Générer la clé de l'autorité
 +openssl genrsa -out ca.key 4096
 +# Créer le certificat de l'autorité
 +openssl req -new -x509 -days 3650 -key ca.key -out ca.crt
 +</code>
 +
 +Quand la commande vous demande les informations, soyez distinct :
 +  * Country Name : FR
 +  * Organization Name : Ma Maison
 +  * Common Name : Mon-Autorite-CA (Utilisez un nom qui indique clairement que c'est le "patron").
 +==== Création du certification pour le client ====
 +On génère une clé spécifiquer pour le client, signée par le CA.
 +
 +Dans l'exemple, le client sera un smartphone Android
 +<code bash>
 +# Générer la clé du smartphone
 +openssl genrsa -out smartphone.key 4096
 +
 +# Créer la demande de signature
 +openssl req -new -key smartphone.key -out smartphone.csr
 +
 +# Signer le certificat avec votre CA
 +# Notez qu'on défini ici un numéro de série 01
 +openssl x509 -req -days 365 -in smartphone.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out smartphone.crt
 +</code>
 +
 +C'est ici qu'il faut être vigilant :
 +  * Country Name : FR
 +  * Organization Name : Ma Maison (Le même que le CA, c'est mieux).
 +  * Common Name : Smartphone-Jean (Il doit être différent du CN de l'autorité).
 +==== Convertir pour le smartphone (.p12) ====
 +<code>
 +openssl pkcs12 -export -out smartphone.p12 -inkey smartphone.key -in smartphone.crt -certfile ca.crt
 +</code>
 +Un mot de passe sera demandé, il permet de sécuriser le fichier car il contient à la fois le certificat et sa clé privée.
 +
 +Pour lire le contenu de ce fichier
 +  openssl pkcs12 -in smartphone.p12 -info -nodes
 +
 +
 +Envoyez ce fichier .p12 à votre téléphone et installez-le dans les ''paramètres'' / ''Sécurité et confidentialité'' / ''Autres options de sécurité et confidentialité'' / ''Chiffrement et identifiants'' / ''Installer un certificat'' / ''Certificat utilisateur VPN et appli''
 +
 +Le mot de passe sera demandé lors de l'installation du certificat sur l'appareil.
 +
 +Sur Chrome, il faut aller ici -> ''[[chrome://certificate-manager/clientcerts/platformclientcerts]]''
 +
 +Sur Zen browser, ''about:preferences#connectionSecurity'' puis ''Gérer les certificats'', sur l'onglet ''Vos certificats'', cliquez sur ''Importer...''
 +==== Configuration Nginx ====
 +<code nginx>
 +server {
 +    listen 443 ssl;
 +    server_name votre-ha.domaine.fr;
 +
 +    ssl_certificate /chemin/vers/fullchain.pem; # Votre certificat SSL habituel (ex: Let's Encrypt)
 +    ssl_certificate_key /chemin/vers/privkey.pem;
 +
 +    # --- AJOUT MTLS ---
 +    ssl_client_certificate /chemin/vers/ca.crt; # Le certificat CA créé à l'étape 1
 +    ssl_verify_client on; 
 +    # ------------------
 +
 +    location / {
 +        proxy_pass http://127.0.0.1:8123;
 +        # ... reste de votre config proxy habituelle
 +    }
 +}
 +</code>
 +
 +==== Révocation de certificat ====
 +
 +Générer et gérer une CRL (Certificate Revocation List) demande un peu d'organisation, car il faut tenir une sorte de petit "registre" de vos certificats.
 +
 +Voici la procédure étape par étape pour révoquer un certificat et générer ce fichier.
 +
 +=== 1. Préparer l'infrastructure de révocation ===
 +Pour qu'OpenSSL puisse gérer une liste noire, il a besoin d'un fichier texte qui sert de base de données (index.txt) et d'un fichier pour le numéro de série de la future CRL.
 +
 +Exécutez ces commandes dans le dossier où se trouvent vos clés :
 +
 +<code bash>
 +touch index.txt
 +echo 1000 > crl_number
 +</code>
 +
 +=== 2. Créer un fichier de configuration minimal (crl.conf) ===
 +OpenSSL a besoin de savoir où chercher les informations. Créez un fichier nommé crl.conf et collez ceci dedans :
 +
 +<code ini>
 +[ ca ]
 +default_ca = CA_default
 +
 +[ CA_default ]
 +database = ./index.txt
 +crlnumber = ./crl_number
 +certificate = ./ca.crt
 +private_key = ./ca.key
 +default_md = sha256
 +</code>
 +
 +=== 3. Révoquer le certificat compromis ===
 +Imaginons que le certificat à bannir soit smartphone.crt.
 +
 +  openssl ca -config crl.conf -revoke smartphone.crt
 +
 +Cette commande va mettre à jour le fichier ''index.txt'' en marquant ce certificat comme révoqué (indiqué par un "R").
 +
 +=== 4. Générer le fichier .crl pour Nginx ===
 +Maintenant, créez le fichier que Nginx pourra lire :
 +
 +  openssl ca -config crl.conf -gencrl -out liste_noire.crl
 +
 +=== 5. Configurer Nginx Proxy Manager ===
 +Dans l'onglet Advanced de votre hôte Home Assistant, ajoutez cette ligne :
 +
 +  ssl_crl /data/custom_ssl/liste_noire.crl;
 +
 +(Assurez-vous que le fichier est bien présent dans le volume Docker de NPM, comme pour le ca.crt).
  
  
linux/nginx.1760693585.txt.gz · Dernière modification : de edmc73