2012-08-16 15 views
18

Estoy creando una aplicación de servidor en C++ que necesita aceptar un certificado que contenga una clave pública ECDSA. Debe validar el certificado y, una vez verificado, usar la clave pública contenida en el certificado para autenticar un mensaje enviado junto con el certificado. Tengo todo esto funcionando usando los pares de claves ECSDA generados por la gripe, es decir, mi código funciona bien, pero ahora necesito hacer la pieza del certificado. Y pensé que podría usar la línea de comandos de OpenSSL para crear el certificado que está instalado en el cliente (junto con la clave privada ECDSA en un archivo separado).Cómo creo un certificado ECDSA con la línea de comandos de OpenSSL

¿Alguien puede ayudar?

Muchas gracias.

Respuesta

28

Si no ha elegido una curva, puede enumerarlos con este comando:

openssl ecparam -list_curves 

Escogí sect571r1 para este ejemplo. Usar esto para generar una clave privada CE si no tiene uno ya:

openssl ecparam -out ec_key.pem -name sect571r1 -genkey 

y luego generar el certificado. Su certificado estará en cert.pem.

openssl req -new -key ec_key.pem -x509 -nodes -days 365 -out cert.pem 

Consulte también: req, ecparam

+2

'secp256k1' es probablemente el más interoperable en este momento. – jww

+8

Creo que quieres decir 'secp256r1'. Según [esta publicación] (http://openssl.6102.n7.nabble.com/P-256-curve-not-supported-in-openssl-1-0-1-tp5379p5380.html) se conoce como 'prime256v1' en OpenSSL. – oliverdm

Cuestiones relacionadas