javaweb数字证书_纯Java实现数字证书生成签名的简单实例

本文介绍了一个使用Java实现的数字证书生成及签名的简单实例,包括创建CA根证书、签署证书以及保存证书到PKCS12格式的密钥库。代码示例详细展示了如何使用Java的安全类库生成密钥对、设置证书信息、签名和验证证书。
摘要由CSDN通过智能技术生成

package com.ylsoft.cert;

import java.io.file;

import java.io.fileinputstream;

import java.io.fileoutputstream;

import java.io.ioexception;

import java.security.invalidkeyexception;

import java.security.keypair;

import java.security.keypairgenerator;

import java.security.keystore;

import java.security.keystoreexception;

import java.security.nosuchalgorithmexception;

import java.security.nosuchproviderexception;

import java.security.privatekey;

import java.security.securerandom;

import java.security.signature;

import java.security.signatureexception;

import java.security.unrecoverablekeyexception;

import java.security.cert.certificate;

import java.security.cert.certificateexception;

import java.security.cert.x509certificate;

import java.util.date;

import java.util.vector;

import sun.misc.base64encoder;

import sun.security.util.objectidentifier;

import sun.security.x509.algorithmid;

import sun.security.x509.certandkeygen;

import sun.security.x509.certificatealgorithmid;

import sun.security.x509.certificateextensions;

import sun.security.x509.certificateserialnumber;

import sun.security.x509.certificatevalidity;

import sun.security.x509.certificateversion;

import sun.security.x509.certificatex509key;

import sun.security.x509.extendedkeyusageextension;

import sun.security.x509.extension;

import sun.security.x509.keyidentifier;

import sun.security.x509.keyusageextension;

import sun.security.x509.subjectkeyidentifierextension;

import sun.security.x509.x500name;

import sun.security.x509.x500signer;

import sun.security.x509.x509certimpl;

import sun.security.x509.x509certinfo;

/**

* 首先生成ca的根证书,然后有ca的根证书签署生成scriptx的证书

*

* @author administrator

*

*/

public class genx509cert {

/** 提供强加密随机数生成器 (rng)* */

private securerandom sr;

public genx509cert() throws nosuchalgorithmexception,

nosuchproviderexception {

// 返回实现指定随机数生成器 (rng) 算法的 securerandom 对象。

sr = securerandom.getinstance("sha1prng", "sun");

}

public void createcert(x509certificate certificate, privatekey rootprivkey,

keypair kp) throws certificateexception, ioexception,

invalidkeyexception, nosuchalgorithmexception,

nosuchproviderexception, signatureexception {

// x.509 v1 证书的抽象类。此类提供了一种访问 x.509 v1 证书所有属性的标准方式。

byte certbytes[] = certificate.getencoded();

// the x509certimpl class represents an x.509 certificate.

x509certimpl x509certimpl = new x509certimpl(certbytes);

// the x509certinfo class represents x.509 certificate information.

x509certinfo x509certinfo = (x509certinfo) x509certimpl

.get("x509.info");

// this class defines the x509key attribute for the certificate.

x509certinfo.set("key", new certificatex509key(kp.getpublic()));

// this class defines the extensions attribute for the certificate

certificateextensions certificateextensions = new c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值