J'essaie de configurer l'authentification par certificat client pour un service Web fonctionnant sous Rails. Le service fonctionne avec apache2, passenger et mod_ssl. J'ai réussi à générer les clés et à configurer l'authentification par certificat client pour l'ensemble du domaine. Cela fonctionne bien, cependant, lorsque j'essaie d'inclure la directive Location, j'obtiens toujours cette erreur (à partir des navigateurs et du client ruby) :
SSL_connect returned=1 errno=0 state=SSLv3 read finished A: sslv3 alert handshake failure (OpenSSL::SSL::SSLError).
Lorsque j'exécute la commande depuis curl, j'obtiens cette erreur :
curl: (52) Empty reply from server
Je supprime la directive et cela fonctionne bien. Voici à quoi ressemble ma confirmation pour cet hôte virtuel.
<VirtualHost *:443 *:80>
ServerName wrangler.optimis.local
DocumentRoot "/Users/jmoore/Sites/data-wrangler/public/"
RackEnv development
ErrorLog "/Users/jmoore/Sites/data-wrangler/log/error.log"
CustomLog "/Users/jmoore/Sites/data-wrangler/log/access.log" common
SetEnv GEM_HOME /Users/jmoore/.rvm/gems/ree-1.8.7-2010.02
SetEnv GEM_PATH /Users/jmoore/.rvm/gems/ree-1.8.7-2010.02
# Enable SSL on this domain
SSLEngine on
SSLProtocol ALL
SSLCipherSuite HIGH:MEDIUM
SSLCertificateFile /etc/apache2/ssl.key/new/wrangler_servercert.pem
SSLCertificateKeyFile /etc/apache2/ssl.key/new/wrangler_server.nopass.key
# Enable SSL client certificates, but disable verification for the entire domain (we only want it on specific URLs)
#SSLCACertificatePath /etc/apache2/ssl.key/new/demoCA
SSLCACertificateFile /etc/apache2/ssl.key/new/demoCA/cacert.pem
#SSLCertificateChainFile /etc/apache2/ssl.key/new/demoCA/cacert.pem
#SSLVerifyClient require
SSLVerifyClient none
#SSLVerifyDepth 1
<Location /test>
SSLVerifyClient require
SSLVerifyDepth 1
</Location>
</VirtualHost>
J'ai donc régénéré les certificats plusieurs fois et, à chaque fois, cela fonctionne bien pour l'ensemble du domaine, mais donne l'erreur de poignée de main lorsque j'essaie de limiter à un seul emplacement. Comme ces configurations sont suggérées par la documentation d'Apache, je ne suis pas sûr de ce qui ne va pas. Quelqu'un sait-il comment résoudre le problème de poignée de main qui se produit lorsque vous essayez de limiter l'authentification du client à un seul emplacement ?