Estaba jugando un poco con algoritmos de firma, tratando de determinar qué CA entre las que uso están emitiendo certificados SHA2 actualmente.
Generé un CSR especificando el hash SHA256 (usando gnutls-certtool
con hash
param y openssl req
con el -sha256
param) y el CSR muestra claramente sha256WithRSAEncryption
como el algoritmo de firma.
$ openssl req -noout -text -in test.csr
Certificate Request:
...
Signature Algorithm: sha256WithRSAEncryption
...
Sin embargo, el certificado resultante de la entidad emisora de certificados se rellena con sha1WithRSAEncryption
.
$ openssl x509 -noout -text -in test.crt
Certificate:
Data:
Version: 3 (0x2)
Serial Number: ... (...)
Signature Algorithm: sha1WithRSAEncryption
Por supuesto, generar un CSR con --hash SHA1
( sha1WithRSAEncryption
hash) hará que el certificado resultante use sha1WithRSAEncryption
(como se esperaba).
La CA indica que el hash debe especificarse como parte del pedido, no del CSR (que es algo que no puedo hacer en cualquier caso dado que estoy enviando el pedido a través de un servicio de terceros).
De ahí la pregunta. ¿Debería la CA obedecer al algoritmo hash especificado en la CSR?