Me gustaría cambiar la CSR antes de transferirla a la CA sin pasar por el proceso de creación de la CSR nuevamente. Para hacerlo, necesito saber cómo calcular la firma de la CSR después de que la modifiqué. Desafortunadamente, no pude averiguar exactamente cuántos bytes de la CSR están hasheados.
Creé la CSR así:
openssl req -out certrequest.csr -new -newkey rsa:2048 -nodes -keyout private.key
Después
sed -e '1d' -e '$d' certrequest.csr | openssl enc -base64 -d > certrequest-stripped
los últimos 256 bytes (sha256WithRSAEncryption) de certrequest-stripped son signature1. Ahora me gustaría saber cuántos de los primeros bytes de certrequest despojados tengo el hash para firmar el hash usando la clave privada.
En otras palabras, estoy buscando el valor de "?" en el siguiente comando para que ambas firmas (firma1 y firma2) coincidan :
head -c <?> certrequest-stripped | openssl dgst -sha256 > hash
openssl rsautl -sign -inkey private.key -keyform PEM -in hash > signature2
Sé que el corte debe estar en algún lugar detrás del campo ASN1 para el exponente, pero dado que mi intento de aumentar el encabezado del byte a byte de CSR falló, me preocupa que me esté perdiendo algo fundamental aquí.