(科普向,大神笑笑就好)

学习生成证书的过程,我们会用到 连个工具:openssl、keytool

进一步了解,我们会知道,这两个工具,单独也可以生成证书。

那他们生成的证书区别是什么?


数字证书管理工具openssl和keytool的区别

一句话:keytool没办法签发证书,而openssl能够进行签发和证书链的管理

因此,keytool 签发的所谓证书只是一种 自签名证书

自签名证书

所谓自签名就是指证书只能保证自己是完整的,没有经过非法修改的。但是无法保证这个证书是属于谁的

自签名证书有个很麻烦地方:对于每一个要链接的服务器,都要保存一个证书的验证副本。而且一旦服务器更换证书,所有客户端就需要重新部署这些副本。

也就是说,你可以用自签名证书让承认你的人承认你。但如果你做了一丁点变化,你需要让所有之前承认你的人再次承认你。

对于比较大型的应用来说,这一点是不可接受的。

所以就需要证书链进行 双向认证

而 证书链,keytool自己就没办法做了,需要用到 openssl

keytool 特点

既然 keytool 只能自签名,那要他何用?

keytool 其实是 JDK 提供给我们弄些 JDK 能认识的证书的。

因此,我们用 keytool 的目的,更多的是在这里:让Java编写的程序能用上证书。