Vorrei cambiare il CSR prima che venga trasferito alla CA senza passare nuovamente attraverso il processo di creazione della CSR. Per farlo ho bisogno di sapere come calcolare la firma della CSR dopo che l'ho modificata. Purtroppo non sono riuscito a scoprire esattamente quanti byte del CSR sono stati sottoposti a hash.
Ho creato la CSR in questo modo:
openssl req -out certrequest.csr -new -newkey rsa:2048 -nodes -keyout private.key
Dopo
sed -e '1d' -e '$d' certrequest.csr | openssl enc -base64 -d > certrequest-stripped
gli ultimi 256 byte (sha256WithRSAEncryption) di certrequest-stripped sono signature1. Ora mi piacerebbe sapere quanti dei primi byte di certrequest-stripped ho l'hash per firmare l'hash usando la chiave privata.
In altre parole, sto cercando il valore di "?" nel seguente comando in modo che entrambe le firme (firma1 e firma2) corrispondano :
head -c <?> certrequest-stripped | openssl dgst -sha256 > hash
openssl rsautl -sign -inkey private.key -keyform PEM -in hash > signature2
So che il taglio deve essere da qualche parte dietro il campo ASN1 per l'esponente, ma dal momento che il mio tentativo di aumentare la testa del CSR byte per byte fallito, sono preoccupato che mi manca qualcosa di fondamentale qui.