Validando clientes SSL usando uma lista de certificados autorizados em vez de uma autoridade de certificação

1

É possível configurar o Apache (ou qualquer outro servidor com reconhecimento de SSL) para aceitar apenas conexões de clientes que apresentam um certificado de uma lista pré-definida? Esses certificados podem ser assinados por qualquer CA (e podem ser autoassinados).

Há algum tempo, tentei fazer a validação de certificado de cliente trabalhando no sistema EPP do registro de domínio para o qual trabalho. A especificação do protocolo EPP determina o uso de "autenticação mútua cliente-servidor strong". Na prática, isso significa que tanto o cliente como o servidor devem validar o certificado do outro ponto na sessão.

Criamos uma autoridade de certificação privada e pedimos aos registradores que enviassem CSRs, que assinamos. Essa pareceu-nos a solução mais simples, mas muitos de nossos registradores se opuseram: eles estavam acostumados a obter um certificado de cliente de uma CA e a enviar esse certificado ao registro. Então tivemos que descartar o sistema. Eu tenho tentado encontrar uma maneira de implementar este sistema em nosso servidor, que é baseado no módulo mod_epp para o Apache.

    
por Gavin Brown 23.04.2010 / 19:41

2 respostas

3

Pode ser possível fazer apenas com o mod_ssl central, usando SSLRequire. Não tenho certeza da variável SSL exata que você deseja, mas algo assim deve funcionar:

SSLRequire% {SSL_CLIENT_S_DN_UID} em {file ("/ tmp / list")}

Como alternativa, você pode mapear algum atributo de certificado para o nome de usuário que geralmente vem da Autenticação HTTP (restrições de tipo .htaccess):

.htaccess:

SSLOptions + FakeBasicAuth SSLUserName SSL_CLIENT_S_DN_CN AuthGroupFile / tmp / SSL_Groups Exigir o grupo my-users

/ tmp / SSL_Groups:

meus usuários: uid = bob, dc = site, dc = com uid = jane, dc = site, dc = com

Novamente, eu não estou 100% no que é SSL_CLIENT_S_DN_CN, mas você entendeu.

    
por 23.04.2010 / 19:59
2

Você deve ser capaz de configurar um diretório com todos os certificados de CA em que confia e, em seguida, apontá-lo com o SSLCACertificatePath diretiva para que você possa autenticar com base em qualquer certificado. Então, como Jeff mencionou, use SSLRequire para limitar o acesso ao conjunto de certificados que você deseja permitir .

Se o seu sistema ainda não tiver um conjunto de certs de CAs comuns instalados, você poderá copiá-los de outro lugar. O Debian do pacote ca-certificates pode ser um bom ponto de partida.

    
por 23.04.2010 / 20:30