Kommentarer
- Detta verkar mer vara en fråga för Stack Overflow. Ser. t.ex. stackoverflow.com/questions/17143606/…
- Det vore rimligt att implementera med openssl api så mycket funktionalitet som möjligt.
Svar
Det är väldigt enkelt att göra detta med openssl.
Säg att foo.crt är din crt-fil. Sedan kommer
$ openssl x509 -in foo.crt -text -noout
att skriva ut all nödvändig information (emittent, pkey: modulus rsa och exponent, signaturalgoritm etc) i textformat.
Om du ger
$ openssl x509 -in foo.crt -text -noout > foo.txt
sparar du den tidigare informationen i foo.txt-filen.
För att svara på din fråga
Kan du berätta för mig hur kan jag extrahera den här offentliga nyckeln från den här filen som är klar för användning i hexadecimalt (byte) format?
ett sätt att göra detta är att först exportera den offentliga nyckeln och sedan konvertera den till hexformat
$ openssl x509 -in foo.crt -noout -pubkey > foo-public $ openssl rsa -noout -text -in foo-public -pubin > foo-public-hex
Nu foo-public- hex innehåller din nyckel i hex-format.
Sedan skrev du
Jag vet att i den här filen finns p, q och resten men Jag vill att den slutliga offentliga nyckeln är klar att användas.
Jag är inte säker på att jag följer dig … den privata nyckeln finns inte i .crt-filen utan i .key-fil och server skickade den inte till klienten.
Om foo.key är din privata nyckel så ger du
$openssl rsa -noout -text -in foo.key
du kommer att se den privata exponenten och primtalen p, q i hexform.