Prendre rendez-vous
  1. Accueil
  2. /
  3. Blog
  4. /
  5. mTLS côté serveur web : authentification client par certificats (Nginx/Apache)

Sécurité
Web

mTLS côté serveur web : authentification client par certificats (Nginx/Apache)

15 décembre 2025

3 min de lecture

Sommaire
Plan de l'article
Pré-requis et concepts
Générer une CA et des certificats client (OpenSSL)
Activer mTLS avec Nginx
Activer mTLS avec Apache (mod_ssl)
Révocation : CRL et OCSP (stapling)
Bonnes pratiques et dépannage
Ressources complémentaires
Conclusion

L'authentification mutuelle TLS (mTLS) renforce HTTPS en exigeant un certificat côté client en plus du certificat serveur.
Objectif : authentifier les clients (humains ou services) sans mot de passe, avec une autorité de certification (CA) de confiance.

Plan de l'article

  • Pré-requis et concepts (CA, CRL/OCSP, chaînage)
  • Générer une CA et des certificats client
  • Activer mTLS avec Nginx
  • Activer mTLS avec Apache
  • Gérer la révocation (CRL/OCSP stapling)
  • Bonnes pratiques et dépannage

Pré-requis et concepts

  • CA (autorité de certification) qui signe les certificats client.
  • Chaîne de confiance : serveur présente sa chaîne, le client présente son cert signé par la CA de confiance du serveur.
  • Revocation : CRL (listes de révocation) et/ou OCSP (vérification en ligne).

Générer une CA et des certificats client (OpenSSL)

Créer une CA minimale :

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out ca.key
openssl req -x509 -new -key ca.key -days 3650 -out ca.crt -subj "/CN=EXAMPLE-CLIENT-CA"

Générer un certificat client :

openssl genpkey -algorithm RSA -pkeyopt rsa_keygen_bits:4096 -out client.key
openssl req -new -key client.key -out client.csr -subj "/CN=alice"
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial   -days 365 -out client.crt -extfile <(printf "extendedKeyUsage=clientAuth")

Option PKCS#12 pour import navigateur :

openssl pkcs12 -export -inkey client.key -in client.crt -certfile ca.crt -out client.p12

Activer mTLS avec Nginx

Configuration type :

server {
  listen 443 ssl http2;
  server_name exemple.com;

  ssl_certificate     /etc/ssl/certs/fullchain.pem;
  ssl_certificate_key /etc/ssl/private/privkey.pem;

  # mTLS (vérifie le client)
  ssl_client_certificate /etc/ssl/ca-clients.pem;   # chaîne CA clients
  ssl_verify_client on;                              # on | optional | optional_no_ca
  ssl_verify_depth 2;

  location / {
    proxy_pass http://127.0.0.1:8080;
    # En-têtes d’identité TLS côté amont (optionnel)
    proxy_set_header X-TLS-Client-CN $ssl_client_s_dn;
    proxy_set_header X-TLS-Verified $ssl_client_verify;
  }
}

Déboguer côté Nginx :

error_log /var/log/nginx/error.log info;

Activer mTLS avec Apache (mod_ssl)

Configuration type :

<VirtualHost *:443>
  ServerName exemple.com
  SSLEngine on
  SSLCertificateFile      /etc/ssl/certs/fullchain.pem
  SSLCertificateKeyFile   /etc/ssl/private/privkey.pem

  # mTLS
  SSLCACertificateFile    /etc/ssl/ca-clients.pem   # CA qui signe les clients
  SSLVerifyClient         require                    # none|optional|require
  SSLVerifyDepth          2

  <Location "/">
    Require all granted
    RequestHeader set X-TLS-Client-CN "%{SSL_CLIENT_S_DN}s"
    RequestHeader set X-TLS-Verified "%{SSL_CLIENT_VERIFY}s"
  </Location>
</VirtualHost>

Activer modules requis :

a2enmod ssl headers
systemctl reload apache2

Révocation : CRL et OCSP (stapling)

CRL (fichier) :

# Nginx
ssl_crl /etc/ssl/crl/clients.crl;

# Apache
SSLCARevocationFile /etc/ssl/crl/clients.crl

OCSP stapling (serveur) :

# Nginx
ssl_stapling on;
ssl_stapling_verify on;
resolver 1.1.1.1 8.8.8.8 valid=300s;

# Apache
SSLUseStapling On
SSLStaplingCache "shmcb:/var/run/ocsp(128000)"

Bonnes pratiques et dépannage

  • Scope : n'activer mTLS que sur les endpoints sensibles (admin/API).
  • UX : côté navigateur, faciliter l'import PKCS#12 (.p12).
  • Sécurité : limiter ssl_verify_depth, tenir à jour la CRL.
  • Observabilité : journaliser $ssl_client_verify, CN, SAN ; exporter en métriques.
  • Tests : curl --cert client.crt --key client.key https://exemple.com.
  • Fallback : ssl_verify_client optional le temps de la transition.

Ressources complémentaires

  • Créez les certificats avec Certbot
  • Sécurisez vos API avec mTLS
  • Utilisez Vault pour gérer les certificats

Conclusion

Le mTLS renforce fortement l'authentification sur vos services web.
Avec une CA maîtrisée, CRL/OCSP et un déploiement ciblé, vous obtenez un contrôle d'accès robuste et sans mot de passe pour vos utilisateurs et microservices.

Besoin d'aide sur ce sujet ?

Notre équipe d'experts est là pour vous accompagner dans vos projets d'infrastructure et d'infogérance.

Contactez-nous

Articles similaires

Authentik : un IdP moderne pour remplacer Okta ou Keycloak
Sécurité
Administration
Web

Authentik : un IdP moderne pour remplacer Okta ou Keycloak

Authentik est un fournisseur d'identité open source supportant SAML, OIDC, LDAP et RADIUS. Architecture, déploiement, comparaison avec Keycloak, scénarios SSO concrets.

10 mai 2026

Lire plus

TLS en 2026 : bonnes pratiques et configuration sécurisée
Sécurité
Web
Infrastructure

TLS en 2026 : bonnes pratiques et configuration sécurisée

Configurez TLS correctement en 2026 : TLS 1.3, cipher suites modernes, HSTS, OCSP stapling, certificats et audit de sécurité avec testssl.sh.

3 mars 2026

Lire plus

Nginx rate limiting : protéger vos APIs et applications web
Web
Sécurité
Performance

Nginx rate limiting : protéger vos APIs et applications web

Configurez le rate limiting Nginx pour protéger vos APIs : limit_req, limit_conn, zones mémoire, burst, nodelay et stratégies par endpoint.

23 févr. 2026

Lire plus


SHPV, votre partenaire de confiance en infrastructure et infogérance informatique en France.

SHPV
Prendre rendez-vousNous contacter
Expertise
InfrastructureDatacenterInfogéranceCloudHébergementTransit IP
Légales
Conditions Générales de VenteCPS - Contrat de ServicesCPS - Hébergement CloudCPS - Microsoft 365Accord sous-traitance RGPDTarifs interventions

SHPV © 2026 - Tous droits réservés

Mentions légalesPolitiques de confidentialité
SHPV FRANCE - SAS au capital de 16 000 € - 52 Rue Romain Rolland, 71230 Saint-Vallier - SIRET n°80886287400035 - R.C.S. Chalon-sur-Saône. Par téléphone 09 72 310 818 - Email: support@shpv.fr