我可以使用 keytool 创建没有密码的 Java 信任库吗?

Can I create a Java trust store without a password using keytool?

我想使用自签名证书连接到 TLS 服务器,因此我需要自定义信任库。 keytool 似乎绝对需要密码才能导入证书,但我真的不需要密码保护信任库。使用标准密码 "changeit" 可以,但我更希望完全没有密码。

请注意,这是 "trust store" 而不是 "key store",因此信任库中根本没有秘密 material:只有服务器的证书,因此客户端可以进行身份​​验证服务器是可信的。

keytool 可以吗?是否有其他工具可以从信任库中删除密码?了解对信任库进行身份验证实际上可能有它的用处,是否有任何特定原因为什么我应该使用没有密码的信任库?

我很确定如果您创建一个新的信任库,keytool 会让您输入一个空白密码,但是没有密码的问题是攻击者可以插入他们想要的任何证书并使其受到信任。这会产生恶意机会,例如 man-in-the-middle attack。您的应用程序假设它可以信任攻击者设置的 URL,因此没有什么可以阻止他们重新路由您的 Web 服务调用。

在生产环境中更改密钥库和信任库密码绝对是最佳做法。