开发者社区> crazyacking> 正文

JAVA调用 keytool 生成keystore 和 cer 证书

简介: keytool是一个Java数据证书的管理工具, keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里, 包含两种数据: 密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称...
+关注继续查看

 

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);
    
    }
}
View Code

 JUnit测试用例:

import org.junit.Test;

public class ExportCertFormKeystoreTest {

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

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

demo.keystore

demo.cer

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生
ML之FE:基于load_mock_customer数据集(模拟客户)利用featuretools工具实现自动特征生成/特征衍生
59 0
证书转换-SSL证书生成:cer,jks文件 韩俊强的博客
一.生成.jks文件 资料:HTTPS-老司机手把手教你SSL证书申购-TrustAsia证书 HTTPS时代已来,手把手指导申请免费SSL证书 1、keystore的生成: 分阶段生成: keytool -genkey -alias yushan(...
5547 0
Unity与 SO 交互 ☀️| 详细讲解 怎样通过 Android Studio 生成一个.so文件 并简单调用!
📢前言 🎬SO文件生成 🍺通过Android Studio生成.so文件 🏳️‍🌈第一步:下载配置好NDK 🏳️‍🌈第二步:新建一个AS工程,新建一个JniTest.java文件 🏳️‍🌈第三步:选中JniTest.java文件,进行Make Project 🏳️‍🌈第四步:新建一个jni文件夹,生成.h头文件 🏳️‍🌈第五步:新建 一个c/c++source file文件test.c 和 Android.mk、Application.mk文件 🏳️‍🌈第六步:关联下载好的NDK包 🏳️‍🌈第七步:简单在AS端调用一下 💬总结
63 0
使用 EF Power Tool Code Frist 生成 Mysql 实体
原文:使用 EF Power Tool Code Frist 生成 Mysql 实体 1,在要生成的项目上右键   2,   3,   4,   5,  生成后的效果     已知问题: 1,在Mysql数据表中 tinyint(1) ,会被映射成为 C# bool ,这样造成一些数据信息的丢失。
732 0
SIGIR-2018-EASR workshop keynote,阿士比亚:阿里巴巴智能内容生成实践
研讨会由罗格斯大学计算机系张永锋老师、加州大学圣克鲁兹分校计算机系张奕老师、清华大学计算机系张敏老师共同主办,张永锋老师现场主持。
1628 0
使用Docker生成SSL证书
本文讲的是使用Docker生成SSL证书【编者的话】学习如何使用Docker生成SSL证书,而不是在主机上生成。
2500 0
+关注
crazyacking
PaaS技术、Kubernetes、云计算,架构设计、数据库、数据结构、Unix/Linux编程
353
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载