Se disponi di un server accessibile al pubblico, utilizza link . Altrimenti, vedi sotto per uno script.
Non sono a conoscenza di un'opzione s_client
che elenca le dimensioni della chiave per tutti i certificati in una catena. Potresti utilizzare l'opzione -showcerts
per ottenere tutti i certificati forniti dal server e controllare ciascuno dei certificati forniti e presumere che i certificati nel tuo trust store non utilizzino chiavi di piccole dimensioni.
Si noti che alcuni server potrebbero essere configurati in modo errato per fornire certificati nella catena non utilizzati (e non corretti). Ricordo di aver visto un sito che si collegava bene in Firefox, ma falliva in Java. Si è scoperto che una vecchia CA scaduta è stata inclusa nella catena insieme agli altri certificati. In questo caso, Firefox ignorerebbe quel certificato poiché ha trovato una catena di certificati valida. openssl s_client -showcerts
stampa tutti i certificati, anche quelli non utilizzati (l'ho appena verificato aggiungendo alla catena un certificato falso da 1024 bit).
Il seguente script analizza openssl s_client -showcerts
output:
#!/usr/bin/awk -f
# Match all certificates
/^-----BEGIN CERTIFICATE-----$/ { in_cert=1; }
in_cert { cert = cert $0 "\n"; }
/^-----END CERTIFICATE-----$/ { in_cert = 0; }
!in_cert && cert {
infocmd="openssl x509 -text -noout | grep -E 'Public-Key:|Subject:'";
print cert | infocmd;
close(infocmd);
cert="";
}
# Print the verification result
/Verify return code/
Quindi usa bits.awk
sopra con:
echo | openssl s_client -CApath /etc/ssl/certs \
-connect example.com:443 -showcerts 2>/dev/null | ./bits.awk
L'output è simile a:
Subject: CN=example.com
Public-Key: (2048 bit)
Subject: O=Trusted Certs Ltd., CN=Trusted CA
Public-Key: (2048 bit)
Subject: CN=Insecure
Public-Key: (1024 bit)
Verify return code: 0 (ok)
Le prime due righe sono effettivamente utilizzate per la verifica della catena, l'ultima non lo è, ma lo script non lo sa.