Certificados do lado do cliente (Apache, Linux, OpenSSL)

2

Minha empresa comprou um certificado curinga de um fornecedor. Este certificado foi configurado com sucesso com o Apache 2.2 para proteger um subdomínio. Tudo no lado do SSL funciona.

Agora, preciso gerar certificados do lado do cliente x509 para emitir para este subdomínio. Estou acompanhando esta página: ( link ), começando com "Criando certificados de cliente para autenticação ".

Gerei os arquivos p12 e os importei com sucesso para o Firefox. Quando eu navego para o site agora, recebo um erro no FireFox que diz "A conexão com o servidor foi redefinida enquanto a página estava sendo carregada".

Acho que meu problema está vindo de não assinar o lado do cliente corretamente. Quando assino o certificado no lado do cliente, estou usando o arquivo PEM (RapidSSL_CA_bundle.pem) da RapidSSL (de quem nós compramos o certificado) para o argumento -CA. Para o argumento -CAkey, estou usando a chave privada do servidor. Está correto?

    
por walshms 04.03.2011 / 17:56

1 resposta

3

Pode ser que você esteja usando certificados de cliente com o uso de chave incorreto. Por favor, verifique se o seu uso de chaves tem:

  • Crítica
  • Assinatura
  • Não repúdio
  • Codificação de chave

Se você estiver usando o uso de chave estendida, verifique se

  • Não é crítico
  • Autenticação do cliente TLS na Web
  • Proteção de email

No lado do servidor, verifique se você tem todo o certificado que foi usado para assinar o certificado de cliente e a hierarquia de pki relevante está configurada. Em uma configuração típica do apache, isso seria parecido com:

<VirtualHost *:443>
    ServerAdmin [email protected]                                                                                      
    DocumentRoot /var/www/
    ServerName service.example.net
    ScriptAlias /cgi-bin/ /var/www/cgi-bin/
    <Directory "/var/www/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    <Directory "/var/www/">
            Options Indexes MultiViews FollowSymLinks
            AllowOverride None
    </Directory>

    SSLEngine on
    SSLOptions +StdEnvVars
    SSLCertificateFile    /usr/local/ssl/certs/Server.crt
    SSLCertificateKeyFile /usr/local/ssl/private/Server.key
    SSLCACertificateFile  /usr/local/ssl/certs/caRoot.cacert.pem
    SSLVerifyClient require
    ErrorLog logs/service.example.net-443-error_log
    LogLevel info
    CustomLog logs/service.example.net-443-access.log combined

Finalmente, você pode tentar depurar com boas e velhas openssl

openssl s_client -connect server.example.net:443 -CAfile ../ca/caRoot.crt -cert client-Access.crt -key client-Access.key  -showcerts

ou enrolar

curl -kv --key client-Access.key --cert client-Access.crt --cacert ../ca/caRoot.crt  https://server.example.net/

Boa sorte!

    
por 04.03.2011 / 20:54