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

网友投稿 864 2022-05-30

公钥和私钥就是俗称的不对称加密方式。公钥(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-----

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

通用安全

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:华为开源镜像站新手指导(Maven篇)
下一篇:Too many open files的四种解决办法
相关文章