i run nginx -v nginx version: nginx/1.23.3 (COPR Build)
the server's setup to use LE certs server { ... ssl_trusted_certificate "/www/sec/le/deploy/otherexample.com/intermediate_ca.ec.crt.pem"; ssl_certificate "/www/sec/le/deploy/otherexample.com/fullchain.ec.crt.pem"; ssl_certificate_key "/www/sec/le/deploy/otherexample.com/priv.ec.key"; ... i've a secure area that i want to limit access to clients only with exact-matching ssl cert fingerprints i've added map $ssl_client_fingerprint $test_ssl_fp_reject { default 1; # cert's SHA1 FP 01234567890ABCDEFGHIJK1234567890ABCDEFGH 0; } ... log_format ssl_client '"Client fingerprint" $ssl_client_fingerprint ' '"Client DN" $ssl_client_s_dn '; ... server { ... # attempt the verify, to populate $ssl_client_fingerprint ssl_verify_client optional; ssl_verify_depth 2; ssl_client_certificate "/etc/ssl/cert.pem"; ... location /sec/test { if ($test_ssl_fp_reject) {return 403; } root /www/sec/test; try_files /test.php =444; fastcgi_pass phpfpm; fastcgi_index test.php; fastcgi_param PATH_INFO $fastcgi_script_name; include fastcgi.conf; } ... access_log /var/log/nginx/ssl.log ssl_client; the client cert's self-signed with my own CA, and usage's config'd for Client auth, openssl x509 -in desktop.example.com.client.ec.crt.pem -text -noout Certificate: Data: Version: 3 (0x2) Serial Number: 4859 (0x12fb) Signature Algorithm: ecdsa-with-SHA256 Issuer: C = US, ST = NY, O = example.com, OU = example.com_CA, CN = example.com_CA_INT, emailAddress = s...@example.com Validity Not Before: Mar 20 11:17:47 2023 GMT Not After : Mar 17 11:17:47 2024 GMT Subject: C = US, ST = NY, L = New_York, O = example.com, OU = example.com_CA, CN = desktop.example.com, emailAddress = s...@example.com Subject Public Key Info: Public Key Algorithm: id-ecPublicKey Public-Key: (384 bit) pub: 04:...:e5 ASN1 OID: secp384r1 NIST CURVE: P-384 X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Cert Type: SSL Client, S/MIME Netscape Comment: example.com CLIENT Certificate X509v3 Subject Key Identifier: CC:...:06 X509v3 Authority Key Identifier: D0:...:CD X509v3 Key Usage: critical Digital Signature, Non Repudiation, Key Encipherment, Data Encipherment, Key Agreement X509v3 Extended Key Usage: TLS Web Client Authentication, E-mail Protection X509v3 Subject Alternative Name: DNS:desktop.example.com, DNS:www.desktop.example.com Signature Algorithm: ecdsa-with-SHA256 Signature Value: 30:...:6f i've imported the cert as .pfx into Firefox & Chrome. i can access https://otherexample.com as usual. now, on access to EITHER of https://otherexample.com https://otherexample.com/sec/test in browser i get 400 Bad Request The SSL certificate error nginx while in log, i _do_ see the captured FP & DN, tail -f /var/log/nginx/ssl.log "Client fingerprint" 01234567890ABCDEFGHIJK1234567890ABCDEFGH "Client DN" emailAddress=s...@example.com,CN=desktop.example.com,OU=example.com_CA,O=example.com,L=New_York,ST=NY,C=US if i toggle - ssl_verify_client optional; + ssl_verify_client off; now, access to https://otherexample.com works. but https://otherexample.com/sec/test returns 403 Forbidden nginx since the $ssl_client_fingerprint doesn't populate tail -f /var/log/nginx/ssl.log "Client fingerprint" - "Client DN" - and, if I turn off ALL client verification, then access to frontend and by secure area works as expected. what config change's needed to (1) keep the site publicly accessible using the LE certs" (2) lock down to secure area for exact FP-match access only? _______________________________________________ nginx mailing list nginx@nginx.org https://mailman.nginx.org/mailman/listinfo/nginx