CSR хэш и хэш сертификата не связан
Тип хеша по запросу и по фактическому сертификату не связаны друг с другом.
CA проверяет подпись на CSR. Таким образом, CA может проверить, что CSR не был изменен при передаче. Это все, что делает подпись на CSR.
Не существует официального (или даже полуофициального) внутриполосного способа сообщить CA, какой хеш вы хотите. Вместо этого компания CA может запустить несколько CA, один из которых использует исключительно SHA256. И если вы хотите SHA256, то вы отправляете свой CSR на веб-сайте этого конкретного SHA256-only-CA. (И не на их веб-сайте SHA1-CA.)
Часто теоретизируют что-то вроде этого: «Если я отправлю CSR, подписанный с SHA1, то мой сертификат будет подписан с SHA1». Обычно это не делается. ( Единственный известный мне CA, который раньше делал это, был Gandi.net .)
Как подписать CSR с SHA256
При этом используйте -sha256
параметр, чтобы подписать CSR с SHA256 следующим образом:
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»
Как проверить тип хэша CSR
И вот как вы узнаете тип хэша вашего CSR:
$ openssl req -in www.example.com.sha256.csr -noout -text | grep Signature
Signature Algorithm: sha256WithRSAEncryption
Хороший. Он использует SHA256, как мы и хотели.