前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ECC证书的生成和验签

ECC证书的生成和验签

原创
作者头像
mariolu
修改2019-03-27 10:23:03
8.7K0
修改2019-03-27 10:23:03
举报
文章被收录于专栏:CDN及云技术分享

一、ECC证书是什么

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

二、ECC证书的生成:

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

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

代码语言:javascript
复制
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):

代码语言:javascript
复制
openssl x509 -noout -pubkey -in certificate.pem

3.2.私钥签名:

代码语言:javascript
复制
openssl dgst -sha1 -sign key.pem < randfile > signatrue.bin

3.3.公钥验签:

代码语言:javascript
复制
openssl dgst -sha1 -verify public_key.pem -signature signatrue.bin < randfile

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、ECC证书是什么
  • 二、ECC证书的生成:
    • 2.1、ECC证书生成命令如下:
      • 2.2、注意事项
      • 三、验证ECC证书
        • 3.1.提取ECC公钥(通用方法,同RSA):
          • 3.2.私钥签名:
            • 3.3.公钥验签:
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档