Es muy fácil hacer esto con openssl.
Digamos que foo.crt es su archivo crt. Luego,
$ openssl x509 -in foo.crt -text -noout
imprimirá toda la información necesaria (emisor, pkey: módulo rsa y exponente, algoritmo de firma, etc.) en formato de texto.
Si da
$ openssl x509 -in foo.crt -text -noout > foo.txt
, guardará la información anterior en el archivo foo.txt.
Para responder a su pregunta
¿Puede decirme cómo puedo extraer de este archivo la clave pública lista para usar en formato hexadecimal (byte)?
una forma de hacer esto es exportar primero la clave pública y luego convertirla a formato hexadecimal
$ openssl x509 -in foo.crt -noout -pubkey > foo-public $ openssl rsa -noout -text -in foo-public -pubin > foo-public-hex
Ahora foo-public- hex contiene tu pkey en formato hexadecimal.
Luego escribiste
Sé que en este archivo está p, q y resto pero Quiero la clave pública final lista para usar.
No estoy seguro de seguirte … la clave privada no está en el archivo .crt sino en El archivo .key y el servidor no lo enviarán al cliente.
Si foo.key es su clave privada, entonces dé
$openssl rsa -noout -text -in foo.key
verá el exponente privado y los números primos p, q en forma hexadecimal.
Comentarios
Nitpick: la línea de comandos openssl está disponible y funciona de la misma manera en todos los Unix y Windows, no solo en LInux. VMS es un poco diferente, pero no mucho.