批处理文件中如何回答keytool的密码问题

15
我需要使用keytool和jarsigner在许多文件夹中签名大量文件。
每次开始签署这些文件时,我需要删除.cert和keystore文件并重新创建它。
我在开发环境中使用虚假密码进行签名,在应用程序工作后,基础设施人员将负责签名,我无法访问实际证书。
当我输入keytool -import .......后,按回车键,会要求输入密码,我只需简单地输入它,但在批处理中,这成为一个问题。
我在Windows 7上。
我尝试过keytool -import ....... < passHerekeytool -import ....... | passHere,但它们不起作用。
我想尽可能自动化签名。
有人建议在此处以编程方式使用它,但我只需要在bat文件中使用它。
密码是批处理文件内的固定值。
有没有一种方法可以在线提供keytool密码?
是否可以在“运行时”设置环境变量以提供keytool密码?如何做到?
有没有一种在批处理中向keytool提供密码的方法?我看到了这个,但不太确定它是否与问题匹配,并且我想知道是否有更简单的方法。

1
你的要求或多或少地颠覆了keytool的整个意义。 - mcfinnigan
1
@mcfinnigan,为什么?我在开发环境中,使用虚假密钥让小程序正常工作非常头疼。等应用程序运行正常后,剩下的基础设施人员会负责真实签名。顺便问一下,有什么办法吗?谢谢。 - ZenfStor
3个回答

30

这个命令对我有效(我使用了来自jdk 1.6.0.24的keytool进行测试):

keytool -import -noprompt -file PathToCertificate -alias SomeCertificateAlias -keystore PathToKeyStore -storepass KeyStorePassword

1
我需要从PKCS12存储中创建JKS密钥库。以下方法适用于我:
echo <passphrase>| keytool.exe -importkeystore -srckeystore <source_pkcs12> -srcstoretype pkcs12 -destkeystore <jks_store> -deststoretype JKS -storepass <store_passphrase> -noprompt

这个技巧是不要在密码和 | 管道符之间留空格,否则 keytool 会将空格视为密码的一部分。

1

因为我无法访问远程机器并需要自动创建密钥库,所以我需要批量创建密钥库。我尝试了这个命令(使用-noprompt-storepass选项),但它仍然要求密码。我通过使用与其他答案相同的选项进行echo <password> | keytool ...来解决这个问题,它可以正常工作。


请问你能给我展示一下你输入的那一行的例子吗? - sMilbz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接