【问题标题】:Newbie keytool command -- how to update cert already added to keystore?新手 keytool 命令——如何更新已添加到密钥库的证书?
【发布时间】:2013-12-13 17:07:38
【问题描述】:

我有一个用于我的 linux 电子邮件服务器 exim 的自签名证书。为了让我的 Java 函数能够通过 GlassFish 访问这个电子邮件服务器,我最初发布了:

# keytool -importcert -v -noprompt -alias mail.mycompany.com -file /path/to/mail.mycompany.com.der -keystore /path/to/config/cacerts.jks -storepass changeit
Certificate was added to keystore

这工作正常,直到证书过期。我必须创建一个新的自签名证书,现在 Java 给出了错误PKIX path validation failed … path does not chain with any of the trust anchors

为了解决这个问题,我从新的 exim 证书中派生了一个新的 mail.mycompany.com.der 文件(如最初所做的那样)。但是当我发出上述 keytool 命令时(如最初所做的那样),它给出了错误Certificate not imported, alias <mail.mycompany.com> already exists.

我认为问题在于我不能使用相同的 keytool 命令。我需要使用不同的证书,它不会将证书添加到密钥库中,而是使用较新版本更新已经存在的证书。任何人都可以为我指出该命令的正确方向吗?

顺便说一句,我是否缺少一些自动化流程?也就是说,证书一直过期......这是否意味着 IT 管理员需要始终使用这样的代码手动更新密钥库和新证书?或者,这可以通过某种方式实现自动化吗?

【问题讨论】:

    标签: java keytool


    【解决方案1】:

    可能最简单的方法是让 keytool 删除原始证书并生成具有相同信息的新证书。解决这个问题的一个好方法是安装 EJBCA。它有点笨拙,但 EJBCA 是一个用 Java 编写的免费开源 CA 服务器。您可以创建自己的虚假 CA 证书、用户证书、服务器证书等,它们都具有信任链。另外,在证书过期后重新颁发证书时,它可以快速为您生成新的 JKS 文件。

    删除:

    keytool -delete -keystore myfile.jks -alias 'alias_from_keytool_-list'

    【讨论】:

    • 非常感谢 Mike,这真的很有帮助!
    猜你喜欢
    • 2014-03-01
    • 2014-07-09
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    相关资源
    最近更新 更多