JDK中的keytool用于管理密钥库、证书数据库和私有密钥,用法如下:
假设用户Imply需要创建一个密钥库imply.certs,并且用别名生成一个密钥对,键入下面的命令:
imply.certs是密钥库文件名,如果不存在会自动创建;imply是要生成的密钥对的别名。
个人信息按照实际情况填写即可。这里要求输入两个密码,一个是访问密钥库的密码,一个是使用imply这个密钥对的密码;上面的命令生成了一个密钥库imply.certs,这个密钥库包含一个密钥对imply。
接着,我们希望用imply这个密钥对的公钥生成一个证书,命令如下:
imply.cer是证书文件名,这时候我们可以在资源管理器里看到,证书已经生成了:
可以双击这个证书打开来查看它的信息:
这是一个自签名(使用自己的私钥对自己的公钥进行签名)的证书,可以作为根证书。
注意,keytool似乎没有提供途径生成由另一个私钥(通常是CA部门)签名的证书,但网上有很多第三方的项目有这样的功能,比如openssl项目就有这个功能。