gpt4 book ai didi

java - 信任存储与 key 存储 - 使用 keytool 创建

转载 作者:bug小助手 更新时间:2023-10-28 10:41:02 25 4
gpt4 key购买 nike

我了解 keystore 通常会保存私钥/公钥,而信任库仅保存公钥(并代表您打算与之通信的受信任方的列表)。嗯,这是我的第一个假设,所以如果这不正确,我可能还没有很好地开始......

我有兴趣了解使用 keytool 时如何/何时区分商店。

到目前为止,我已经使用

创建了一个 keystore
keytool -import -alias bob -file bob.crt -keystore keystore.ks

创建我的 keystore.ks 文件。我对我是否信任 bob 的问题回答 yes,但我不清楚这是否创建了 keystore 文件或信任库文件?我可以将我的应用程序设置为使用该文件。

-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 的输出是否都相同,并且只是约定一个是 keystore ,另一个是信任库?使用SSL等有什么关系?

最佳答案

术语确实有点困惑,但是 javax.net.ssl.keyStorejavax.net.ssl.trustStore 都用于指定要使用的 keystore , 用于两个不同的目的。 keystore 有多种格式,甚至不一定是文件(参见 this question),keytool 只是对它们执行各种操作的工具(导入/导出/列表/...)。

javax.net.ssl.keyStorejavax.net.ssl.trustStore 参数是用于构建 KeyManager 的默认参数和 TrustManagers(分别),然后用于构建一个 SSLContext,它本质上包含通过 SSLSocketFactory 建立 SSL/TLS 连接时要使用的 SSL/TLS 设置SSLEngine。这些系统属性只是默认值的来源,然后由 SSLContext.getDefault() 使用,例如 SSLSocketFactory.getDefault() 本身使用。 (如果您不想将默认值和特定的 SSLContexts 用于给定目的,所有这些都可以通过 API 在许多地方进行自定义。)

KeyManagerTrustManager 之间的区别(以及 javax.net.ssl.keyStorejavax.net 之间的区别。 ssl.trustStore)如下(引自JSSE ref guide):

TrustManager: Determines whether the remote authentication credentials (and thus the connection) should be trusted.

KeyManager: Determines which authentication credentials to send to the remote host.

(其他参数可用,它们的默认值在 JSSE ref guide 中描述。请注意,虽然信任库有默认值,但 keystore 没有默认值。)

本质上,javax.net.ssl.keyStore 中的 keystore 旨在包含您的私钥和证书,而 javax.net.ssl.trustStore 意味着包含您愿意在远程方出示其证书时信任的 CA 证书。在某些情况下,它们可以是同一个存储,但使用不同的存储通常是更好的做法(尤其是当它们基于文件时)。

关于java - 信任存储与 key 存储 - 使用 keytool 创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6340918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com