2

Я использовал Debian Wheezy с Apache и настроил некоторые пути в SSL для защиты сертификатом клиента.

   <Location /admin-page>
     SSLCACertificateFile    /etc/apache2/ssl/leos.pem
     SSLVerifyClient require
     SSLVerifyDepth  0
     SSLRenegBufferSize 10486000
   </Location>

Поскольку я обновился до Jessie, я не могу запустить Apache2, если не закомментирую эту часть.

Mar 20 16:38:07 apache2[1649]: AH00526: Syntax error on line 51 of /etc/apache2/sites-enabled/default-ssl.conf:
Mar 20 16:38:07 apache2[1649]: Your SSL library does not have support for per-directory CA

Как я могу вернуть его обратно на работу?

1 ответ1

3

Вам нужно переместить строку «SSLCACertificateFile /etc/apache2/ssl/leos.pem» за пределы раздела «Местоположение» (поместите его рядом с файлом SSLCertificateFile). Если у вас уже есть файл SSLCACertificateFile - например, используемый для сертификатов SSL от внешней компании - и вы хотите добавить самозаверяющий CA для аутентификации на стороне клиента, просто добавьте свой сертификат CA в этот файл (один файл .crt может - и часто действительно - иметь несколько сертификатов).

Вы по-прежнему можете принудительно выполнять проверку только для тех каталогов, которые хотите защитить.

<LocationMatch "^/(admin|internal)($|/)">
          SSLVerifyClient require
           SSLVerifyDepth 1
           SSLRequire (    %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \
           and %{SSL_CLIENT_I_DN_O} in {"CompanyName} \
           and %{SSL_CLIENT_S_DN_OU} in {"OU1","OU2"} )
</LocationMatch>

Я не вижу причин, почему это не сработало бы с расположением, а не соответствием местоположения, но я этого не пробовал. Я использую сопоставление местоположения, потому что я реализовал его на прокси.

Вы также можете избавиться от / изменить строки SSL_CLIENT_ *, чтобы они соответствовали вашему сертификату. В одном месте, где я работаю, у нас есть разные типы сертификатов для разных людей с разными разрешениями - идентификация подразделения организации, а также соответствующие сертификаты позволяют разным группам разные разрешения - что означает доступ к разным местоположениям.

Я отмечаю, что тот же виртуальный контейнер используется конечными пользователями без сертификата - конечно, они не могут получить доступ к частям с "SSLVerifyClient require".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .