proxy_ssl_certificate not working as expected

Maxim Dounin mdounin at mdounin.ru
Wed Mar 16 20:12:47 UTC 2016


Hello!

On Sun, Mar 13, 2016 at 07:24:05AM -0400, elanh wrote:

> Hello,
> 
> I'm using nginx as a proxy to a backend server. 
> The backend server is also using nginx and enforcing client certificate
> authentication using the ssl_client_certificate and ssl_verify_client
> directives.
> 
> In my nginx server I set the following:
> 
>     location  /proxy {
>         proxy_pass                 https://www.backend.com;
> 
>         proxy_set_header       X-Forwarded-Host $host;
>         proxy_set_header       X-Forwarded-Server $host;
>         proxy_set_header       X-Forwarded-For $proxy_add_x_forwarded_for;
> 
>         proxy_ssl_certificate         /etc/nginx/cert/client.crt;
>         proxy_ssl_certificate_key  /etc/nginx/cert/client.key;
>     }
> 
> according to
> http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_certificate.
> 
> However, the backend is still responding with a 400 reponse code "No
> required SSL certificate was sent".
> 
> Note that when issuing requests to the backend server using wget with the
> client certificate, I get a valid 200 OK response.
> 
> What am I missing in my nginx configuration?

Configuration looks fine, but likely it's not a configuration 
which is used to handle the requests.  Some basic hints:

- make sure to test with something low level like 
  telnet/curl/wget, browsers often return cached results;

- check if the configuration is actually loaded (you can use "nginx -t" 
  to check for syntax errors; look into error log after a 
  configuration reload to make sure reload went fine; just stop and 
  then start nginx to make sure);

- make sure the location you are configuring is one used for 
  requests (a simple test would be to write something like 
  "return 200 ok;" in it and check if "ok" is actually returned).

Note well that proxy_ssl_certificate is only available in nginx 
1.7.8 and newer.  Configuration testing as done by "nginx -t" 
should complain about unknown directives if you are using an older 
version.

-- 
Maxim Dounin
http://nginx.org/



More information about the nginx mailing list