В моей системе есть несколько каталогов, например,
/ 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. Однако это должно быть перенаправление, иначе сертификаты не будут работать.