SSL_CLIENT_CERT_CHAIN ​​не передается на внутренний сервер

У меня есть сертификат клиента, настроенный и работающий в Apache. Я хочу передать сертификаты X.509 клиента в кодировке PEM на внутренний сервер.

Я пытался с SSLOptions +ExportCertData. Это ничего не делает, хотя в документации говорится, что в качестве заголовков следует добавить SSL_SERVER_CERT, SSL_CLIENT_CERT и SSL_CLIENT_CERT_CHAINn (с n = 0,1,2,..). Есть идеи, почему эта опция не работает?

Затем я попытался установить заголовки самостоятельно, используя RequestHeader. Это прекрасно работает для всех переменных, кроме SSL_CLIENT_CERT_CHAIN. В заголовке отображается ноль. Есть идеи, почему цепочка сертификатов не заполняется?

Это моя первая конфигурация 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>

Это моя вторая конфигурация 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>

Надеюсь, кто-то может помочь.

С уважением, Нидкил

2 ответа

Это старый вопрос, но я отвечу на него, если кто-то другой наткнется на него, как я.

Сертификат эмитента фактически находится в позиции 0 в цепочке от Apache, а не 1. Чтобы получить сертификат эмитента, вы хотите:

RequestHeader set SSL_CLIENT_CERT_CHAIN_0 "%{{SSL_CLIENT_CERT_CHAIN_0}}s"

SSLOptions +ExportCertData не добавляет заголовки в прокси-запрос, он добавляет переменные среды - переменные среды, которые вы пытаетесь добавить к заголовкам во втором конфиге (но тогда их нет в среде, так как вы отбросили SSLOptions конфигурации).

Вам понадобятся оба RequestHeader set конфиг а также SSLOptions +ExportCertData,

Другие вопросы по тегам