【产品技术】密钥小课堂:打造自己的数字签名
公钥和私钥就是俗称的不对称加密方式。公钥(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-----
附注 无论通过哪种方式生成密钥,我们都需完善地保管好私钥文件,注意私钥文件一旦丢失或者损坏,申请的对应的公钥、及证书都将无法使用。
- 点赞
- 收藏
- 关注作者
评论(0)