Generazione del proprio certificato SSL utilizzando DSC emesso da una CA.

2

Ok. Quindi, ecco quello che so:

  1. Il certificato SSL viene utilizzato per verificare il dominio per il protocollo HTTPS. Questi sono rilasciati da un'autorità di certificazione principale per garantire che possano essere considerati affidabili da chiunque utilizzi il sito Web e si fidino anche della CA.

  2. Un certificato SSL autofirmato non sarà considerato affidabile perché non sono una CA radice e l'utente non mi conosce.

  3. DSC (Digital Signature Certificate) è emesso da una CA radice e ha una coppia di chiavi privata / pubblica e posso usarlo per firmare le cose. Dal momento che viene emesso anche dall'autorità di certificazione principale, posso firmare i documenti e quelli possono essere verificati dalla terza parte.

Ecco la mia domanda:

C'è un modo per generare un certificato SSL usando il mio DSC (Classe 2) e usarlo per un sito Web sicuro SSL / HTTPS? perché in teoria ciò creerà un'intera catena di fiducia che raggiunge la CA radice.

(Ho usato sia SSL che DSC e voglio solo avere una chiarezza concettuale qui. Potrei sicuramente mancare qualcosa qui.)

    
posta 23.10.2015 - 18:44
fonte

1 risposta

3

I certificati hanno profondità, che aumentano man mano che si scende lungo una catena di fiducia, quindi la profondità del certificato 0 emette la profondità del certificato 1, che emette la profondità del certificato 2, ecc ...

Per verificare in modo soddisfacente una catena di certificati completa, un client che si connette al tuo sito Web protetto SSL dovrebbe essere in grado di trovare gli intermediari e verificarli fino a quando non raggiunge un certificato attendibile, che in normali circostanze è un certificato CA installato con il tuo sistema operativo.

Un client arbitrario non troverà il tuo certificato di intermediario in questo caso, perché sarà dotato di tutti i soliti certificati installati con il sistema operativo, ma ovviamente non avrà il tuo intermediario ...

Un computer desktop, o server, costruito come parte di una sorta di build aziendale speciale per l'azienda, può naturalmente essere manomesso, aggiungendo certificati, e alcune aziende lo fanno, aggiungendo la propria CA radice con tutte le altre quelli predefiniti.

Il tuo server web protetto SSL può tuttavia fornire certificati intermedi (insieme al suo) al client quando si collega in modo che possa completare il processo di verifica del trust concatenato, ma ...

Il prossimo problema è che il certificato intermedio, quello rilasciato dalla tua CA, potrebbe non essere valido come CA stessa, e in tal caso non sarà accettato come certificato intermedio.

Usando openssl puoi verificarlo eseguendo 'openssl x509':

openssl x509 -text -in CERT_FILENAME

Provando questo su un certificato CA, guardando attraverso l'output, puoi vedere:

                ef:47:91:0a:72:ba:9e:85:3c:7e:39:6b:62:ed:d0:
                13:53:cf:52:52:e2:a8:1a:a8:27:5c:7e:08:a2:ad:
                17:1d
            Exponent: 65537 (0x10001)
    X509v3 extensions:
        X509v3 Subject Key Identifier: 
            5C:FC:C1:89:C0:DC:DD:C7:01:0D:EA:37:73:A8:7B:F4:55:85:A5:E4
        X509v3 Authority Key Identifier: 
            keyid:5C:FC:C1:89:C0:DC:DD:C7:01:0D:EA:37:73:A8:7B:F4:55:85:A5:E4

        X509v3 Basic Constraints: 
            CA:TRUE
Signature Algorithm: sha1WithRSAEncryption
     17:e4:1d:18:d6:43:68:75:04:11:c0:6f:72:6b:ac:eb:03:18:
     1c:f3:e3:94:f8:77:b5:40:38:3b:20:cd:42:d7:de:db:7c:98:

Il bit magico che stai cercando è:

            CA:TRUE

Se CA è FALSE o le estensioni x509 non sono presenti, non funzionerà come CA intermedia.

Infine, anche se hai openssl, puoi fare "openssl s_client -connect som.ssl.web.site:443 -CApath / path / to / your / CAcerts -verify 5", e si spera che dovresti, vicino al fine di un carico di output, ottieni:

Verify return code: 0 (ok)

Se il tuo intermediario non è valido come CA, otterrai:

Verify return code: 26 (unsupported certificate purpose)

Ho provato a generare una CA, quindi un certificato intermedio e un certificato di "fine" firmato dall'intermedio e, sebbene la catena di fiducia sia verificabile, utilizzata su un sito Web, non funziona. Se creo un'intermedio V3 con estensioni x509, impostando i vincoli di base di CA su TRUE, e quindi generando un certificato di 'fine' firmato da questo, ancora una volta la catena di trust è soddisfacente, ma questa volta il client Web è felice.

    
risposta data 23.10.2015 - 19:35
fonte

Leggi altre domande sui tag