【产品技术】密钥小课堂:打造自己的数字签名

举报
懒宅君 发表于 2020/06/29 15:31:11 2020/06/29
【摘要】 公钥和私钥就是俗称的不对称加密方式。公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,则必须用另一个...

公钥和私钥就是俗称的不对称加密方式公钥(Public Key)私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。


通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,则必须用另一个密钥才能解密。比如用公钥加密的数据就必须用私钥才能解密,如果用私钥进行加密也必须用公钥才能解密,否则将无法成功解密。


由于私钥的非公开属性,建议在证书申请过程中,由客户自己生成私钥,并妥善保管,避免因私钥丢失导致网站信息泄露等恶性事件的发生。

数字证书采用公钥体制,即利用一对互相匹配的密钥对进行加密、解密。每个用户自己设定一把特定的仅为本人所知的私有密钥(私钥),用它进行解密和签名;同时设定一把公共密钥(公钥)并由本人公开,为一组用户所共享,用于加密和验证签名。


由于密钥仅为本人所有,这样就产生了别人无法生成的文件,也就形成了数字签名。


数字证书是一个经证书授权中心(CA)数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书还有一个重要的特征就是只在特定的时间段内有效。


私有密钥的加密算法和长度有如下要求:

·       加密算法使用RSA算法

·       加密长度至少2048位

建议使用2048位加密长度的SHA256摘要算法。


可以通过以下两种方式创建您的私钥:

·       使用OpenSSL工具生成私钥

OpenSSL是一个强大且应用广泛的安全基础库工具,可以从“http://www.openssl.org/source/”下载最新的OpenSSL工具安装包。


要求OpenSSL版本必须是1.0.1g或以上版本。

安装OpenSSL工具后,在命令行模式下运行openssl genrsa -out myprivate.pem 2048即可生成私钥文件。

o   “myprivate.pem”私钥文件。

o   “2048”指定加密长度。

·       使用Keytool工具导出私钥

Keytool工具是JDK中自带的密钥管理工具,可以制作Keystore(jks)格式的证书文件,可以从“http://www.oracle.com/technetwork/java/javase/downloads/index.html”下载JDK工具包来获取Keytool工具。


由于使用Keytool工具制作的公钥和私钥默认是不可以导出的,需要从已经创建好的“.keystore”文件中导出私钥。

在导出的文件中,以下部分的内容即是私钥:

-----BEGIN RSA PRIVATE KEY-----

......

-----END RSA PRIVATE KEY-----

或者

-----BEGIN PRIVATE KEY-----

......

-----END PRIVATE KEY-----


附注 无论通过哪种方式生成密钥,我们都需完善地保管好私钥文件,注意私钥文件一旦丢失或者损坏,申请的对应的公钥、及证书都将无法使用。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。