【问题标题】:How does Javas KeyManagerFactory.init work with multiple keysJavas KeyManagerFactory.init 如何与多个键一起工作
【发布时间】:2017-01-20 14:04:46
【问题描述】:

我在创建 SSLContext 时遇到了这个 Java sn-p。我想知道init 调用,其中指定了keyPass。如果 KeyStore 包含多个具有不同别名和不同密码的证书怎么办?

val keyStore = KeyStore.getInstance("jks")
keyStore.load(inputStream, "storePass")

val keyManagerFactory = KeyManagerFactory.getInstance("SunX509")
keyManagerFactory.init(keyStore, keyPass?)

val keyManagers = keyManagerFactory.getKeyManagers

val sslContext = SSLContext.getInstance("TLS")
sslContext.init(keyManagers, null, new SecureRandom)

如果keyStore 包含 cert1(别名:1,密码:foo)和 cert2(别名:2,密码:bar),您将如何重写代码?也许我误解了一两件事:)

【问题讨论】:

    标签: java keystore


    【解决方案1】:

    在仔细检查文档并进行一些谷歌搜索之后,似乎维护多个密钥库并将它们包装在定制的复合密钥管理器中可能会起作用,as the author of this blog post is doing

    【讨论】:

    • 不确定:根据javadoc:密码 - 恢复密钥库中密钥的密码
    • 这是两个不同的密码。
    • 我的立场是正确的,你是对的,我的方法在这里越界了。 Keystore#load 方法采用存储密码,KMF#init 采用密钥密码。
    • 那么将所有密钥都放在同一个密钥库中不起作用? (如果他们有不同的密码。如果密码相同,它当然可以工作)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 2020-02-05
    • 1970-01-01
    • 2023-02-02
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多