Как я могу проверить содержимое альтернативного имени субъекта в формате URI с помощью переменных Apache mod_ssl? - PullRequest
0 голосов
/ 27 февраля 2019

Я работаю над проектом веб-службы, который требует, чтобы клиенты, подключающиеся к моей службе, проходили аутентификацию через сертификаты X.509 как часть согласования TLS взаимной аутентификации.В дополнение к привязке сертификата клиента к определенной цепочке доверия PKI, мои требования диктуют необходимость проверки определенных значений в сертификате.В частности, DN субъекта должен содержать одно OU с предопределенным значением, а сертификат должен содержать одно subjectAltName с другим предопределенным значением в формате URI.

Я использую Apache httpd 2.4.6 в системе CentOS 7,и я могу довольно легко удовлетворить большинство этих требований с помощью стандартных директив конфигурации Apache, использующих общие переменные mod_ssl, с одним заметным исключением: мне не удается найти переменную, которая позволяет мне получить доступ к значению subjectAltName в формате URI.Просматривая документацию по mod_ssl, найденную здесь:

https://httpd.apache.org/docs/2.4/mod/mod_ssl.html

Я вижу переменные для следующих форматов subjectAltName:

SSL_CLIENT_SAN_Email_n - записи расширения subjectAltName сертификата клиента типа rfc822Name

SSL_CLIENT_SAN_DNS_n - записи расширения subjectAltName сертификата клиента типа dNSName

SSL_CLIENT_SAN_OTHER_msUPN_n - записи расширения subjectAltName сертификата клиента типа otherName, форма имени участника-пользователя Microsoft (OID 1.3.6.1.4 *.311)1014 *

Учитывая, что URI является отличным и действительным форматом для значений subjectAltName, как определено в разделе 4.2.1.6 RFC 5280 (X.509 / PKI), я не понимаю, почему mod_ssl не будет предоставлять доступ к subjectAltNames вэтот формат.Есть ли переменная, обеспечивающая эту функциональность, которую я просто не вижу в документации?

1 Ответ

0 голосов
/ 27 февраля 2019

При дальнейшем рассмотрении исходного кода mod_ssl становится ясно, что извлечение значений SAN в формате URI для использования в переменных в настоящее время просто не поддерживается, как отмечено в этом комментарии:

        /*
         * Not implemented right now:
         * GEN_X400 (x400Address)
         * GEN_DIRNAME (directoryName)
         * GEN_EDIPARTY (ediPartyName)
         * GEN_URI (uniformResourceIdentifier)
         * GEN_IPADD (iPAddress)
         * GEN_RID (registeredID)
         */

в https://github.com/apache/httpd/blob/5f32ea94af5f1e7ea68d6fca58f0ac2478cc18c5/modules/ssl/ssl_util_ssl.c

Таким образом, ответ на мой вопрос, очевидно, заключается в том, что в настоящее время нет переменной, которую я мог бы использовать для этой цели, и выполнение этого требования потребует обходного пути (или реализации GEN_URI, переданной в mod_ssl).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...