2012-11-14 9 views
5

Come posso configurare l'httpd di Apache per fidarsi di certificati client specifici?httpd Apache: come affidarsi a certificati client specifici?

È necessario limitare l'accesso a un server Web a server specifici (noti) del partner.
Abbiamo pianificato di utilizzare una soluzione basata su CA per questo (una CA attendibile che firmerebbe solo CSR affidabili come li abbiamo accettati); tuttavia, la CA della nostra società non creerà certificati per società esterne.

Per stabilire la connessione protetta in ogni caso, finché la PKI necessaria non è pronta, volevamo configurare specifici certificati client come affidabili sul nostro proxy httpd Apache.

Ma httpd non accetta connessioni da parte dei client, che stanno cercando di connettersi utilizzando il certificato client, che è stato aggiunto al CACertificateFile (certificati x509 concatenati codificati in Base64 e di formato DER (PEM)), configurato per l'host virtuale.

Il certificato client non è in questo caso un certificato autofirmato.

risposta

4

È necessario configurare i certificati CA affidabili tramite SSLCACertificateFile o SSLCACertificatePath e utilizzare SSLVerifyClient (optional o required non optional_no_ca, che non eseguire alcuna autenticazione) per effettuare la richiesta di server un certificato client.

Se si utilizza SSLVerifyClient direttamente nella sezione VirtualHost, il certificato client verrà inviato durante l'handshake iniziale. Se lo inserisci in un Directory/.htaccess, il certificato client verrà rinegoziato.

È più facile eseguire il debug quando il certificato viene inviato nell'handshake iniziale, poiché il certificato client non verrà crittografato. Dovresti essere in grado di vederlo guardando il traffico con Wireshark (nel messaggio Certificate inviato dal client). Quando si esegue il debug, è opportuno verificare che un messaggio Certificate Request venga inviato dal server e verifichi l'elenco delle autorità di certificazione.

Una tipica causa del problema potrebbe essere un client che non riconosce quell'elenco o un client che non invia i suoi certificati CA intermedi nella catena, se necessario.

Se poi si desidera autorizzare determinati certificati più specificamente, è possibile controllare le variabili SSL variabili (ad esempio SSL_CLIENT_S_DN_*) e utilizzarlo in una direttiva SSLRequire (vedi example).

+2

Ciao Bruno, vogliamo autorizzare anche determinati certificati. quando controlli le variabili SSL, c'è comunque la possibilità di controllare l'impronta digitale/impronta digitale del certificato ?, nel nostro caso, questa è l'unica informazione che possiamo usare per autorizzare. Ma ho scoperto che non esiste una variabile del genere. – Xilang

+2

Oppure c'è una variabile per ottenere la chiave pubblica del certificato? Neanche io l'ho trovato. – Xilang

+0

Come si mette il certificato client (che sta arrivando tramite SSL handshake) in una directory come '.htaccess'? – Promod

Problemi correlati