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

Chr*_*ltz 5 java ssl keytool truststore

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

请注意,这是“信任库”而不是“密钥库”,因此信任库中根本没有秘密材料:只有服务器的证书,因此客户端可以验证服务器是否受信任。

这可能keytool吗?还有其他工具可以从信任存储中删除密码吗?了解该认证的信任存储实际上可能有用武之地,在那里我为什么要任何特殊原因不能使用信任存储没有密码?

Ale*_*ley -5

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

在生产环境中更改默认的密钥存储和信任存储密码绝对是最佳实践。

  • `keytool` 不允许使用空白密码,至少当前版本的 keytool 不允许(撰写本文时为 Java 1.8)。 (7认同)
  • 我的立场是,由于信任存储密码在配置和/或代码中显而易见,那么信任存储很容易被处于特权地位的攻击者篡改,所以添加信任存储密码并不能真正解决问题。任何额外的安全保障。例如,大多数 *NIX 系统都有大量代表系统信任存储的 PEM 文件,并且除了文件权限之外,它们不受任何其他内容的保护。为什么我的应用程序的信任存储应该有所不同? (2认同)