private void act(java.awt.event.MouseEvent evt) {
// TODO 将在此处添加您的处理代码:
String way=jTextField1.getText();//生成证书的位置
String alias=jTextField2.getText();//用户名
String keysize=jTextField3.getText();//秘钥大小
String validity=jTextField5.getText();
String storename=jTextField4.getText();
String dwname=jTextField6.getText();
String zzname=jTextField7.getText();
String city=jTextField8.getText();
String state=jTextField9.getText();
String county=jTextField10.getText();
String mpass=jTextField11.getText();
String pass=String.valueOf(jPasswordField1.getPassword());
String c="keytool -genkey -alias "+alias+" -keyalg RSA -keysize "+keysize+" -keystore "+storename+" -validity "+validity;
this.fun(way,c,pass,dwname,zzname,city,state,county,mpass);
}
String detail="";
private void fun(String way,String c,String pass,String dwname,String zzname,String city,String state,String county,String mpass){
try {
Runtime.getRuntime().exec(way+"\n"+c+"\n"+pass+"\n"+dwname+"\n"+zzname+"\n"+city+"\n"+state+"\n"+county+"\n"+"Y"+"\n"+mpass);
}
catch (IOException k) {
k.printStackTrace();
}
return;
}
这段程序主要的目的就是为了调用keytool输入事先设定好的代码,但是有bug 其实问题就是如何在cmd中批量输入命令 因为有java的朋友都可以试试看 如果运行keytool -genkey -alias A -keyalg RSA -keysize 1024 -keystore Akeystore -validity 3500后会有很多后续的选项要输入 希望大家帮帮忙
// TODO 将在此处添加您的处理代码:
String way=jTextField1.getText();//生成证书的位置
String alias=jTextField2.getText();//用户名
String keysize=jTextField3.getText();//秘钥大小
String validity=jTextField5.getText();
String storename=jTextField4.getText();
String dwname=jTextField6.getText();
String zzname=jTextField7.getText();
String city=jTextField8.getText();
String state=jTextField9.getText();
String county=jTextField10.getText();
String mpass=jTextField11.getText();
String pass=String.valueOf(jPasswordField1.getPassword());
String c="keytool -genkey -alias "+alias+" -keyalg RSA -keysize "+keysize+" -keystore "+storename+" -validity "+validity;
this.fun(way,c,pass,dwname,zzname,city,state,county,mpass);
}
String detail="";
private void fun(String way,String c,String pass,String dwname,String zzname,String city,String state,String county,String mpass){
try {
Runtime.getRuntime().exec(way+"\n"+c+"\n"+pass+"\n"+dwname+"\n"+zzname+"\n"+city+"\n"+state+"\n"+county+"\n"+"Y"+"\n"+mpass);
}
catch (IOException k) {
k.printStackTrace();
}
return;
}
这段程序主要的目的就是为了调用keytool输入事先设定好的代码,但是有bug 其实问题就是如何在cmd中批量输入命令 因为有java的朋友都可以试试看 如果运行keytool -genkey -alias A -keyalg RSA -keysize 1024 -keystore Akeystore -validity 3500后会有很多后续的选项要输入 希望大家帮帮忙
下面这段代码能生成一个完整的数字证书.你改一下就可以了.
Runtime.getRuntime().exec("cmd /c keytool -genkey -alias A -keyalg RSA -keysize 1024 -keystore Akeystore -validity 3500");
d:\
keytool -genkey -alias A -keyalg RSA -keysize 1024 -keystore Akeystore -validity 3500
我不会上传截图 否则我发一张图片估计就会比较清楚了 我点插入图片他要的是http地址。。
运行这个命令,系统提示:
Enter keystore password:yourpassword(输入密码)
What is your first and last name?
[Unknown]: your name(输入你的名字)
What is the name of your organizational unit?
[Unknown]:your organizational(输入你所在组织单位的名字)
What is the name of your organization?
[Unknown]:your organization name (输入你所在组织的名字)
What is the name of your City or Locality?
[Unknown]:your city name(输入所在城市的名字)
What is the name of your State or Province?
[Unknown]:your provice name(输入所在省份名字)
What is the two-letter country code for this unit?
[Unknown]:cn(输入国家名字)
Is CN=your name, OU=your organizaion, O="your organization name",
L=your city name, ST=your province name, C=cn correct?
[no]: yes
这个是我找到的一些资料,正如我上面所说的 keytool命令输入之后依旧需要往cmd中输入密码 名字 单位名字==也就是说我在runtime一条命令之后依旧需要输入一些选项,但我不知道怎么输入,我本来的设计是做了一个简易的代码生成器,根据我事先在窗口界面下设立的输入框,用户输入他的名字 密钥长度=信息然后生成代码段keytool -genkey -alias A -keyalg RSA -keysize 1024 -keystore Akeystore -validity 3500 再然后是手动输入之后的信息(因为是中文,相信因该谁都会用。。)但是昨天我看到一个关于ping命令的输入方法,所以我想也做一个类似的代替cmd输入的程序,不知道这样的程序能不能启动,因为就我目前所看到的一些例子往往都是ping 或者regedit之类的命令,都是一次只有一条命令输入而不相我这样要先只定证书生成的位置(就是在cmd开始的时候打个D:之类的)然后在输命令行,再按照之后的提示输入
(引用一下http://5aijava.javaeye.com/blog/123269的总结)
JDK中keytool常用命令:
-genkey 在用户主目录中创建一个默认文件".keystore",还会产生一个mykey的别名,mykey中包含用户的公钥、私钥和证书
-alias 产生别名
-keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中
-keyalg 指定密钥的算法
-validity 指定创建的证书有效期多少天
-keysize 指定密钥长度
-storepass 指定密钥库的密码
-keypass 指定别名条目的密码
-dname 指定证书拥有者信息 例如: "CN=sagely,OU=atr,O=szu,L=sz,ST=gd,C=cn"
-list 显示密钥库中的证书信息 keytool -list -v -keystore sage -storepass ....
-v 显示密钥库中的证书详细信息
-export 将别名指定的证书导出到文件 keytool -export -alias caroot -file caroot.crt
-file 参数指定导出到文件的文件名
-delete 删除密钥库中某条目 keytool -delete -alias sage -keystore sage
-keypasswd 修改密钥库中指定条目口令 keytool -keypasswd -alias sage -keypass .... -new .... -storepass ... -keystore sage
-import 将已签名数字证书导入密钥库 keytool -import -alias sage -keystore sagely -file sagely.crt
导入已签名数字证书用keytool -list -v 以后可以明显发现多了认证链长度,并且把整个CA链全部打印出来。