如何使用OpenSSL命令行创建ECDSA证书

Sha*_*unB 20 openssl certificate

我正在构建一个C++服务器应用程序,需要接受包含ECDSA公钥的证书.它必须验证证书,并在验证时使用证书中包含的公钥来验证与证书一起发送的消息.

我使用ECDSA密钥对即时工作 - 即我的代码运行良好 - 但现在我需要做证书片.

我想我可以使用OpenSSL的命令行来创建安装在客户端上的证书(以及单独文件中的ECDSA私钥).

有人可以帮忙吗?

ind*_*div 34

如果您没有选择曲线,可以使用以下命令列出它们:

openssl ecparam -list_curves
Run Code Online (Sandbox Code Playgroud)

我选择secp256r1了这个例子.如果您还没有EC私钥,请使用此私钥生成:

openssl ecparam -out ec_key.pem -name secp256r1 -genkey 
Run Code Online (Sandbox Code Playgroud)

然后生成证书.你的证书将在cert.pem.

openssl req -new -key ec_key.pem -x509 -nodes -days 365 -out cert.pem
Run Code Online (Sandbox Code Playgroud)

另见: req,ecparam

  • 我想你的意思是'secp256r1`.根据[这篇文章](http://openssl.6102.n7.nabble.com/P-256-curve-not-supported-in-openssl-1-0-1-tp5379p5380.html),它被称为OpenSSL中的`prime256v1`. (10认同)
  • 一行:`openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -x509 -nodes -days 365 -out cert.pem -keyout cert.pem` (3认同)
  • `secp256k1`可能是目前最具互操作性的. (2认同)
  • 修复了一行:`openssl req -new -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -x509 -nodes -days 365 -out cert.pem -keyout key.pem` (2认同)