El hash CSR y el hash cert no están relacionados
El tipo de hash en la solicitud y en el certificado real no están relacionados entre sí.
La CA verifica la firma en la CSR. De esa manera, la CA puede verificar que la CSR no se modificó en tránsito. Eso es todo lo que hace la firma en la CSR.
No hay una forma oficial (o incluso semioficial) en la banda de decirle a un CA qué hash quieres. En cambio, una empresa de CA puede ejecutar varias CA, una de las cuales utiliza exclusivamente SHA256. Y si desea SHA256, entonces envíe su CSR en el sitio web de ese SHA256-only-CA específico. (Y no en el sitio web de su SHA1-CA).
Lo que a menudo se teoriza es algo como esto: "Si presento un CSR firmado con SHA1, entonces mi certificado se firmará con SHA1". Esto no suele hacerse. ( La única CA que conozco que solía hacer esto durante algún tiempo fue Gandi.net ).
Cómo firmar una CSR con SHA256
Dicho esto, use el -sha256
parámetro para firmar su CSR con SHA256 de la siguiente manera:
openssl req -new -newkey rsa: 2048 -nodes -sha256 -out www.example.com.sha256.csr -keyout www.example.com.key -subj "/ C = US / ST = ExampleState / L = ExampleLocation / O = Ejemplo de organización / CN = www.example.com "
Cómo comprobar el tipo de hash de una CSR
Y así es como se descubre el tipo de hash de su CSR:
$ openssl req -in www.example.com.sha256.csr -noout -text | grep Signature
Signature Algorithm: sha256WithRSAEncryption
Bueno. Está utilizando SHA256 tal como queríamos.