keytool是一个Java数据证书的管理工具,

keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,

包含两种数据:
密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
可信任的证书实体(trusted certificate entries)——只包含公钥

ailas(别名)每个keystore都关联这一个独一无二的alias,这个alias通常不区分大小写

下面给出一个java 调用 keytool 生成keystore 和 cer 证书的例子测试

 public class ExportCertFormKeystore {

     public void execCommand(String[] arstringCommand) {
for (int i = 0; i < arstringCommand.length; i++) {
System.out.print(arstringCommand[i] + " ");
}
try {
Runtime.getRuntime().exec(arstringCommand); } catch (Exception e) {
System.out.println(e.getMessage());
}
}
public void execCommand(String arstringCommand) {
try {
Runtime.getRuntime().exec(arstringCommand); } catch (Exception e) {
System.out.println(e.getMessage());
}
} /**
* 生成密钥
*/
public void genkey() {
String[] arstringCommand = new String[] { "cmd ", "/k",
"start", // cmd Shell命令 "keytool",
"-genkey", // -genkey表示生成密钥
"-validity", // -validity指定证书有效期(单位:天),这里是36000天
"36500",
"-keysize",// 指定密钥长度
"1024",
"-alias", // -alias指定别名,这里是ss
"ss",
"-keyalg", // -keyalg 指定密钥的算法 (如 RSA DSA(如果不指定默认采用DSA))
"RSA",
"-keystore", // -keystore指定存储位置,这里是d:/demo.keystore
"d:/demo.keystore",
"-dname",// CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称),
// ST=(州或省份名称), C=(单位的两字母国家代码)"
"CN=(SS), OU=(SS), O=(SS), L=(BJ), ST=(BJ), C=(CN)",
"-storepass", // 指定密钥库的密码(获取keystore信息所需的密码)
"123456",
"-keypass",// 指定别名条目的密码(私钥的密码)
"123456",
"-v"// -v 显示密钥库中的证书详细信息
};
execCommand(arstringCommand);
} /**
* 导出证书文件
*/
public void export() { String[] arstringCommand = new String[] { "cmd ", "/k",
"start", // cmd Shell命令 "keytool",
"-export", // - export指定为导出操作
"-keystore", // -keystore指定keystore文件,这里是d:/demo.keystore
"d:/demo.keystore",
"-alias", // -alias指定别名,这里是ss
"ss",
"-file",//-file指向导出路径
"d:/demo.cer",
"-storepass",// 指定密钥库的密码
"123456" };
execCommand(arstringCommand); }
}

JUnit测试用例:

 import org.junit.Test;

 public class ExportCertFormKeystoreTest {

     @Test
public void genkeyTest() {
//生成密钥测试
new ExportCertFormKeystore().genkey();
}
@Test
public void exportTest() {
//导出证书文件测试
new ExportCertFormKeystore().export();
} }

运行测试用例之后,在D盘的根目录下面会生成两个文件:

demo.keystore

demo.cer

java 调用 keytool 生成keystore 和 cer 证书的更多相关文章

  1. JAVA调用 keytool 生成keystore 和 cer 证书

    keytool是一个Java数据证书的管理工具, keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里, 包含两种数据: 密钥实体( ...

  2. java调用wkhtmltopdf生成pdf文件,美观,省事

    最近项目需要导出企业风险报告,文件格式为pdf,于是搜了一大批文章都是什么Jasper Report,iText ,flying sauser ,都尝试了一遍,感觉不是我想要的效果, 需要自己调整好多 ...

  3. windows文本转语音 通过java 调用python 生成exe可执行文件一条龙

    我已记不清 我失败过多少次 ,找过多少资料 ,但是功夫不负有心人 ,还是成功了. 所有资料和需要的语音模块的资料以放置在文章末尾, 有些是引用别人的博客的部分内容, 原文是在有道云笔记,所以没有图,请 ...

  4. java调用matlab生成exe文件

    一.Matlab生成Java Package 1.在MATLAB的Command Window输入deploytool命令,选择Library Compiler. 2.在弹出的窗口选择Java Pac ...

  5. JAVA JDK keytool 生成数字证书

    简介: 数字证书作为网络安全数据传输的凭证,web在传输时客户端(浏览器)和 服务端(服务器)先进行会话握手,在握手过程中服务端会验证客户端的是否已经在服务端做了认证,这是单向认证.如果是双向认证的话 ...

  6. keytool生成keystore

    在密钥库中生成本地数字证书:需要提供身份.加密算法.有效期等信息:keytool指令如下,产生的本地证书后缀名为:*.keystore keytool -genkeypair -keyalg RSA ...

  7. 机器学习——Java调用sklearn生成好的Logistic模型进行鸢尾花的预测

    机器学习是python语言的长处,而Java在web开发方面更具有优势,如何通过java来调用python中训练好的模型进行在线的预测呢?在java语言中去调用python构建好的模型主要有三种方法: ...

  8. java调用c++生成的动态和静态库时遇到的问题

    java.lang.UnsatisfiedLinkError: no jacob in java.library.path -Djava.library.path 关于java用jni调用 dll动态 ...

  9. [转载]java调用PageOffice生成word

    一.在开发OA办公或与文档相关的Web系统中,难免会遇到动态生成word文档的需求,为了解决工作中遇到导出word文档的需求,前一段时间上网找了一些资料,在word导出这方面有很多工具可以使用,jac ...

随机推荐

  1. jenkens其实是代码上传工具

    Jenkins 持续集成使用教程 用 jenkins 有什么好处 通过规范化来完成,简单,繁琐,浪费时间的重复工作 规范化工作,以免出现低级错误 实现随时随地任何人一键构建 ...... 安装 jen ...

  2. Phaser3 场景Scene之间的传值 -- HTML JAVASCRIPT 网页游戏开发

      PHASERJS3 一.首先当然得有至少有二个场景sceneA.js,sceneB.js 二.从场景A传值到场景B二种方法 1)通过事件this.events.emit('event key',{ ...

  3. [leetcode]三数之和

    三数之和 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答案中不可以包含重复 ...

  4. Linux(Contos7.5)环境搭建之Linux远程登录(一)

    1.下载<putty-0.70cn.zip>工具包 2.解压到适合的文件夹下

  5. Android 对话框(Dialogs)

    对话框是提示用户作出决定或输入额外信息的小窗口. 对话框不会填充屏幕,通常用于需要用户采取行动才能继续执行的模式事件. 1.对话框设计 如需了解有关如何设计对话框的信息(包括语言建议),请阅读对话框设 ...

  6. Java变量声明,实例化,问题

    1.变量在输出前必须实例化,这是因为只有声明,没有分配内存空间 在这种情况下会报错 2.实例化后,尽管没有赋值,可能是默认了吧,但也不会输出null,什么也没有输出 上面的理解可能是错的,a赋值了,就 ...

  7. ASP.NET MVC5 学习系列之表单和HTML辅助方法

    一.表单 (一)Action和Method特性 Action特性用以告知浏览器信息发往何处,因此,Action特性后面需要包含一个Url地址.这里的Url地址可以是相对的,也可以是绝对的.如下Form ...

  8. OpenFlow协议

    功能 1.0版本Openflow:控制器通过Openflow协议与交换机建立了安全通道(Sceure Channel),下发流表. 1.3版本Openflow:多控制器,多流表. 用于实现Contro ...

  9. HDU 1754 I Hate It 线段树(单点更新,成段查询)

    题目链接: hdu: http://acm.hdu.edu.cn/showproblem.php?pid=1754 题解: 单点更新,成段查询. 代码: #include<iostream> ...

  10. lintcode-436-最大正方形

    436-最大正方形 在一个二维01矩阵中找到全为1的最大正方形 样例 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 1 0 0 1 0 返回 4 标签 动态规划 爱彼迎 脸书 思路 使用 ...