项目中要用到安全证书,生成CSR测试。

不多说,直接上干货。

1、什么是数字证书,这篇文章讲的不错,通俗易懂,简单明了。

http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html

2、使用keytool自带命令生成相关证书。

http://www.cnblogs.com/SirSmith/p/4996392.html

这些是网上的一些例子,使用后,自己可以跟着做一遍。

3、用java来生成csr数据,格式如下

-----BEGIN NEW CERTIFICATE REQUEST-----

MIICzDCCAbQCAQAwVzEOMAwGA1UEBhMFY2hpYW4xCzAJBgNVBAgTAmZ6MQswCQYDVQQHEwJmejEN

MAsGA1UEChMEeHlzajENMAsGA1UECxMEeHlzajENMAsGA1UEAxMEY2hlbjCCASIwDQYJKoZIhvcN

AQEBBQADggEPADCCAQoCggEBAIxCstBDP+snnSRNK9lRKippsvii4wD/d/MZnx2oj0xG+9wIkQ+f

4lHJ8WsmtvoYGTgQSWXX/eEOusDzBN7ZcQpPqXDBEYwcIxaM1Mz6gm5JnpnrGKWKXSSbP9M2Uh/I

J6zjAJT0eyhL5kJg2rP/wxbUBqDTqwgU8W6bwGmDQg6jaJQU9YY7jyLv1dMH1QKx07RnfQtbzgca

yVPjrvPAY0kdppF5cqYnS0jNptbK6SI1iaaELVZRYbnn/eXtUbLntUP5iyRsjyCBYjdTvEBgOg11

uK/B39q0on1LSOAnO1tSZC8ZOOhaxiwxqfPDpYb/wugPAB/vp6S7SFWa5DZWPusCAwEAAaAwMC4G

CSqGSIb3DQEJDjEhMB8wHQYDVR0OBBYEFAt7FLUGJBiuehAF3LiACcoHztzHMA0GCSqGSIb3DQEB

CwUAA4IBAQB4sp8UyWfAv1cdWYY4JqcPOAGqb3IapM8GTTMr6pROXsf3mRMSNhCHoBC0ykPfa5mL

PXlUR2m5zYcXuTBR0CoMR/wtUIsjikzbNThfnKX1DwtvrjxZmq9uaewEfDrez7MizteOMnIHcRFd

E/s4GxSNtjTgf5hRuxN08LG40m7QMr2Mqhl6yCWw4Q9fm+qrKASX9AyMe+r49zarOqMVOpATx0Tq

UCbl+wTekjny6c+N9GgbQlrtvlU0/QxypBkowosdKeuWFvS01wB8SbdOZorOvns3RBO9cRJc3Z8m

vrX/GC9wcrrCM/7MewpDJOzEcq1ycGLobU7I60BLF3jAH00R

-----END NEW CERTIFICATE REQUEST-----

相关代码

import java.io.ByteArrayOutputStream;

import java.io.IOException;

import java.io.PrintStream;

import java.security.InvalidKeyException;

import java.security.KeyPair;

import java.security.KeyPairGenerator;

import java.security.NoSuchAlgorithmException;

import java.security.PrivateKey;

import java.security.PublicKey;

import java.security.SecureRandom;

import java.security.Security;

import java.security.Signature;

import java.security.SignatureException;

import java.security.cert.CertificateException;

import org.bouncycastle.asn1.x500.X500Name;

import org.bouncycastle.jcajce.provider.keystore.PKCS12;

import org.bouncycastle.jce.provider.BouncyCastleProvider;

public class StoreUtils {

public KeyPair kp = null;

public String password = "";

public  String generateCSR(String alg,int size,String cn) throws NoSuchAlgorithmException, InvalidKeyException, IOException, CertificateException, SignatureException{

Security.addProvider(new BouncyCastleProvider());

String strCSR = "";

String sigAlg = "SHA1WithRSA";

try {

if (alg == null || alg.length() <= 0) {

sigAlg = "SHA1WithRSA";

} else {

sigAlg = alg;

int algSize = 2048;

if (size != 0) {

algSize = size;

}

KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");

kpg.initialize(algSize, new SecureRandom());

this.kp = kpg.generateKeyPair();

PublicKey publicKey = this.kp.getPublic();

PrivateKey privateKey = this.kp.getPrivate();

sun.security.pkcs.PKCS10 pkcs10 = new sun.security.pkcs.PKCS10(

publicKey);

//PKCS10 pkcs10 = new PKCS10(publicKey);

Signature signature = Signature.getInstance(sigAlg);

signature.initSign(privateKey);

String CN = "defaultUserName";

if (cn != null && cn.length() > 0) {

CN = cn;

}

String DN = "CN=" + CN + ",C= CN";

@SuppressWarnings("restriction")

sun.security.x509.X500Name x500Name = new sun.security.x509.X500Name(

DN);

pkcs10.encodeAndSign(x500Name, signature);

ByteArrayOutputStream baos = new ByteArrayOutputStream();

PrintStream ps = new PrintStream(baos);

pkcs10.print(ps);

String strPEMCSR = baos.toString();

strCSR = strPEMCSR.replaceAll("\r|\n", "");

strCSR = strCSR.replaceAll(

"-----BEGIN NEW CERTIFICATE REQUEST-----", "");

strCSR = strCSR.replaceAll(

"-----END NEW CERTIFICATE REQUEST-----", "");

return strCSR;

}

} catch (Exception e) {

System.out.println(e.getMessage());

// TODO: handle exception

}

return strCSR;

}

public static void main(String[] args) throws InvalidKeyException, NoSuchAlgorithmException, CertificateException, SignatureException, IOException {

StoreUtils StoreUtils = new StoreUtils();

System.out.println(StoreUtils.generateCSR("SHA1WithRSA",0,""));

}

}

用到的包 bcprov-ext-jdk15on-1.49.jar

java csr 证书_使用JAVA自带security,创建测试用的CSR证书请求文件相关推荐

  1. java生成电子证书_关于Java:使用Bouncycastle生成数字证书

    经过研究,我确定,为了在Java中以编程方式生成和签署证书,我需要bouncycastle库. 不幸的是,图书馆似乎在最近的某个时候进行了大修. 现在不推荐使用它们的很多类,而我可以找到的所有简单易懂 ...

  2. java获取长度_获取java长度

    Java获取本机MAC地址 为什么写这个呢?因为前几天看见网上有采用windows命令获取局域网和广域网MAC,查了查可以直接用JDK的方法. MAC可用于局域网验证,提高安全性. import ja ...

  3. java 分割一个_分割java

    [java]分割字符串工具类,霸气 jdk自带的 java 分割字符串,分割string,可以根据多个条件去分割.比如逗号,分号,逗号或者分号. 比如一个字符串:"abc,def;gh,ij ...

  4. java 字符串包_包java字符串

    Java核心技术卷I基础知识3.6.3 不可变字符串 3.6.3 不可变字符串 String类没有提供用于修改字符串的方法.如果希望将greeting的内容修改为"Help!",不 ...

  5. java path类_基于java Files类和Paths类的用法(详解)

    Java7中文件IO发生了很大的变化,专门引入了很多新的类: import java.nio.file.DirectoryStream; import java.nio.file.FileSystem ...

  6. java开发课程表_展示Java开发人员课程包

    java开发课程表 60个小时以上的课程,5门所有级别的课程:成为Java编程专家 嘿,怪胎, 本周,在我们的JCG Deals商店中 ,我们提供了一个极端的报价 . 我们提供的Java Develo ...

  7. java处理注释_如何处理Java注释

    java处理注释 Java 8的一项很酷的新功能是对lambda表达式的支持. Lambda表达式在很大程度上依赖于FunctionalInterface 注释 . 在本文中,我们将介绍注释以及如何处 ...

  8. java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)

    import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...

  9. java进度条_自学java你需要知道的,适合编程小白

    1. java学习网站 之前在很多学习网站上学习过Java,踩过很多坑,今天给大家推荐一个比较好用的Java学习网站,希望大家能少踩坑 Java教程 | 项目实践一站式java学习 这个网站的针对性强 ...

最新文章

  1. mysql实现pr曲线_ROC 曲线与 PR 曲线
  2. 在centos7中如何搭建局域网yum源仓库
  3. qt系统托盘显示、无主窗体
  4. 如何C#中实现在TreeView查找某一节点
  5. android中momery检测,Android性能优化第(二)篇---Memory Monitor检测内存泄露
  6. 个人自媒体博客整站模板
  7. c# word 增加段落_你知道制作简历时的9个Word技巧吗?
  8. Facebook、亚马逊等巨头是如何建造自己的数据库的?
  9. android+数据库类型转换,ANDROID数据库错误:不兼容的类型:INT不能转换到CursorFactory...
  10. 【CVPR2020】计算机视觉与模式识别会议论文完全清单_Part2
  11. WindowsX64下pyinstaller打包code
  12. 我与北窗青年的2020丶
  13. 【机器人学习】六足机器人的步态分析与稳定行走(分析报告+matlab代码)
  14. 在线apt-get安装mysql_apt-get安装mysql
  15. 中级微观经济学:Chap 32 交换
  16. 十大开源Web应用安全测试工具
  17. 英语中what的用法
  18. Onenote 同步 PAC加速方式
  19. android盒子远程,电视盒子ADB教程 通过ADB远程安装应用方法
  20. 如何彻底清除2345导航,从浏览器快捷方式,注册表,添加hosts限制三个方面进行修正

热门文章

  1. python中的- >符号
  2. 《the Great Gatsby》Day 29
  3. 明天放假啦——关于08的幸福
  4. VScode无法跳转函数/no definition found for xxx
  5. Bhuman工具篇——bush和游戏控制器介绍
  6. 腾讯云 yum mysql_详解腾讯云CentOS7.0使用yum安装mysql及使用遇到的问题
  7. 大学英语综合教程二 Unit 1 课文内容英译中 中英翻译
  8. MATLAB制作动图或视频
  9. 桩筏有限元中的弹性板计算_采用PKPM系列JCCAD软件桩筏筏板有限元方法计算的模型参数...
  10. 房地产行业如何做投资分析?这篇文章告诉你