Si tiene un servidor de acceso público, use enlace . De lo contrario, vea a continuación un script.
No tengo conocimiento de una opción s_client
que enumera el tamaño de clave para todos los certificados en una cadena. Podría usar la opción -showcerts
para obtener todos los certificados proporcionados por el servidor y verificar cada uno de los certificados proporcionados y asumir que los certificados en su almacén de confianza no usan claves pequeñas.
Tenga en cuenta que algunos servidores pueden estar mal configurados para suministrar certificados en la cadena que no se utilizan (y son incorrectos). Recuerdo haber visto un sitio que se conectaría bien en Firefox, pero fallaría en Java. Resultó que se había incluido en la cadena una antigua CA caducada junto con los otros certificados. Firefox en este caso simplemente ignoraría ese certificado, ya que encontró una cadena de certificados válida. openssl s_client -showcerts
imprime todos los certificados, incluso los que no están en uso (acabo de verificar que al agregar un certificado falso de 1024 bits a la cadena).
El siguiente script analiza 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/
Luego use el bits.awk
anterior con:
echo | openssl s_client -CApath /etc/ssl/certs \
-connect example.com:443 -showcerts 2>/dev/null | ./bits.awk
La salida se ve como:
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)
Las dos primeras líneas se utilizan realmente para la verificación de la cadena, la última no, pero el script no lo sabe.