Назад | Перейти на главную страницу

Apache: назначьте сертификаты сервера / клиента SSL каталогам

В моей системе есть несколько каталогов, например,

/ var / www / dir1 / var / www / dir2 / var / www / dir3

И что я хотел бы сделать, так это сгенерировать сертификат SSL сервера / клиента для каждого каталога, а затем настроить каждый каталог так, чтобы сертификат клиента совпадал с сертификатом сервера, чтобы получить доступ к указанному каталогу. Теперь, если у кого-то есть сертификат клиента для / var / www / dir2, и он пытается получить доступ к / var / www / dir1, он не сможет этого сделать, поскольку в этих каталогах используются разные сертификаты. Каждый из этих каталогов размещен в одном домене (например, domain.com/dir1, domain.com/dir2).

Теперь у меня проблема в том, что я не совсем уверен, как это сделать в Apache. (Кроме того, мне не очень важно, чтобы domain.com требовал SSL, но я хочу, чтобы каталоги требовали его.)

Мое понимание этого было неверным. Я создал один сертификат сервера, затем я создаю сертификат клиента для каждого клиента. Я создал каталог / etc / httpd / clients и храню файл для каждого клиента в указанном каталоге, который выглядит следующим образом:

<Directory /var/www/html/test.com>
  RewriteEngine On
  RewriteCond %{HTTPS} !=on
  RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
  SSLVerifyClient require
  SSLVerifyDepth 5
  SSLOptions           +FakeBasicAuth
  SSLRequireSSL
  SSLRequire       %{SSL_CLIENT_S_DN_CN}  eq "test.com"
</Directory>

У каждого клиента теперь есть собственный сертификат клиента SSL, который они могут использовать для доступа к заданному каталогу на веб-сервере.

SSL-сертификаты связаны с доменным именем, но из-за способа работы SSL у вас может быть только один на каждый IP-адрес. Это потому, что рукопожатие SSL запрашивает сертификат перед передача доменного имени на веб-сервер. Таким образом, веб-сервер не может применять разные сертификаты для каждого каталога или доменного имени. Вы также не можете купить или создать его!

Лучшее, что вы можете сделать, - это создать другой сертификат для dir1.example.com, dir2.example.com и т. Д., А затем использовать перезапись URL-адреса Apache для перенаправления www.example.com/dir1 на dir1.example.com. Однако это должно быть перенаправление, иначе сертификаты не будут работать.