【问题标题】:How are trust stores and Key stores used in SSL?SSL 中如何使用信任库和密钥库?
【发布时间】:2013-02-27 05:31:17
【问题描述】:

使用 Java 创建 SSL 连接时,我们首先使用 KeyStoresTrustStores 初始化 SSLContextjavax.net.ssl 中的 SSLContext 有一个名为 createSSLEngine() 的方法来创建 SSLEngine。因此,在为连接创建会话时,将使用创建的 SSLEngine。我的问题是在 SSL 协议的哪个点使用来自 KeyStores 和 TrustStores 的 keyManagers 和 TrustManagers?

提前致谢。

【问题讨论】:

  • 这一切都在JSSE Reference Guide 中描述得很清楚。你在哪方面有问题?
  • 我想知道SSLEngine中是否实现了Trust stores的使用?如果有怎么办?我问这个问题是因为当我从客户端获取证书链时,链中的根证书必须在 Truststore 中才能建立 SSL 连接。我不确定这是否在 Java 的 SSL 实现中实现。
  • 是的。 SSLEngine 执行 SSL 握手,通过 TrustManager 验证对等证书,并使包含对等证书的 SSLSession 对应用程序可用。这就是 SSLEngine 是从 SSLContext 创建的原因,它具有 KeyManagers 和 TrustManagers。

标签: security ssl keystore truststore sslengine


【解决方案1】:

在 SSL 握手期间建立相互信任和真实性并创建 SSL 会话。

关于您的发送问题,如果证书链中的至少一个证书是受信任的,则标准 JSSE 信任管理器会认为该证书链是受信任的。它不必是根证书。如果您绝对确定必须建立根证书的有效性和真实性,则应实现自定义 TrustManager 并使用它而不是默认实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 2017-12-11
    • 2010-09-24
    • 2018-11-11
    • 2019-11-28
    • 1970-01-01
    • 2015-12-02
    相关资源
    最近更新 更多