博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java生成RAS证书文件
阅读量:7278 次
发布时间:2019-06-30

本文共 2713 字,大约阅读时间需要 9 分钟。

hot3.png

/**
 * Demo of a generation of a X509 Self Signed Certificate using <a
 * href="http://www.bouncycastle.org/">Bouncy Castle</a> library. 您的姓名是什么?
 *
 * commonName (CN)
 *
 * 运行代理的服务器的全限定名称  *
 * mqserver.sun.com
 *
 * 您所在部门的名称是什么?
 *
 * organizationalUnit (OU)
 *
 * 部门或分部的名称  *
 * purchasing
 *
 * 您的工作单位的名称是什么?
 *
 * organizationName (ON)
 *
 * 大型工作单位的名称,如公司或政府机构  *
 * My Company, Inc.
 *
 * 您所在城市或地区的名称是什么?
 *
 * localityName (L)
 *
 * 城市或地区的名称  *
 * San Francisco
 *
 * 您所在州或省的名称是什么?
 *
 * stateName (ST)
 *
 * 州或省的全称,不要使用缩写  *
 * California
 *
 * 此单位的两字母国家/地区代码是什么?
 *
 * country (C)
 *
 * 标准两字母国家/地区代码  *
 * US
 *
 * <a href="mailto:cyrille@cyrilleleclerc.com">Cyrille Le Clerc</a>
 */
public class SelfSignedX509CertificateGeneratorDemo {
    static {
        // adds the Bouncy castle provider to java security
        Security.addProvider(new BouncyCastleProvider());
    }
    /**
     * <p>
     * Generate a self signed X509 certificate .
     * </p>
     * <p>
     * TODO : do the same with
     * { org.bouncycastle.cert.X509v1CertificateBuilder} instead of the
     * deprecated { org.bouncycastle.x509.X509V1CertificateGenerator}.
     * </p>
     */
    @SuppressWarnings("deprecation")
    static void generateSelfSignedX509Certificate() throws NoSuchAlgorithmException, NoSuchProviderException, CertificateEncodingException,
            SignatureException, InvalidKeyException, IOException {
        // yesterday
        Date validityBeginDate = new Date(System.currentTimeMillis() - 24 * 60 * 60 * 1000);
        // in 2 years
        Date validityEndDate = new Date(System.currentTimeMillis() + 2 * 365 * 24 * 60 * 60 * 1000);
        // GENERATE THE PUBLIC/PRIVATE RSA KEY PAIR
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA", "BC");
        keyPairGenerator.initialize(1024, new SecureRandom());
        KeyPair keyPair = keyPairGenerator.generateKeyPair();
        // GENERATE THE X509 CERTIFICATE
        X509V1CertificateGenerator certGen = new X509V1CertificateGenerator();
        X500Principal dnName = new X500Principal("CN=John Doe");
        certGen.setSerialNumber(BigInteger.valueOf(System.currentTimeMillis()));
        certGen.setSubjectDN(dnName);
        certGen.setIssuerDN(dnName); // use the same
        certGen.setNotBefore(validityBeginDate);
        certGen.setNotAfter(validityEndDate);
        certGen.setPublicKey(keyPair.getPublic());
        certGen.setSignatureAlgorithm("SHA256WithRSAEncryption");
        X509Certificate cert = certGen.generate(keyPair.getPrivate(), "BC");
        System.out.println();
        PEMWriter pemWriter = new PEMWriter(new PrintWriter(System.out));
        pemWriter.writeObject(cert);
        pemWriter.flush();
        System.out.println();
        System.out.println();
        pemWriter.writeObject(keyPair.getPrivate());
        pemWriter.flush();
        System.out.println();
    }
    public static void main(String[] args) {
        try {
            generateSelfSignedX509Certificate();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

转载于:https://my.oschina.net/moonsun/blog/148314

你可能感兴趣的文章
2.2. mysqldump - a database backup program
查看>>
01-老马jQuery教程-jQuery入口函数及选择器
查看>>
分割工具——按字段属性
查看>>
c++ 11 移动语义、std::move 左值、右值、将亡值、纯右值、右值引用
查看>>
第 2 章 Spring Boot
查看>>
搭建Java环境JDK,和运行环境JRE
查看>>
Thinking in Java 4 : 一切都是对象
查看>>
iOS - UICollectionViewController
查看>>
Facebook 宕机事故系服务器配置问题导致
查看>>
【RAC】11g R2 RAC新特性之Highly Available IP(HAIP)
查看>>
Mysql 5.7 Gtid内部学习(三) Gtid和Last_commt/sequnce_number的生成时机
查看>>
【MySQL】漫谈死锁
查看>>
wait for stopper event to be increased
查看>>
上海往事之找Free机会一周
查看>>
[20160302]关于FULL_HASH_VALUE.txt
查看>>
奇葩念头:微信能取代WP应用吗
查看>>
Cordova插件,自动根据包名替换R资源描述
查看>>
Python探索记(12)——元组Tuple
查看>>
wcf系列学习5天速成——第五天 服务托管
查看>>
对于超大型SQL SERVER数据库执行DBCC操作
查看>>