Authentification mutuelle

Nginx

ssl_certificate 	/etc/ssl/nginx.crt;    # 1
ssl_certificate_key	/etc/ssl/nginx.key;  # 2

ssl_client_certificate  /etc/ssl/ca.crt; # 3
ssl_verify_client       optional;        # 4

# 5
location / {
      if ($ssl_client_verify != SUCCESS) {
        return 403;
      }
      try_files $uri $uri/ =404;
    }

keepalive_timeout 10;                    # 6
ssl_session_timeout 5m;                  # 7

Détail des différentes lignes :

  1. Nous ajoutons le certificat nginx.crt qui sera le certificat de notre serveur, celui-ci est généré grâce à notre mini-pki
  2. Clé de notre certificat nginx.
  3. Certificat racine de notre mini-pki, celui-ci nous permettra l’authentification mutuelle.
  4. Nous ne forçons pas l’utilisateur à avoir un certificat, en faisant cela nous pouvons définir l’erreur lancée dans le cas où le client ne présente pas de certificats.
  5. Si la personne ne présente pas le bon certificat, il retourne une erreur 403.
  6. Définis un délai d’attente pendant lequel une connexion client restera ouvert côté serveur
  7. Spécifie une durée durant laquelle un client peut réutiliser les paramètres de session.

Firefox

Nous allons dans les paramètres du navigateur (Firefox dans notre cas). Puis dans Vie privée et sécurité et enfin dans afficher les certificats.

Untitled

Nous allons importer un certificat signé par l’AC_ROOT, dans notre cas l01.p12.

Untitled

Untitled

Notre certificat est bien importé, maintenant nous allons voir si ça fonctionne.

Untitled

En cherchant notre page, une fenêtre apparaît nous demandant quel certificat utiliser. Nous cliquons sur OK, puis après une page de mise en garde (nous sommes notre propre Autorité de Certification, celle-ci n’étant pas reconnu à l’extérieur, le navigateur ne la reconnaît pas comme de confiance) nous pouvons voir notre page TOP GUN.

Untitled

À gauche une connexion sans certificat, à droite une connexion avec.

Untitled