certificati client HTTPS per server-server

3

Supponiamo che tu abbia due server con certificati che dimostrano i loro domini (ad esempio per l'utilizzo con HTTPS).

Uno di questi server può utilizzare il proprio certificato come certificato client quando parla con l'altro, in modo che entrambi i server possano essere certi del nome di dominio dell'altro? Per esempio. " link " può ricevere una richiesta che è sicura provenga da " link ", così puoi inviare in sicurezza segreti specifici per quel dominio (anche se non ha mai visto quel dominio prima).

(EDIT: sono a conoscenza dell'esistenza dell'autenticazione client in generale per TLS, ma sono particolarmente interessato a sapere se gli stessi certificati della PKI "https" sono utilizzabili come certificati client. impedir loro di "lavorare solo" con le implementazioni esistenti.)

    
posta cloudfeet 30.03.2015 - 18:32
fonte

3 risposte

1

Sì. Se consentito da EKU.

È possibile utilizzare un certificato / chiave come certificato cliente se questo è consentito all'interno del certificato. Vale a dire se TLS Web Client Authentication è consentito nella sezione Extended Key Usage (EKU).

Ad esempio: nel example.com cert è effettivamente consentito. (Non lo sapevo.)

$ echo -n | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -text | grep Authentication -B1
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication

Sembra essere molto diffuso.

Campione rapido dei grandi siti Web di seguito.

$ echo -n | openssl s_client -connect google.com:443 2>/dev/null | openssl x509 -noout -text | grep Authentication -B1
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication

$ echo -n | openssl s_client -connect amazon.com:443 2>/dev/null | openssl x509 -noout -text | grep Authentication -B1
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication

$ echo -n | openssl s_client -connect microsoft.com:443 2>/dev/null | openssl x509 -noout -text | grep Authentication -B1
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication

$ echo -n | openssl s_client -connect apple.com:443 2>/dev/null | openssl x509 -noout -text | grep Authentication -B1
            X509v3 Extended Key Usage:
                TLS Web Server Authentication, TLS Web Client Authentication

Ulteriori letture:

risposta data 10.02.2016 - 15:35
fonte
3

In realtà, esiste una parte facoltativa spesso inutilizzata (almeno sul Web) di SSL / TLS che consente l'autenticazione del client. Generalmente non viene utilizzato sul Web perché al server non interessa se il client è quello che dicono di essere: devono solo avere le credenziali appropriate. Inoltre, immagina l'incubo di dover verificare ogni cliente nel mondo su un determinato computer, IP, dominio, ecc. Non so nemmeno come possa funzionare. Sarebbe una sorta di carta d'identità Internet globale / certificato - un'idea piuttosto spaventosa se me lo chiedi!

Wikipedia ha una procedura decente qui, che spiega come funziona l'autenticazione del clinet: link

Puoi confrontarlo con l'handshake di base per il modo più comune in cui vediamo gli handshake SSL / TLS scendere .

Quindi, la risposta alla tua domanda è sicuramente "sì" con la consapevolezza che uno dei tuoi server agisce ancora come "cliente" in questo scenario. Quest'ultima parte è solo semantica.

    
risposta data 30.03.2015 - 19:21
fonte
0

Se un determinato certificato x509 può essere utilizzato o meno per il lato client di una connessione SSL autorizzata dal client, dipende dalle opzioni Utilizzo chiave e Utilizzo chiave estesa inserite nel certificato dalla CA emittente.

Puoi esaminare un certificato x 509 usando openssl x509 -in certfile.pem -text

Le opzioni di utilizzo chiave si riferiscono a varie operazioni a cui è possibile utilizzare il certificato, quali: Firma digitale, Accordo chiave, EncipherOnly ecc.

Le opzioni di utilizzo delle chiavi estese di solito si riferiscono a più operazioni di alto livello come: Autenticazione server (cosa si utilizzerà per un server SSL), Autenticazione client (cosa si userebbe per un client SSL), Firma codice e un host di altri.

Se disponi di un certificato x509 con entrambe Autenticazione e ampli del server Opzioni di utilizzo chiavi estese dell'autenticazione client, puoi essere certo che funzionerà in entrambi i ruoli. Se ha solo le opzioni di utilizzo delle chiavi, potrebbe essere necessario sperimentare.

Un elenco più completo di opzioni è disponibile nelle sezioni 4.2.1.3 e amp; 4.2.1.12 di rfc 5280

    
risposta data 10.02.2016 - 10:49
fonte