什么是公钥和私钥?

公钥(Public Key)与私钥(Private Key)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。比如用公钥加密数据就必须用私钥解密,如果用私钥加密也必须用公钥解密,否则解密将不会成功。


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


阿里云证书服务对您密钥的加密算法和长度有如下要求:加密算法使用RSA,加密长度至少2048,推荐您使用2048位,SHA256摘要算法。


您可以通过如下方式创建私钥:

一. 使用OpenssL生成私钥。
OpenssL是一个强大且应用广泛的安全基础库工具,您可以在 http://www.openssl.org/source/ 来获取最新的openssl安装包(版本要>=1.0.1g)。

在命令行模式下运行:
openssl genrsa -out myprivate.pem 2048 

来生成您的私钥文件: myprivate.pem, 其中"2048"是加密长度


二. 使用Keytool导出私钥。
Keytool是JDK中自带的密钥管理工具,可以制作Keystore(jks)格式的证书文件,您可以在 http://www.oracle.com/technetwork/java/javase/downloads/index.html 中下载JDK来获取keytool工具。

因为keystore制作公钥和私钥默认是不可以导出的,所以需要您从已经创建好的 .keystore 文件中导出私钥。
从 .keystore 中导出私钥需要参考 主流数字证书都有哪些格式?中的转换方法1和4。

在导出的文件中
-----BEGIN RSA PRIVATE KEY-----
......
-----END RSA PRIVATE KEY-----
或者类似于
-----BEGIN PRIVATE KEY-----
......
-----END PRIVATE KEY-----
的即是私钥。


无论哪种方式生成密钥,都请您完善的保护好您的私钥文件,私钥文件如果丢失或者损坏,您申请对应的公钥/数字证书将无法使用。


相关文章