ECC证书的生成和验签

一、ECC证书是什么

RSA的计算原理是简单的:对消息进行幂次方取模得到 加密消息。对高安全等级的要求势必增加幂次方的位数。所以这个RSA的加密位数长度是把双刃剑。它一方面增加了破译的难度,提高了安全性能;另一方面也增加了计算耗时。而ECC算法在计算复杂度远小于RSA,但是却得到RSA同样的安全等级。

二、ECC证书的生成:

ECC证书自签发:openssl可以签发ecc证书,流程如同生成私钥-》csr请求-》X509格式证书。ecc算法有多种(openssl ecparam -list_curves)。测试用例用多个参数生成多种ecc算法的证书。

2.1、ECC证书生成命令如下:

openssl ecparam -genkey -name prime256v1 -out key.pem
openssl req -new -sha256 -key key.pem -out csr.csr
openssl req -x509 -sha256 -days 365 -key key.pem -in csr.csr -out certificate.pem
openssl req -in csr.csr -text -noout | grep -i "Signature.*SHA256" && echo "All is well" || echo "This certificate will stop working in 2017! You must update OpenSSL to generate a widely-compatible certificate"

2.2、注意事项

如果遇到生成pem格式报RAND file不存在,需要在openssl.cnf(我的路径/usr/local/openssl_1.1.1/ssl/openssl.cnf)的RANDFILE = /data/mariolu/ecc/randfile。这个randfile使用urandom设备生成。命令dd if=/dev/urandom of=randfile bs=256 count=1

三、验证ECC证书

ECC的握手中主要是完成ECC证书验证(ECDSA签名用途),包括完成签名和验签。对应的指令如下:

3.1.提取ECC公钥(通用方法,同RSA):

openssl x509 -noout -pubkey -in certificate.pem

3.2.私钥签名:

openssl dgst -sha1 -sign key.pem < randfile > signatrue.bin

3.3.公钥验签:

openssl dgst -sha1 -verify public_key.pem -signature signatrue.bin < randfile

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券