# How to read all client chain certificates from fastcgi request

**URL:** <https://www.ruby-forum.com/t/how-to-read-all-client-chain-certificates-from-fastcgi-request/228832>\
**Category:** NGINX\
**Created:** [May 9, 2013, 11:01am UTC](https://www.ruby-forum.com/t/how-to-read-all-client-chain-certificates-from-fastcgi-request/228832 "2013-05-09T11:01:35Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![sravanakk](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/c89c15/32.png) [@sravanakk](https://www.ruby-forum.com/u/sravanakk)\
**Post date:** [May 9, 2013, 11:01am UTC](https://www.ruby-forum.com/t/how-to-read-all-client-chain-certificates-from-fastcgi-request/228832/1 "2013-05-09T11:01:35Z")

</div>

Hi,

I configured my nginx with openssl as below:  
server {  
listen 443;  
server\_name localhost;

```
    ssl on;
    ssl_certificate <Combined Server certificate and Root CA

```

certificate\>  
ssl\_certificate\_key   
ssl\_client\_certificate

```
    ssl_verify_client on;
    ssl_verify_depth 3;

    ssl_session_cache shared:SSL:64k;
    ssl_session_timeout 10m;

    ssl_ciphers HIGH:!aNULL:!MD5;

```

}

From client code I am sending client certificate as bellow  
RootCA → IntermediateCA → Client

By using curl :  
curl\_easy\_setopt(curl, CURLOPT\_SSLCERTTYPE, “PEM”);  
curl\_easy\_setopt(curl,CURLOPT\_SSLCERT,“ClientCom.crt”); // This  
file  
having three certificates

```
  if (pPassphrase)
    curl_easy_setopt(curl, CURLOPT_KEYPASSWD, pPassphrase);

  curl_easy_setopt(curl, CURLOPT_SSLKEYTYPE, "PEM");

  curl_easy_setopt(curl,CURLOPT_SSLKEY,"ClientKey.pem");
  curl_easy_setopt(curl,CURLOPT_CAINFO,"RootCA.crt");

```

My Server Code: As soon as nginx server gets any request from client,  
below  
call would be triggered from my Server as below.  
ReadTLSSessionData (FCGX\_Request \*request)  
{  
FCGX\_GetParam(“SSL\_CLIENT\_RAW\_CERT”, request-\>envp);  
FCGX\_GetParam(“SSL\_CLIENT\_CERT”, request-\>envp);  
}

Here I am receiving only one certificate from these environmental  
variables.  
But, I want to read all three certificates which client sending in PEM  
format. Then I have to verify the extensions.

What is the environmental variable which gives all certificates from  
client???

Below is my fastcgi.conf file:  
fastcgi\_param SSL\_CLIENT\_CERT $ssl\_client\_cert;  
fastcgi\_param SSL\_CLIENT\_RAW\_CERT $ssl\_client\_raw\_cert;  
fastcgi\_param SSL\_CLIENT\_S\_DN $ssl\_client\_s\_dn;  
fastcgi\_param SSL\_CLIENT\_I\_DN $ssl\_client\_i\_dn;  
fastcgi\_param SSL\_CLIENT\_SERIAL $ssl\_client\_serial;

Can anybody help me in this aspect!!!

Regards,  
Sravana

Posted at Nginx Forum:

> **[How to read all client chain certificates from fastcgi request.](https://forum.nginx.org/read.php?2,239048,239048#msg-239048)**
>
> Hi, I configured my nginx with openssl as below: server { listen 443; server\_name localhost; ssl on; ssl\_certificate \<Combined Server certificate and Root CA certificate\>
