SSL_CLIENT_CERT_CHAIN não sendo passado para o servidor backend

5

Eu tenho certificado de cliente configurado e trabalhando no Apache. Eu quero passar os certificados X.509 codificados por PEM do cliente para o servidor de back-end.

Eu tentei com o SSLOptions + ExportCertData. Isso não faz nada, enquanto a documentação informa que deve adicionar SSL_SERVER_CERT, SSL_CLIENT_CERT e SSL_CLIENT_CERT_CHAINn (com n = 0,1,2, ..) como cabeçalhos. Alguma idéia de por que essa opção não está funcionando?

Eu então tentei definir os cabeçalhos usando RequestHeader. Isso funciona bem para todas as variáveis, exceto SSL_CLIENT_CERT_CHAIN. Mostra nulo no cabeçalho. Alguma idéia de por que a cadeia de certificados não está sendo preenchida?

Esta é minha primeira configuração do Apache:

<VirtualHost 192.168.56.100:443>
    ServerName www.test.org
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

    SSLEngine on
    SSLProxyEngine on

    SSLCertificateFile     /etc/apache2/ssl/certs/www.test.org.crt
    SSLCertificateKeyFile  /etc/apache2/ssl/private/www.test.org.key
    SSLCACertificateFile   /etc/apache2/ssl/ca/ca.crt

    <Proxy *>
        AddDefaultCharset Off
        Order deny,allow
        Allow from all
    </Proxy>

    <Location /carbon>
        ProxyPass          http://www.test.org:9763/carbon
        ProxyPassReverse   http://www.test.org:9763/carbon
    </Location>

    <Location /services/GbTestProxy>
        SSLVerifyClient require
        SSLVerifyDepth  5
        SSLOptions +ExportCertData

        ProxyPass          http://www.test.org:8888/services/GbTestProxy 
        ProxyPassReverse   http://www.test.org:8888/services/GbTestProxy 
    </Location>
</VirtualHost>

Esta é minha segunda configuração do Apache:

<VirtualHost 192.168.56.100:443>
    ServerName www.test.org
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www

    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

    SSLEngine on
    SSLProxyEngine on

    SSLCertificateFile     /etc/apache2/ssl/certs/www.test.org.crt
    SSLCertificateKeyFile  /etc/apache2/ssl/private/www.test.org.key
    SSLCACertificateFile   /etc/apache2/ssl/ca/ca.crt

    <Proxy *>
        AddDefaultCharset Off
        Order deny,allow
        Allow from all
    </Proxy>

    <Location /carbon>
        ProxyPass          http://www.test.org:9763/carbon
        ProxyPassReverse   http://www.test.org:9763/carbon
    </Location>

    <Location /services/GbTestProxy>
        SSLVerifyClient require
        SSLVerifyDepth  5
        SSLOptions +ExportCertData

        RequestHeader set SSL_CLIENT_S_DN "%{SSL_CLIENT_S_DN}s"
        RequestHeader set SSL_CLIENT_I_DN "%{SSL_CLIENT_I_DN}s"
        RequestHeader set SSL_CLIENT_S_DN_CN "%{SSL_SERVER_S_DN_CN}s"
        RequestHeader set SSL_SERVER_S_DN_OU "%{SSL_SERVER_S_DN_OU}s"
        RequestHeader set SSL_CLIENT_CERT "%{SSL_CLIENT_CERT}s"
        RequestHeader set SSL_CLIENT_CERT_CHAIN_0 "%{SSL_CLIENT_CERT_CHAIN_0}s"
        RequestHeader set SSL_CLIENT_CERT_CHAIN_1 "%{SSL_CLIENT_CERT_CHAIN_1}s"
        RequestHeader set SSL_CLIENT_VERIFY "%{SSL_CLIENT_VERIFY}s"

        ProxyPass          http://www.test.org:8888/services/GbTestProxy 
        ProxyPassReverse   http://www.test.org:8888/services/GbTestProxy 
    </Location>
</VirtualHost>

Espero que alguém possa ajudar.

Atenciosamente, nidkil

    
por nidkil 08.07.2012 / 23:40

2 respostas

3

Essa é uma pergunta antiga, mas eu responderei no caso de alguém se deparar com ela como eu fiz.

O certificado do emissor está na posição 0 na cadeia do Apache, não 1. Para obter o certificado do emissor desejado:

RequestHeader set SSL_CLIENT_CERT_CHAIN_0 "%{{SSL_CLIENT_CERT_CHAIN_0}}s"
    
por 11.04.2016 / 22:27
2

SSLOptions +ExportCertData não adiciona cabeçalhos a uma solicitação com proxy, ele adiciona variáveis de ambiente - as variáveis de ambiente que você está tentando adicionar aos cabeçalhos em sua segunda configuração (mas elas não estão no ambiente, desde que você deixou cair o SSLOptions config).

Você precisará das configurações RequestHeader set e SSLOptions +ExportCertData .

    
por 09.07.2012 / 00:06