terça-feira, 18 de outubro de 2011

Configuração two-way SSL no Apache

Para se obter uma configuração two-way SSL (comunicação SSL duas vias entre Cliente e Servidor) no Apache com certificados auto-assinados (self-signed) efectuar os passos seguintes (é uma das maneiras. eventualmente há melhores maneiras):
  • Parte-se do principio que o Apache já está configurado para SSL
  • Em cima desta configuração:
    • No ficheiro ssl.conf
      • Descomentar a linha
        SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt
      • Dentro da tag <virtualhost> ...,</virtualhost> incluir uma linha do género
        Include /etc/apache2/vhost.d/*.conf
        que é o local ou o ficheiro que contém as configurações SSL mais específicas que irão ser efectuada
    • Supondo, por exemplo, que se quer proteger uma location com two-way SSL
      • <location />
        SSLVerifyClient optional
        SSLUserName SSL_CLIENT_S_DN_CN

        SSLRequire %{SSL_CLIENT_S_DN_CN} eq "Teste"

        </location>
    • Se não existir criar o ficheiro /etc/apache2/ssl.crt/ca-bundle.crt
    • Tendo o certificado cliente basta efectuar: cat client.crt > ca-bundle.crt
    • Restart do apache e tem-se comunicação 2 way SSL

Na location, a linha SSLRequire %{SSL_CLIENT_S_DN_CN} eq "Teste" indica que só os certificados de cliente que tenham o CN=Teste é que serão aceites. É possível efectuar outras configurações. Para mais detalhes ver: httpd.apache.org/docs/2.2/mod/mod_ssl.htm

Sem comentários: