使用一个命令创建密钥库文件

23

我有一个脚本可以为Android应用程序创建和签名密钥库文件。

它完美地工作,但我宁愿让它在没有人工干预的情况下运行。

我需要创建密钥库的内容如下:

keytool -genkey -v -keystore my-release-key.keystore
-alias alias_name -keyalg RSA -keysize 2048 -validity 10000

这促使我使用终端手动输入以下值:密钥库密码、全名、组织单位、组织名称、城市、州、县代码和密钥密码。

我需要签署应用程序的内容:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1
-keystore my-release-key.keystore my_application.apk alias_name

这促使我输入密钥库的密码。

是否有任何方式可以将这些值作为参数传递,以便完整脚本运行而不需要其他交互?

附言:我正在使用Ubuntu 14.04 LTS。

感谢您的时间:)


2
请记住,如果您将密码等作为参数输入,它们可能会被存储在您的历史记录/日志中。 - fractalwrench
@fractalwrench 感谢您提醒我,我需要找到一个解决方法。 - PeterG
环境变量是避免使用明文密码参数的经典解决方法。 - kevinarpe
1个回答

52
你可以像这样生成密钥库:
keytool -genkey -alias replserver \
    -keyalg RSA -keystore keystore.jks \
    -dname "CN=Mark Smith, OU=JavaSoft, O=Sun, L=Cupertino, S=California, C=US" \
    -storepass password -keypass password

这里有一个很好的参考资料:https://pubs.vmware.com/continuent/tungsten-replicator-3.0/deployment-ssl-stores.html。而对于jarsigner,它有一个“storepass”参数用于keystore密码。如果你将两者都放入脚本中,应该就可以了。


7
请在创建密钥库时添加参数“-deststoretype pkcs12”以使用现在推荐的行业标准“PKCS12”格式。另一个不错的选项是“-keysize 4096”。 - Stuart Cardall
如果您计划使用密钥库进行应用程序发布,请同时添加“-validity 365000”(100年)选项。您的证书必须保持有效,否则用户将无法更新。一旦您的应用程序发布后,就无法更换密钥库。 - Martin Braun

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