Ciao a tutti, non riesco a far funzionare una certa configurazione di Apache con OpenSSL. Forse non ho capito bene cosa impostare o forse non è possibile fare quello che voglio io.
Vi spiego la situazione:
Ho installato sul mio pc (win xp) Apache 2.0 e Openssl. Funziona tutto bene senza problemi.
Con OpenSSL ho creato la mia CA nella dir C:\miaCA così come spiegato in molti how-to.
Quello che vorrei realizzare è un server https con accesso ristretto ai soli utenti (IE e Firefox) che possiedono un certificato rilasciato dalla mia CA.
Allora:
Ho creato le chiavi cacert.pem (pubblica) e cakey.pem (privata) per la CA. Successivamente ho creato il certificato della CA da far scaricare agli utenti ca-cert.crt e la chiave privata non protetta da password della CA cakey-nopass.pem.
Ho copiato i file cakey-nopass.pem e cacert.pem nella dir conf/ssl di apache e configurato httpd.conf nel seguente modo:
<VirtualHost private.pdsolution:443>
DocumentRoot "C:/Apache/Apache2/htdocs/ssl_dir"
SSLEngine On
SSLCertificateFile conf/ssl/cacert.pem
SSLCertificateKeyFile conf/ssl/cakey-nopass.pem
</VirtualHost>
Fino a questo punto funziona tutto, anche se quando mi collego IE mi avvisa che la il certificato non fa riferimento a questo sito e la CA non è riconosciuta (questo si risolve installando su IE il file ca-cert.crt)
Genero le chiavi per un utente di test: cert-user.pem (pub) e cert-user.priv.key (priv). Firmo la richiesta con la chiave della CA e poi genero il file mycert-user.pfx per importarlo in IE.
Importo il certificato e modifico apache:
<VirtualHost private.pdsolution:443>
DocumentRoot "C:/Apache/Apache2/htdocs/ssl_dir"
SSLEngine On
SSLCertificateFile conf/ssl/cacert.pem
SSLCertificateKeyFile conf/ssl/cakey-nopass.pem
SSLVerifyClient require
</VirtualHost>
Funziona bene anche così: mi richiede il certificato, lo seleziono dalla lista e accedo alla pagina.
Anche qui però IE mi avvisa che il certificato non corrisponde al sito web.
In definitiva, l’autenticazione funziona ma non del tutto. Rimane il problema che il sito non corrisponde al certificato. Ho provato a creare una coppia di chiavi e relativo certificato con i dati del mio server per sostituire quelli della CA impostati in apache.
In questo modo speravo di chiudere il cerchio pensando che:
1-IE riconosce la CA (ho scaricato e installato il certifica)
2-Il server riconosce il mio certificato, poiché è stato rilasciato dalla stessa CA del suo certificato.
Ma non funziona nulla. Mi viene generata una pagina di errore senza nessuna informazione particolare. Le impostazioni di apache in questo caso erano:
<VirtualHost private.pdsolution:443>
DocumentRoot "C:/Apache/Apache2/htdocs/ssl_dir"
SSLEngine On
SSLCACertificateFile conf/ssl/ca-cert.crt
SSLVerifyClient require
SSLCertificateFile conf/ssl/cert-server.pem
SSLCertificateKeyFile conf/ssl/cert-server.priv-nopass.pem
</VirtualHost>
Quello che non capisco è come mai se la CA genera due certificati uno per me e l’altro per il server, il server utilizza il suo per generare il canale SSL e riconosce la CA, IE riconosce la CA e invia il suo certificato al server per autenticarsi non funziona nulla.
Mi date una mano a risolvere questo problema???
P.S.
Forse sono stato un po contorto nella spiegazione…