Configurer l’authentification par Certificat sur le Client¶
Nouveau dans la version 1.7: Enterprise
Indication
Cette fonctionnalité n’est disponible qu’en version Enterprise de WAPT.
Si votre entreprise a besoin d’un serveur WAPT ouvert sur Internet, il peut être securisé grâce à l”authentification par Certificat sur le Client.
Cette configuration restreint la visibilité du serveur WAPT aux clients enregistrés uniquement. Cela se base sur la clé privée de l’agent généré lors de son enregistrement. Il marche comme ce qui suit:
l’agent WAPT envoie un CSR au serveur WAPT que ce dernier va signer et renvoyer à l’agent WAPT;
en utilisant le certificat signé, l’agent peut accéder à l’arborescence protégée du serveur web Nginx;
Note
Nous vous recommandons d’activer Kerberos ou bien l’enregistrement par identifiant / mot de passe dans le post-configuration du serveur WAPT.
Activer l’authentification par Certificat sur le Client¶
assurez-vous de désactiver les en-têtes personnalisées relatives aux résultats de l’authentification côté client lorsque les demandes sont passées au proxy sans être vérifiées par le module ssl de nginx. Ces en-têtes sont jugées fiables par le waptserver si X-Ssl-Authenticated est marqué SUCCESS et que le paramètre
waptserver.ini
use_ssl_client_auth
est réglé sur True :location / { ... proxy_set_header X-Ssl-Authenticated ""; proxy_set_header X-Ssl-Client-DN "";
Ajoutez une configuration Nginx dans le fichier
/etc/nginx/certificate-auth.conf
. Ce fichier est utilisé pour restreindre l’accès aux actions propres au Certificat d’Authentification:proxy_set_header X-Ssl-Authenticated $ssl_client_verify; proxy_set_header X-Ssl-Client-DN $ssl_client_s_dn; if ($ssl_client_verify != SUCCESS) { return 401; }
Exemple d’un fichier de configuration:
server {
listen 80;
listen 443 ssl;
server_name _;
ssl_certificate "/opt/wapt/waptserver/ssl/cert.pem";
ssl_certificate_key "/opt/wapt/waptserver/ssl/key.pem";
ssl_protocols TLSv1.2;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_prefer_server_ciphers on;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_stapling on;
ssl_stapling_verify on;
ssl_session_cache none;
ssl_session_tickets off;
gzip_min_length 1000;
gzip_buffers 4 8k;
gzip_http_version 1.0;
gzip_disable "msie6";
gzip_types text/plain text/css application/json;
gzip_vary on;
ssl_client_certificate "/opt/wapt/conf/wapt-serverauth-ca.crt";
ssl_verify_client optional;
index index.html;
location /static {
alias "/opt/wapt/waptserver/static";
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# be sure we ignore these headers if they are coming from clients
proxy_set_header X-Ssl-Client-Dn "";
proxy_set_header X-Ssl-Authenticated "";
client_max_body_size 4096m;
client_body_timeout 1800;
location ~ ^/(wapt|wapt-host|waptwua)/(.*)$ {
proxy_set_header Cache-Control "store, no-cache, must-revalidate, post-check=0, pre-check=0";
proxy_set_header Pragma "no-cache";
proxy_set_header Expires "Sun, 19 Nov 1978 05:00:00 GMT";
include /etc/nginx/certificate-auth.conf;
rewrite ^/(wapt|wapt-host|waptwua)/(.*)$ /$1/$2 break;
root "/var/www";
}
# kerberos auth
location /add_host_kerberos {
auth_gss on;
auth_gss_keytab /etc/nginx/http-krb5.keytab;
proxy_pass http://127.0.0.1:8080;
}
# basic auth
location ~ ^/(add_host|ping)$ {
proxy_pass http://127.0.0.1:8080;
}
location /wapt-host/Packages {
return 403;
}
location / {
include /etc/nginx/certificate-auth.conf;
proxy_pass http://127.0.0.1:8080;
}
location /socket.io {
include /etc/nginx/certificate-auth.conf;
proxy_http_version 1.1;
proxy_buffering off;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://127.0.0.1:8080/socket.io;
}
}
}
Attention
Soyez prudent, en date du 2023-01-10, WAPT ne supporte pas les CRL, ce qui signifie que lorsque vous supprimez une machine dans la console WAPT, la machine pourra toujours accéder au répertoire WAPT.