- 浏览: 177109 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (56)
- 算法 (9)
- linux (15)
- oracle (4)
- Project Euler Problem (3)
- 编程珠玑 (2)
- 数学 (1)
- http (1)
- java (19)
- plsql (1)
- apusic (1)
- https (1)
- 备忘 (22)
- 概率 (1)
- EIP (0)
- eclipse (1)
- 安全 (1)
- 公钥体系 (6)
- PKI (2)
- 网络 (2)
- linux,克隆 (0)
- virt-manager (1)
- VMWare (1)
- 克隆 (1)
- logback (1)
- TimeBasedRollingPolicy (0)
- SizeBasedTriggeringPolicy (0)
- properties (1)
- class (1)
- classloader (1)
- netty (1)
- thread dump (1)
- jstack (1)
- jconsole (1)
- java,编码,文件名 (0)
- google (1)
- goagent (1)
- 线程池 (1)
- 博客 (1)
- hexo (1)
- github (1)
- gitcafe (1)
最新评论
-
panhl:
我也实现了一个https://github.com/panho ...
具有相同属性任务串行有序执行的线程池设计 -
fengwei5129:
感谢,最近在看netty源码一直搞不清楚是如何实现的死锁检测, ...
Future机制用于并发编程时的死锁检测 -
OpenMind:
发现IBM JDK的System.nanoTime()没有实现 ...
Java系统时钟几个值得思考的问题 -
lvhongfen:
好了,感谢LZ分享
windows下plsql 设置 里面timestamp显示的格式 -
OpenMind:
今天发现,在linux下还有个很简介的方法查看线程的转储信息, ...
不依赖jstack的java 线程dump和死锁检查工具
这些代码首先加载CA证书,然后分别用CA给Alice和Bob签发一个证书并保存到resource/目录下面,用jks格式存储。
CA证书也是用java编程方式制作的,制作过程请看我的上一篇博客。
public static void main(String[] args) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, FileNotFoundException, IOException, UnrecoverableEntryException { //读取CA证书的JKS文件 KeyStore store = KeyStore.getInstance("JKS"); File file = new File("resource/atlas-ca.jks"); store.load(new FileInputStream(file), "atlas".toCharArray()); PrivateKeyEntry ke = (PrivateKeyEntry) store.getEntry("atlas", new PasswordProtection("atlas".toCharArray())); String subject = "C=CN,ST=GuangDong,L=Shenzhen,O=Skybility,OU=Cloudbility,CN=Alice,E=alice@163.com"; //给alice签发证书并存为xxx-alice.jks的文件 gen(ke, subject, "alice"); subject = "C=CN,ST=GuangDong,L=Shenzhen,O=Skybility,OU=Cloudbility,CN=Bob,E=Bob@gmail.com"; //给Bob签发证书并存为xxx-bob.jks的文件 gen(ke, subject, "bob"); } //用KeyEntry形式存储一个私钥以及对应的证书,并把CA证书加入到它的信任证书列表里面。 public static void store(PrivateKey key, Certificate cert, Certificate caCert, String name) throws KeyStoreException, NoSuchAlgorithmException, CertificateException, IOException { KeyStore store = KeyStore.getInstance("JKS"); store.load(null, null); store.setKeyEntry(name, key, name.toCharArray(), new Certificate[] { cert, caCert }); File file = new File("resource/atlas-" + name + ".jks"); if (file.exists() || file.createNewFile()) { store.store(new FileOutputStream(file), ("_"+name).toCharArray()); } } //用ke所代表的CA给subject签发证书,并存储到名称为name的jks文件里面。 public static void gen(PrivateKeyEntry ke, String subject, String name) { try { X509Certificate caCert = (X509Certificate) ke.getCertificate(); KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA"); kpg.initialize(2048); KeyPair keyPair = kpg.generateKeyPair(); KeyStore store = KeyStore.getInstance("JKS"); store.load(null, null); String issuer = caCert.getIssuerDN().toString(); Certificate cert = generateV3(issuer, subject, BigInteger.ZERO, new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24), new Date(System.currentTimeMillis() + 1000L * 60 * 60 * 24 * 365 * 32), keyPair.getPublic(),//待签名的公钥 ke.getPrivateKey()//CA的私钥 , null); store(keyPair.getPrivate(), cert, ke.getCertificate(), name); } catch (Exception e) { e.printStackTrace(); } } public static Certificate generateV3(String issuer, String subject, BigInteger serial, Date notBefore, Date notAfter, PublicKey publicKey, PrivateKey privKey, List<Extension> extensions) throws OperatorCreationException, CertificateException, IOException { X509v3CertificateBuilder builder = new JcaX509v3CertificateBuilder( new X500Name(issuer), serial, notBefore, notAfter, new X500Name(subject), publicKey); ContentSigner sigGen = new JcaContentSignerBuilder("SHA1withRSA") .setProvider("BC").build(privKey); //privKey是CA的私钥,publicKey是待签名的公钥,那么生成的证书就是被CA签名的证书。 if (extensions != null) for (Extension ext : extensions) { builder.addExtension(new ASN1ObjectIdentifier(ext.getOid()), ext.isCritical(), ASN1Primitive.fromByteArray(ext.getValue())); } X509CertificateHolder holder = builder.build(sigGen); CertificateFactory cf = CertificateFactory.getInstance("X.509"); InputStream is1 = new ByteArrayInputStream(holder.toASN1Structure() .getEncoded()); X509Certificate theCert = (X509Certificate) cf.generateCertificate(is1); is1.close(); return theCert; }
发表评论
-
具有相同属性任务串行有序执行的线程池设计
2014-09-04 15:30 1390我有一个这样的线程池的场景,相信很多人都遇到过: 1,每个用 ... -
不依赖jstack的java 线程dump和死锁检查工具
2013-10-08 14:41 2383java线程dump可以使用jdk的命令“jstack ... -
回忆去年用Java破解unity.exe的过程
2013-05-26 00:48 2585去年我一同学要我破解unity.exe,然后挂在网上卖点钱花 ... -
netty做Pipe一端快一端慢时防止内存溢出进行的操作
2013-05-23 17:12 5892前段时间用netty3.x做了 ... -
为什么InputStream.read()读取一个byte确返回一个int呢?
2013-05-09 16:26 5180问题1:为什么InputStream.read()读取一个 ... -
Java系统时钟几个值得思考的问题
2013-04-10 16:48 4558System.currentTimeMillis()是依赖 ... -
logback的SizeBasedTriggeringPolicy和TimeBasedRollingPolicy联合使用问题
2013-04-01 13:37 15176<appender name="FILE& ... -
netty应用分析
2013-03-07 15:54 0用netty 3.5.7做了一个网络程序,c与s之间有一个心 ... -
Java包装类Integer比较
2012-10-18 16:41 10771,用符号==比较两个对象,意味着比较他们是否是统一个对象。 ... -
Future机制用于并发编程时的死锁检测
2012-10-18 14:51 5947Netty源码里面有个类:De ... -
java-在非安全网络上建立可信任安全的通道(2/3)
2012-10-05 19:19 1212在不安全的网络环境下进行密钥交互(1/3,前面那一节),容易遭 ... -
java-在非安全网络上建立可信任安全的通道(1/3)
2012-10-05 18:46 1864看到标题,几乎所有人都会想到SSL,但SSL比较重 ... -
java编程方式生成CA证书
2012-10-05 17:28 15277下面是java编程方式生成CA证书的代码,使用的是BC的pro ... -
安全领域的一些概念
2012-10-05 16:41 1381对称密钥/非对称密钥/key/cipher symmetri ... -
Class.getResourceAsStream
2013-04-06 14:09 977Class.getResourceAsStream(" ... -
findbugs
2012-03-02 16:41 0findbugsfindbugsfindbugsfindbug ... -
并发编程
2012-03-02 16:41 0C:\Users\Sunny\Desktop\docC:\Us ... -
泛型类里面获取到泛型的类型
2012-03-01 10:15 3411下面的代码可以让你在抽象的泛型类里面获取到泛型的类型 ab ... -
java 学习网站大全
2012-02-27 12:02 0http://scjp.home.sohu.com/ 模拟试题 ... -
First JNI
2012-02-13 14:34 763http://hi.baidu.com/fwmf/blog/i ...
相关推荐
Java实现浏览器CA证书的签名和验证,提高java应用的安全
网上博客里面的通常的版本,对其进行了些更改并引入了jre6的rt.jar(貌似jre7的不行)使其能够运行
国密SM2、RSA证书签发工具(CA),https://blog.csdn.net/zweib730/article/details/50972837#comments
java 国密算法实现,包含SM2 SM3 SM4和数字签名、数字证书的验证以及相应的说明文档
使用TOMCAT和JDK搭建SSL服务, JAVA获取数字证书项, 如何用OPENSSL签发证书, 支持第三方CA
3.用私钥给jar包签名 工具支持的密钥库形式: 1.PKCS12 2.JKS 查看证书库内容: 分为私钥别名和证书别名 生成证书的同时会生成三个文件: 1.私钥文件(pem) 2.证书文件(pem) 3.密钥库文件--jks或者p12(pfx)后者IE可用 ...
本工具包含windows版本编译好的gmssl.exe(Linux版本需自己编译,命令行是通用的),以及方便签发证书的bat文件,gmssl命令行详细解释。可以用来生成ca证书,并且用ca证书签发用户证书。
可省去choco下载安装的步骤,直接使用mkcert创建和签名证书,通过mkcert -install命令创建ca根证书,傻瓜式零配置签发证书
CFCA证书环境Java安装,适用于金融业平台的统一登录
证书(Certificate,也称public-key certificate)是用某种签名算法对某些内容(比如公钥)进行数字签名后得到的、可以用来当成信任关系中介的数字凭证。证书发行机构通过发行证书 告知证书使用者或实体其公钥(public-...
介绍了用Java和0penSsL构建一个小型cA系统的方法。
基于椭圆曲线密码体制的本地实现的CA(证书授权中心)和数字证书签发系统
从网络上找到这PKI/CA与数字证书技术大全和PKI原理与技术两部分内容,汇总一下,供大家一起学习PKI相关知识
最新CA证书
openssl创建自己的ca 签发证书 创建多级ca 有具体例子
证书生成:用户提供 Certificate Signing Request (CSR)和 公钥后,系统会自动为用户生成证书并通过邮箱发放,支持 用于 SSL 和代码签名的两类证书。 证书吊销:用户发起证书吊销请求后,系统会为其更新 ...
Javaopenssl调用生成密钥: 所需要的包如下:Umpayopenssl.jar commons-logging-1.0.4.jar ,mpsp_bs3-100406-975.jar, log4j-1.2.14.jar。还有opessl在bin文件 中……
CA证书接口用法 CA证书怎么与代码结合
学习RSA算法,读取数字证书中的私钥对文件进行加密,使用数字证书的公钥解密,这种方式就是RSA算法.