J'ai un site php basique, avec un certificat letsencrypt pour la navigation ssl. Jusque là, tout marche bien, mon certificat se met à jour tous les 3 mois, et mon site fait ce que j'attends de lui. Maintenant, je souhaite configurer le virtualhost pour qu'il n'accepte la connexion que d'un client disposant d'un certificat pour que n'importe qui ne puisse pas aller dessus sans pour autant implémenter un système d'authentification lourd pour un site juste destiné à afficher des infos sur mon serveur.
J'ai donc cherché sur internet, et suivi plusieurs tutos pour réaliser une authentification par certificat via Nginx. Mais sans succès. J'ai testé tout ce qui me venait à l'esprit, de la création de ma propre autorité de certification (ajoutée manuellement dans mon navigateur) jusqu'à l'utilisation du certificat letsencrypt de mon domaine. Mais même en générant et regénérant des certificats utilisateurs et en les intégrant dans les certificats de mon navigateur (firefox), rien n'y fait...
Quand je me connecte à mon site, il m'affiche sans cesse :
400 Bad Request
No required SSL certificate was sent
La configuration de mon virtualhost :
# Default server configuration
#
server {
server_name sub.domain.tld;
root /var/www/sub.domain.tld;
access_log /var/log/nginx/sub.domain.tld.access.log;
error_log /var/log/nginx/sub.domain.tld.access.log;
server_tokens off;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "same-origin" always;
add_header Feature-Policy "midi none;notifications none;push none;sync-xhr none;microphone none;camera none;magnetometer none;gyroscope none;speaker self;vibrate none;fullscreen self;payment none;";
# Add index.php to the list if you are using PHP
index index.php index.html index.htm index.nginx-debian.html;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
# pass PHP scripts to FastCGI server
#
location ~ \.php$ {
include snippets/fastcgi-php.conf;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
# With php-cgi (or other tcp sockets):
#fastcgi_pass 127.0.0.1:9000;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/sub.domain.tld/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/sub.domain.tld/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
ssl_client_certificate /etc/letsencrypt/live/sub.domain.tld/fullchain.pem;
ssl_verify_client on;
ssl_verify_depth 2;
}
server {
if ($host = sub.domain.tld) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name sub.domain.tld;
listen 80;
return 404; # managed by Certbot
}
Ce que j'aimerais maintenant, c'est correctement configurer mon serveur pour qu'il me permette de gérer une authentification client par certificats, puis savoir comment je dois générer le dit certificat à ajouter à mon serveur pour que ca marche.
Merci par avance de l'aide que vous pourrez m'apporter
Hier est derrière ; Demain est un mystère ; Aujourd'hui est un cadeau : c'est pourquoi on l'appelle le Présent. [Maître Oogway]
Problème de configuration d'un virtualhost Nginx
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Hier est derrière ; Demain est un mystère ; Aujourd'hui est un cadeau : c'est pourquoi on l'appelle le Présent. [Maître Oogway]