【问题标题】:How to acess jvm default KeyStore?如何访问 jvm 默认 KeyStore?
【发布时间】:2012-04-07 21:59:34
【问题描述】:

我想使用 java 密钥库来保存密钥和证书。有人可以分享一些代码来帮助我吗?

【问题讨论】:

    标签: java security jvm certificate


    【解决方案1】:

    KeyStore Javadocs 页面中应该有足够的示例代码来帮助您入门:

    至于“默认”密钥库 - 我不确定是否存在这样的东西,通常您要么从文件中显式加载它,要么可以使用以下系统属性对其进行配置:

    • javax.net.ssl.keyStore - 密钥库位置
    • javax.net.ssl.keyStorePassword - 密钥库密码
    • javax.net.ssl.keyStoreType - 密钥库类型(JKS、P12 等)

    信任存储也类似:

    • javax.net.ssl.trustStore
    • javax.net.ssl.trustStorePassword
    • javax.net.ssl.trustStoreType

    【讨论】:

    • 因此,获取 JVM 默认密钥库(即使用 javax.net.ssl.keyStore 等指定的密钥库)以自己读取这些系统属性并构建一个或您可以的唯一方法是无需额外工作即可以编程方式获取它?
    • 据我所知是的
    • 正如 Bruno 在下面的回答中提到的,在 JSSE 参考指南中,Java 没有默认的密钥库(或者有些人称之为身份库)。但是有一个默认的信任库:jssecacers,如果它存在的话。否则 ..jre/lib/security/ 中的 cacerts
    【解决方案2】:

    Java 中没有默认的密钥库。这在customization section of the JSSE Reference Guide 中有记录。

    默认的信任库是:

    jssecacerts(如果存在)。否则,cacerts

    但是,这并不意味着这些是默认 SSLContext 使用的存储,因为也可以将默认 SSLContext(从 Java 6 开始)更改为使用自定义信任管理器初始化的存储. (详情请参阅this answer)。

    【讨论】:

    • 反对者应该先尝试了解keystore和truststore的区别,并阅读官方文档中的表格(第一个链接)。
    • 您可以使用javax.net.ssl.keyStore 配置密钥库属性吗?默认SSLContext会使用它吗?请求stackoverflow.com/questions/63719397/…
    猜你喜欢
    • 2011-03-09
    • 1970-01-01
    • 2015-10-06
    • 2013-01-16
    • 2016-03-17
    • 1970-01-01
    • 2012-04-27
    • 2015-08-18
    • 1970-01-01
    相关资源
    最近更新 更多