Один из наших деловых партнеров просит нас использовать сертификат TLS SHA256 для подключения к их API. Я не знаю, как создавать эти запросы. Я использовал openssl в прошлом для создания этих запросов, но он сгенерировал сертификат SSL с использованием SHa1. Могу ли я использовать openssl для создания этого запроса? Если нет, как мне создать то, о чем они просят?
Я не специалист в этой области, поэтому даже не знаю, имеет ли смысл то, что я спрашиваю.
CSR hash и cert hash не связаны
Тип хэша в запросе и в самом сертификате не связаны друг с другом.
CA проверяет подпись на CSR. Таким образом, CA может проверить, что CSR не был изменен при передаче. Это все, что делает подпись на CSR.
Не существует официального (или даже полуофициального) внутриполосного способа сообщить 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, как мы и хотели.
Если вы используете OpenSSL, вы можете просто добавить -sha256
параметр командной строки, который будет генерировать CSR с алгоритмом подписи SHA-256.