Come sapere se il certificato è autofirmato

14

Come faccio a sapere se un certificato è autofirmato o autorizzato dalla CA? Da qualche parte ho letto che soggetto e emittente autofirmato saranno uguali, è corretto?

    
posta Rahul_cs12 05.07.2015 - 18:08
fonte

4 risposte

10

Sì è vero. Quando il certificato è autofirmato, il campo emittente e oggetto contiene lo stesso valore. Inoltre, ci sarà solo questo certificato nel percorso del certificato.

    
risposta data 05.07.2015 - 18:17
fonte
12

Il certificato autofirmato avrà identici campi soggetto e emittente, ma a) questo non è garantito, e b) l'inverso non è vero. Solo perché i campi hanno lo stesso valore che non significa che il certificato sia autofirmato.

Ecco gli output di uno dei nostri certificati root (root-ca.crt) e intermedi (ca.crt):

$ openssl x509 -subject -issuer -noout -in root-ca.crt 
subject= /C=DE/ST=Berlin/L=Berlin/O=classmarkets GmbH/CN=classmarkets CA
issuer= /C=DE/ST=Berlin/L=Berlin/O=classmarkets GmbH/CN=classmarkets CA

$ openssl x509 -subject -issuer -noout -in ca.crt 
subject= /CN=classmarkets CA/C=DE/L=Berlin/O=classmarkets GmbH/ST=Berlin
issuer= /C=DE/ST=Berlin/L=Berlin/O=classmarkets GmbH/CN=classmarkets CA

Puoi vedere che i campi sono gli stessi per entrambi i certificati, anche se ca.crt è stato firmato da root-ca.crt:

$ openssl x509 -noout -text -in ca.crt | grep -A1 'Key Identifier'
        X509v3 Authority Key Identifier: 
            keyid:A2:2D:AF:A0:D2:64:DF:30:F1:72:39:AC:21:AF:45:D6:D4:12:19:94
--
        X509v3 Subject Key Identifier: 
            30:B0:6B:B5:56:9A:95:7C:31:4B:B2:65:95:0D:F9:EE:E8:3D:3A:C9

$ openssl x509 -noout -text -in root-ca.crt | grep -A1 'Key Identifier'
        X509v3 Subject Key Identifier: 
            A2:2D:AF:A0:D2:64:DF:30:F1:72:39:AC:21:AF:45:D6:D4:12:19:94

Notare l'assenza dell '"identificatore chiave dell'autorità" in root-ca.crt.

RFC3280 afferma nella sezione 4.2.1.1 (sottolinea il mio):

The keyIdentifier field of the authorityKeyIdentifier extension MUST be included in all certificates generated by conforming CAs to facilitate certification path construction. There is one exception; where a CA distributes its public key in the form of a "self-signed" certificate, the authority key identifier MAY be omitted. The signature on a self-signed certificate is generated with the private key associated with the certificate's subject public key. (This proves that the issuer possesses both the public and private keys.) In this case, the subject and authority key identifiers would be identical, but only the subject key identifier is needed for certification path building.

Quindi mi sembra che l'Authority e gli identificatori di chiavi oggetto siano un indicatore molto migliore per i certificati autofirmati rispetto ai campi Emittente e Oggetto. Per un certificato autofirmato, l'identificatore della chiave di autorizzazione sarà assente o avrà lo stesso valore dell'identificativo della chiave oggetto.

    
risposta data 19.06.2017 - 17:41
fonte
3

@Vilican answer è tecnicamente corretto e dovrebbe fare il lavoro per la maggior parte del tempo. Ma volevo sapere se un certificato che stavo esaminando (non un particolare sito web) era usato come certificato autofirmato o era un certificato CA.

Quello che ho scoperto è che i certificati di CA root hanno lo stesso emittente e soggetto. Anche Extensions - > Certificate Basic Constraints indica che questo è un CA e il numero di CA intermedie consentite da firmare da questo.

Mentre i certificati autofirmati utilizzati per proteggere un sito web di solito sono non contrassegnati come CA, hanno anche un nome DNS come CN in Subject . E / o avere un elenco di nomi DNS / indirizzi IP consentiti in Extensions - > Certificate subject alt name .

    
risposta data 13.10.2016 - 09:22
fonte
2

Suppongo che non sia corretto controllare solo la corrispondenza di soggetto e l'emittente di un certificato. Esistono molte opzioni in cui diversi certificati con data di inizio / fine diversa o altri metadati hanno lo stesso soggetto ed emittente. Sto usando il seguente metodo per verificare che il certificato sia autofirmato:

openssl verify -CAfile /cert/to/check.pem -CApath /cert/to/check.pem /cert/to/check.pem

Se il controllo fallisce, è possibile verificare se il certificato è firmato con un altro certificato:

openssl verify -CAfile /cert/of/issuer.pem -CApath /cert/of/issuer.pem /cert/to/check.pem

La specifica dello stesso certificato di CAfile e CApath impedisce la corretta verifica dei certificati di default di OpenSSL.

    
risposta data 06.12.2016 - 13:44
fonte

Leggi altre domande sui tag