ssl alerta de falha de handshake de erro

2

Estou recebendo o erro mencionado no título no Firefox quando tento acessar meu site na minha máquina. Este é o erro que recebo:

An error occurred during a connection to www.st.um.
SSL peer was unable to negotiate an acceptable set of security parameters.
(Error code: ssl_error_handshake_failure_alert)

Esta é minha configuração de host virtual:

<VirtualHost *:443>
    ServerAdmin [email protected]
    ServerName www.st.um
    DocumentRoot /var/www/web
    <Directory /var/www/web>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>    
    SSLEngine on
    SSLCertificateFile /usr/lib/ssl/demoCA/servercert.pem
    SSLCertificateKeyFile /usr/lib/ssl/demoCA/serverkey.pem
    SSLCACertificateFile /usr/lib/ssl/demoCA/stcert.pem

    <FilesMatch "\.(cgi|shtml|phtml|php)$">
        SSLOptions +StdEnvVars
    </FilesMatch>

    BrowserMatch "MSIE [2-6]" \
    nokeepalive ssl-unclean-shutdown \
    downgrade-1.0 force-response-1.0

    # MSIE 7 and newer should be able to use keepalive
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

    SSLVerifyClient require
    SSLVerifyDepth 10

</VirtualHost>

O certificado "servercert.pem" é certificado usando minha CA: "stcert.pem" e eu posso usar o certificado "servercert.pem" com a chave "serverkey.pem" perfeitamente para obter acesso ao s_server como um servidor e ter minha autoridade de certificação importada e confiável na lista de autoridades do navegador da Web:

openssl s_server -cert servercert.pem -key serverkey.pem -www

Eu também posso obter acesso ao meu site como um cliente usando um arquivo PKCS # 12 gerado a partir de um certificado "clientcert.pem" com sua chave "clientkey.pem".

A única coisa que eu tenho em /etc/log/apache2/error.log é:

[Sat May 25 02:44:11 2013] [notice] Apache/2.2.22 (Ubuntu) 
PHP/5.3.10-1ubuntu3.6 with Suhosin-Patch mod_ssl/2.2.22 
OpenSSL/1.0.1 configured -- resuming normal operations
    
por mragrid 24.05.2013 / 23:57

1 resposta

2

Eu editei minha configuração de virtualhost e deletei:

    SSLVerifyClient require
    SSLVerifyDepth 10

E agora está funcionando para a autenticação do lado do servidor. A diretiva "SSLVerifyClient require" substitui as linhas:

SSLCertificateFile /usr/lib/ssl/demoCA/servercert.pem
SSLCertificateKeyFile /usr/lib/ssl/demoCA/serverkey.pem
SSLCACertificateFile /usr/lib/ssl/demoCA/stcert.pem

E esse foi o problema. A diretiva "SSLVerifyClient require" é para autenticação do lado do cliente e faz com que o openSSL sempre exija um certificado do cliente.

    
por 25.05.2013 / 18:21