如何使用Java Keystore工具自动生成Keystore?没有用户互动


90

我正在尝试使用Java密钥库工具自动生成密钥库。我正在使用的命令是:

keytool -keystore keystore -alias jetty -genkey -keyalg RSA

但是在执行此命令后,要求用户按如下方式输入某些输入:

Enter keystore password:  password
What is your first and last name?  
[Unknown]:  jetty.mortbay.org  
What is the name of your organizational unit?  
[Unknown]:  Jetty  
What is the name of your organization?  
[Unknown]:  Mort Bay Consulting Pty. Ltd.  
What is the name of your City or Locality?  
[Unknown]:  
What is the name of your State or Province?  
[Unknown]:  
What is the two-letter country code for this unit?  
[Unknown]:  
Is CN=jetty.mortbay.org, OU=Jetty, O=Mort Bay Consulting Pty. Ltd.,  
L=Unknown, ST=Unknown, C=Unknown correct?  
[no]:  yes  

Enter key password for <jetty>  
(RETURN if same as keystore password):  password  

不用用户输入这些值,有没有办法在命令内或通过脚本在没有用户交互的情况下提供这些值?

谢谢


您为什么不从属性文件中读取这些信息?
Shamis Shukoor 2012年

还有更多命令行选项-阅读docs.oracle.com/javase/7/docs/technotes/tools/windows/…(包括专有名称)
Jayan

7
仅因为该示例使用本地地址,并不意味着此问题已本地化。我是英国,也有同样的问题。幸运的是,由于有人在关闭前就回答了问题,因此节省了我大量的时间来解决问题。
特雷弗·北

7
这个问题非常有用,答案得到了帮助。不明白为什么关闭它。
Jose Martinez'3

2
触发快乐的SO主持人准备在结束实际的,相关的和有用的问题时立即发出通知的另一个示例,这样他们就可以运用少量的力量使自己变得重要。这是我在Google上搜索此问题时的第一个结果,它帮助我解决了这个问题,令人难以置信的是,它只是因为在问题中引用了问询者的语言环境而被关闭。
Fam 2015年

Answers:


163

试试这个:

keytool -genkey -noprompt \
 -alias alias1 \
 -dname "CN=mqttserver.ibm.com, OU=ID, O=IBM, L=Hursley, S=Hants, C=GB" \
 -keystore keystore \
 -storepass password \
 -keypass password

1
将.p12密钥库导入到.jks中时,有没有办法指定源密钥库密码?
埃里克·卡普伦

3
@ErikAllikkeytool -importkeystore [...] -srcstorepass password_here
Guillaume Boudreau

10

不要忘记-noprompt,否则将要求您输入Yes或No


1
如果其他人也遇到同样的问题,即使使用此选项,也会出现提示:有些命令具有-srckeypass和-srcstorepass。您可以轻松地将它们混合
benez

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.