Non sembra esserci alcun tipo di convenzione di denominazione standard per i certificati OpenSSL, quindi mi piacerebbe sapere se c'è un semplice comando per ottenere informazioni importanti su qualsiasi certificato OpenSSL, indipendentemente da genere. Mi piacerebbe conoscere almeno il tipo di certificato (x509, RSA, DSA) e se si tratta di una chiave pubblica o privata. Guardando il contenuto di un certificato che ho appena estratto da un file PKCS12, nessuno di questi viene mostrato esplicitamente.Come determinare il tipo di certificato dal file
risposta
In primo luogo, si dispone di un paio di problemi di terminologia:
- lo standard X509 definisce i certificati, e RSA e DSA sono due degli algoritmi a chiave pubblica che possono essere utilizzati in tali certificati; I certificati
- vengono utilizzati per contenere chiavi pubbliche e mai chiavi private.
- PKCS # 12 è uno standard per un contenitore che può contenere certificati client X509 e le chiavi private corrispondenti, nonché (facoltativamente) i certificati X509 delle CA che hanno firmato i certificati client X509.
Quindi, se si sta esaminando un file PKCS # 12 (tipicamente .p12 estensione), allora sapete già:
- Esso contiene almeno un certificato client X509, che contiene una chiave pubblica ; e
- Contiene le chiavi private corrispondenti.
Tutto ciò che non si sa è se i certificati con chiave privata & sono RSA o DSA. È possibile controllare questo estraendo il certificato (s), e poi esaminarle:
openssl pkcs12 -in mycert.p12 -clcerts -nokeys -out mycert.crt
openssl x509 -in mycert.crt -text
L'output di testo del comando openssl x509
dovrebbe includere una sezione Subject Public Key
, che includerà i campi che consentono di vedere se si tratta di una RSA o Chiave DSA (insieme alla dimensione della chiave).
I certificati possono anche essere limitati a un determinato uso.
Ad esempio, potrebbe essere limitato in modo che non possa essere utilizzato come autorità di certificazione. Leggi anche di più in this StackOverflow post.