Как получить доступ к переменным окружения mod_ssl из django, используя mod_wsgi? - PullRequest
2 голосов
/ 23 сентября 2011

Я пытаюсь получить сертификат клиента и подписать XML-файл, используя его.Я добавил следующее в мои виртуальные хосты:

SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +stdEnvVars

Это должно позволить mod_ssl получить сертификат пользователя.Но я не знаю, как передать его в мое приложение Django.Любая помощь приветствуется.Спасибо.

Ответы [ 3 ]

1 голос
/ 23 мая 2015

Вы должны использовать

SSLOptions +StdEnvVars
SSLOptions +ExportCertData

в конфигурации Apache, чтобы иметь SSL_CLIENT_CERT в среде.

С колбой это будет в request.environ['SSL_CLIENT_CERT']

Исходя из обсуждения другого ответа, для django это может быть request.META['SSL_CLIENT_CERT'].

0 голосов
/ 11 июля 2015

SSLOptions + StdEnvVars + ExportCertData

SSL_CLIENT_CERT будет содержать закодированный сертификат PEM.

SSL_CLIENT_CERT_CHAIN_n (где n - это число) и SSL_SERVER_CERT также включены, но, вероятно, неинтересно.1006 * Жаль, что нельзя точно настроить, какие элементы вы хотите добавить в среду.Было бы намного сложнее иметь только то, что нужно (для меня обычное имя и то, что проверка прошла успешно - хотя это может подразумеваться при проверке, требуемой, и для вас - клиентский сертификат PEM).

0 голосов
/ 23 сентября 2011

Эти директивы конфигурации Apache означают, что переменные среды mod_ssl теперь должны быть доступны в среде, унаследованной Django. Поэтому вы можете получить к ним доступ, используя объект os.environ в представлении Django:

import os
client_cert = os.environ['SSL_CLIENT_CERT']

Переменная SSL_CLIENT_CERT содержит сертификат клиента в кодировке PEM.

...