【问题标题】:Is there a way to make keytool not prompt for password for the key?有没有办法让 keytool 不提示输入密钥的密码?
【发布时间】:2018-01-18 19:00:17
【问题描述】:

我正在尝试生成密钥库。我已经为密钥库设置了密码,但我试图不为密钥设置密码。

keytool -storepass "$password" -keystore ${PFX_broker}server.keystore.jks -alias $brokerCertAlias -validity $validity -genkey -dname "CN=$CN" -noprompt;

上面的命令将提示我输入一个密钥密码,当我按 Enter 时,该密码默认为商店通行证。

是否可以完全跳过为密钥设置密码而没有提示?

【问题讨论】:

  • 对于大多数密钥库,您必须有一个密码来保护(包装)密钥,但是您可以通过在命令行中指定它来跳过提示符 -keypass 就像您使用存储密码一样。这两者都具有“功能”,您系统上的其他用户/进程可以使用ps 或类似名称或/proc//cmd 看到您的密码。

标签: keytool jks


【解决方案1】:

有参数指定key和存储密码

-keypass <your-pass>-storepass <your-pass>

例如

keytool -storepass pass123 -keypass pass123 -keystore keystore.jks -alias myalias -validity 99 -genkey -noprompt

keytool reference

【讨论】:

    【解决方案2】:

    我知道这是一个老问题,但我面临同样的问题并添加 -keypass password 并且因为我也有商店源,所以我正在添加 -srcstorepass password 对我有用。试试这个:

    keytool -storepass "$password" -keystore ${PFX_broker}server.keystore.jks -alias $brokerCertAlias -validity $validity -genkey -dname "CN=$CN" -noprompt -keypass "$password" -srcstorepass "$password"
    

    但在您的情况下可能会有所不同。

    【讨论】:

    • 确实,-storepass secret-srcstorepass secret 选项可以解决问题。 keytool -importkeystore -h 显示的选项 -srckeypass-destkeypass 根本没有效果(至少在 Java 11 中)。感谢分享!
    【解决方案3】:

    似乎 keytool 总是需要存储和密钥的密码。没有办法解决。

    【讨论】:

    • 始终需要密码,但可以避免提示,因为其他答案提到。