java 调用 keytool 生成keystore 和 cer 证书

摘要:
Keytool是Java数据证书的管理工具。Keytool将密钥和证书存储在一个名为keystore的文件中。在密钥库中,有两种类型的数据:密钥实体--密钥或私钥和成对的公钥(使用非对称加密)受信任的证书条目--只有公钥(别名)

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

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

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


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

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

 1 public class ExportCertFormKeystore {
 2 
 3     public void execCommand(String[] arstringCommand) {
 4         for (int i = 0; i < arstringCommand.length; i++) {
 5             System.out.print(arstringCommand[i] + " ");
 6         }
 7         try {
 8             Runtime.getRuntime().exec(arstringCommand);
 9 
10         } catch (Exception e) {
11             System.out.println(e.getMessage());
12         }
13     }
14     public void execCommand(String arstringCommand) {
15         try {
16             Runtime.getRuntime().exec(arstringCommand);
17             
18         } catch (Exception e) {
19             System.out.println(e.getMessage());
20         }
21     }
22 
23     /**
24      * 生成密钥
25      */
26     public void genkey() {
27         String[] arstringCommand = new String[] {
28 
29         "cmd ", "/k",
30                 "start", // cmd Shell命令
31 
32                 "keytool",
33                 "-genkey", // -genkey表示生成密钥
34                 "-validity", // -validity指定证书有效期(单位:天),这里是36000天
35                 "36500",
36                 "-keysize",//     指定密钥长度
37                 "1024",
38                 "-alias", // -alias指定别名,这里是ss
39                 "ss",
40                 "-keyalg", // -keyalg 指定密钥的算法 (如 RSA DSA(如果不指定默认采用DSA))
41                 "RSA",
42                 "-keystore", // -keystore指定存储位置,这里是d:/demo.keystore
43                 "d:/demo.keystore",
44                 "-dname",// CN=(名字与姓氏), OU=(组织单位名称), O=(组织名称), L=(城市或区域名称),
45                             // ST=(州或省份名称), C=(单位的两字母国家代码)"
46                 "CN=(SS), OU=(SS), O=(SS), L=(BJ), ST=(BJ), C=(CN)",
47                 "-storepass", // 指定密钥库的密码(获取keystore信息所需的密码)
48                 "123456", 
49                 "-keypass",// 指定别名条目的密码(私钥的密码)
50                 "123456", 
51                 "-v"// -v 显示密钥库中的证书详细信息
52         };
53         execCommand(arstringCommand);
54     }
55 
56     /**
57      * 导出证书文件
58      */
59     public void export() {
60 
61         String[] arstringCommand = new String[] {
62 
63         "cmd ", "/k",
64                 "start", // cmd Shell命令
65 
66                 "keytool",
67                 "-export", // - export指定为导出操作 
68                 "-keystore", // -keystore指定keystore文件,这里是d:/demo.keystore
69                 "d:/demo.keystore",
70                 "-alias", // -alias指定别名,这里是ss
71                 "ss",
72                 "-file",//-file指向导出路径
73                 "d:/demo.cer",
74                 "-storepass",// 指定密钥库的密码
75                 "123456"
76                 
77         };
78         execCommand(arstringCommand);
79     
80     }
81 }

JUnit测试用例:

 1 import org.junit.Test;
 2 
 3 public class ExportCertFormKeystoreTest {
 4 
 5     @Test
 6     public void genkeyTest() {
 7         //生成密钥测试
 8         new ExportCertFormKeystore().genkey();
 9     }
10     @Test
11     public void exportTest() {
12         //导出证书文件测试
13         new ExportCertFormKeystore().export();
14     }
15 
16 }

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

demo.keystore

demo.cer

免责声明:文章转载自《java 调用 keytool 生成keystore 和 cer 证书》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CSS3动画(性能篇)如何在远程工作中保持企业文化的凝聚力下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

java加解密算法--常见加解密算法

什么是加密算法?百度百科给出的解释如下: 数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。 简单来说,就是把某一段数据(明文),按照...

Kafka创建SSL证书

对于消息组件,如果按照最初的设计来讲,性能最高得就是RabbitMQ,因为RabbitMQ设计比较完整,而Kafka不同,Kafka最初的设计最大的坑:没有安全认证,所以最初的一些系统设计的时候为了考虑到安全性,所以采用了性能较差的ssl认证方式来进行出来,也就是说使用证书的方式来处理认证操作。 如果要想进行证书的ssl处理,那么肯定需要通过java中的...

公钥与私钥

在对称加密的时代,加密和解密用的是同一个密钥,这个密钥既用于加密,又用于解密。这样做有一个明显的缺点,如果两个人之间传输文件,两个人都要知道密钥,如果是三个人呢,五个人呢?于是就产生了非对称加密,用一个密钥进行加密(公钥),用另一个密钥进行解密(私钥)。 1.公钥私钥原理 张三有两把钥匙,一把是公钥,另一把是私钥。    张三把公钥送给他的朋友们—-李四、...

OpenSSL简单介绍及在Windows、Linux、Mac系统上的编译步骤

OpenSSL介绍:OpenSSL是一个强大的安全套接字层password库,囊括基本的password算法、经常使用的密钥和证书封装管理功能及SSL协议。并提供丰富的应用程序供測试或其他目的使用。 SSL是SecureSockets Layer(安全套接层协议)的缩写,能够在Internet上提供秘密性传输。其目标是保证两个应用间通信的保密性和可靠性,...

多git账号配置解决方案

生成密钥 ssh-keygen -t rsa -C "gitlab 用户邮箱地址" ←┘ Generating public/private rsa key pair. Enter file in which to save the key (/Users/user/.ssh/id_rsa): ←┘ Enter passphrase (empty for...

iPad及BT4下的WEP破解实验与分析 | Network Security

iPad及BT4下的WEP破解实验与分析 一、WEP协议工作原理 1WEP概述 WEP(Wired Equivalent Privacy)叫做有线等效加密,是一种可选的链路层安全机制,用来提供访问控制、数据加密和安全性检验等功能,是无线领域第一个安全协议。WEP的实现在802.11中是可选项,其MPDU格式如下所示: 2密钥派生与分发 WEP的密钥在...