certificati di entità finale con firma incrociata: utilizzo in apache / openssl / gnutls

0

Una domanda precedente, Cosa è l'uso dei certificati per la firma incrociata in X.509? descritto bene per i certificati incrociati.

Ho una situazione in cui i client si fidano di CA1 xor CA2, ed entrambi devono raggiungere un singolo servizio. Logicamente, questo significa che ho bisogno di due certificati di entità finale per lo stesso nome host. Da un'unica chiave SSL, ho generato un singolo CSR e inviato a entrambe le CA e ottenuto i due certificati di entità finale separati.

Ho configurato Apache per servire entrambi i certificati insieme e tutti gli intermedi pertinenti nella catena.

Ciò che mi ha convinto è la possibilità di arrestare il blocco di mod_ssl di Apache con [Tue Nov 25 15:28:35 2014] [error] Init: Multiple RSA server certificates not allowed'

Il s_server di OpenSSL legge più -cert ,% argomenti di-dcert, prende il primo certificato RSA nell'ultimo argomento.

Usando GnuTLS tramite mod_gnutls o direttamente, prende solo l'ultimo certificato o reclami The provided X.509 certificate list is not sorted (in subject to issuer order)

Penso che, leggendo RFC4158, ciò che sto cercando di fare dovrebbe essere valido. Dove ho sbagliato? Perché la firma incrociata sembra essere valida solo tra i certificati intermedio e root?

Non c'è modo in anticipo di differenziare i client, quindi non posso imbrogliare ed eseguire vhosts diversi su IP diversi (i client condividono il DNS). Non ho il controllo su come ottenere entrambe le CA nei client. L'unico work work-around che ho finora è quello di spingere ciascun gruppo di client verso un unico hostname out-of-band.

    
posta robbat2 26.11.2014 - 03:18
fonte

2 risposte

1

openssl s_server -cert -dcert è utile solo se i certs (e le chiavi corrispondenti -key -dkey ) sono algoritmi diversi . Quindi userà per es. la chiave RSA e cert per lo scambio di chiavi standard RSA o DHE-RSA ma il tasto DSS & cert per DHE-DSS. E allo stesso modo per ECDSA e ECDHE-ECDSA ora che ECC è supportato (dalla 1.0.0 ad eccezione di RedHat).

Apache sembra essere lo stesso. link dice

This directive can be used multiple times (referencing different filenames) to support multiple algorithms for server authentication - typically RSA, DSA, and ECC. ...

e #sslcertificatekeyfile dice

The directive can be used multiple times (referencing different filenames) to support multiple algorithms for server authentication. For each SSLCertificateKeyFile directive, there must be a matching SSLCertificateFile directive.

Questo sarebbe utile solo se puoi consentire ai tuoi clienti di abilitare / disabilitare diversi keyexchange basandosi su quale CA vogliono che tu usi, il che è probabilmente più difficile e più confuso dell'uso di nomi host diversi.

In realtà esiste un'estensione standard definita per TLS1.0 per 3546 TLS1.1 di 4366 TLS1.2 per 6066 per consentire al client di identificare le CA che ritiene affidabili e che desiderano utilizzare. Ma la maggior parte delle estensioni sono opzionali e per quanto ho visto nessun browser (o client) implementa questo.

    
risposta data 27.11.2014 - 06:50
fonte
0

Ho letto la specifica TLS1.2 per consentire a SOLO UNA CATENA di essere inviata .:
link

certificate_list
      This is a sequence (chain) of certificates.  The sender's
      certificate MUST come first in the list.  Each following
      certificate MUST directly certify the one preceding it.
    
risposta data 26.11.2014 - 20:37
fonte

Leggi altre domande sui tag