Hash CSR e hash cert não relacionados
O tipo de hash na solicitação e no certificado real não está relacionado um ao outro.
A CA verifica a assinatura no CSR. Dessa forma, a CA pode verificar se o CSR não foi alterado em trânsito. Isso é tudo que a assinatura no CSR faz.
Não existe uma maneira oficial (ou mesmo semi-oficial) dentro da banda de dizer a uma CA o hash que você deseja. Em vez disso, uma empresa de CA pode executar várias CAs, uma das quais usa exclusivamente o SHA256. E se você quiser o SHA256, envie seu CSR no site dessa CA específica do SHA256 somente. (E não no site da SHA1-CA).
O que geralmente é teorizado é algo como isto: "Se eu enviar um CSR assinado com o SHA1, meu certificado será assinado com o SHA1". Isso geralmente não é feito. ( A única autoridade de certificação que conheço costumava fazer isso há algum tempo era o Gandi.net .)
Como assinar um CSR com SHA256
Dito isto, use o -sha256
parâmetro para assinar seu CSR com SHA256 da seguinte maneira:
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 = ExampleOrganisation / CN = www.example.com "
Como verificar o tipo de hash de um CSR
E é assim que você descobre o tipo de hash do seu CSR:
$ openssl req -in www.example.com.sha256.csr -noout -text | grep Signature
Signature Algorithm: sha256WithRSAEncryption
Boa. Está usando o SHA256 exatamente como queríamos.