本文正在参加「Java主题月 - Java Debug笔记活动」,详情查看<活动链接>
提问:使用keytool创建信任库和密钥库
我知道密钥库通常会保存私钥/公钥,而信任库通常只保存公钥(并且代表您打算与之通信的受信方列表)。好吧,这是我的第一个假设,因此,如果这不正确,那么我可能起步并不顺利...
我很想了解使用keytool时你如何/何时区分库。
所以,我创建了一个keystore,通过以下代码
keytool -import -alias bob -file bob.crt -keystore keystore.ks
这将创建我的keystore.ks文件。 我对我是否信任bob的问题回答是,但是我不清楚这是否创建了密钥库文件或信任库文件? 我是否可以将我的应用程序设置为使用该文件。以如下方式
-Djavax.net.ssl.keyStore=keystore.ks -Djavax.net.ssl.keyStorePassword=x
-Djavax.net.ssl.trustStore=keystore.ks -Djavax.net.ssl.trustStorePassword=x
并设置了System.setProperty(“ javax.net.debug”,“ ssl”),我可以看到受信任证书下的证书(但不在keystore部分下)。 我要导入的特定证书只有一个公共密钥,我打算用它通过SSL连接将数据发送到Bob(但是最好再提一个问题!)。
无论任何指正,我将不胜感激。 无论您导入什么,keytool的输出是否都是相同的,并且其公正的约定说一个是密钥库,另一个是信任库?
回答1:
密钥库文件和信任库文件之间没有区别。 两者都是专有JKS文件格式的文件。 区别在于用途:就我所知,Java仅会使用-Djavax.net.ssl.trustStore系统属性引用的库来在创建SSL连接时寻找可信任的证书。 密钥和-Djavax.net.ssl.keyStore在这方面保持一致。 但是从理论上讲,对信任库和密钥库使用一个相同的文件是可以的。