Apache: Atribuir certificados SSL / cliente para diretórios

1

Eu tenho vários diretórios no meu sistema, por exemplo,

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

E o que eu gostaria de fazer é gerar um certificado SSL de servidor / cliente para cada diretório e, em seguida, configurar cada diretório para que o certificado do cliente corresponda ao certificado do servidor para acessar o diretório mencionado. Agora, se alguém tiver o certificado de cliente para / var / www / dir2 e eles tentarem acessar / var / www / dir1, eles não poderão fazê-lo, já que esses diretórios usam certs diferentes. Cada um desses diretórios está hospedado no mesmo domínio (por exemplo, domain.com/dir1, domain.com/dir2).

Agora, o problema que estou tendo é que eu não sei exatamente como fazer isso no Apache. (Além disso, eu realmente não me importo que domain.com exija SSL, mas eu quero que os diretórios exijam isso.)

    
por Daniel Amaya 09.11.2013 / 05:34

2 respostas

1

Meu entendimento disso estava incorreto. Eu gerou um único certificado de servidor, então eu gero um certificado de cliente para cada cliente. Eu criei o diretório / etc / httpd / clients e eu armazeno um arquivo para cada cliente no diretório que se parece com isso:

<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>

Cada cliente agora possui seu próprio certificado de cliente SSL que pode usar para acessar um determinado diretório no servidor da web.

    
por 09.11.2013 / 21:41
0

Certificados SSL estão conectados a um nome de domínio, mas devido ao modo como o SSL funciona, você pode ter apenas um por endereço IP. Isso ocorre porque o handshake SSL solicita o certificado antes de passar o nome do domínio para o servidor da web. Assim, o servidor web não pode aplicar um certificado diferente por diretório ou, na verdade, nome de domínio. Nem você pode comprar ou criar um!

O melhor que você pode fazer é criar um certificado diferente para dir1.example.com dir2.example.com etc. e, em seguida, usar a reconfiguração de URL do Apache para redirecionar www.example.com/dir1 para dir1.example.com. Teria que ser um redirecionamento, pois os certificados não funcionarão de outra forma.

    
por 09.11.2013 / 17:04