`
沙舟狼客
  • 浏览: 162341 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用BC的X509v3CertificateBuilder组装X509证书

阅读更多
// 设置开始日期和结束日期
		long year = 360 * 24 * 60 * 60 * 1000;
		Date notBefore = new Date();
		Date notAfter = new Date(notBefore.getTime() + year);

		// 设置颁发者和主题
		String issuerString = "CN=root,OU=单位,O=组织";
		X500Name issueDn = new X500Name(issuerString);
		X500Name subjectDn = new X500Name(issuerString);

		// 证书序列号
		BigInteger serail = BigInteger.probablePrime(32, new Random());

		
		//证书中的公钥
		KeyPair keyPair = null;
		try {
			keyPair = KeyPairGenerator.getInstance("RSA", bcProvider)
					.generateKeyPair();
		} catch (NoSuchAlgorithmException e1) {
			e1.printStackTrace();
		}
		PublicKey publicKey = keyPair.getPublic();
		PrivateKey privateKey = keyPair.getPrivate();

		//组装公钥信息
		SubjectPublicKeyInfo subjectPublicKeyInfo = null;
		try {
			subjectPublicKeyInfo = SubjectPublicKeyInfo
					.getInstance(new ASN1InputStream(publicKey.getEncoded())
							.readObject());
		} catch (IOException e1) {
			e1.printStackTrace();
		}

		
		//证书的签名数据
		final byte[] signatureData ;
		try {
			signature = Signature.getInstance("SHA1withRSA");
			signature.initSign(privateKey);
			signature.update(publicKey.getEncoded());
			signatureData = signature.sign();
		} catch (Exception e) {
			throw new RuntimeException(e.getMessage(),e);
		}

		//组装证书
		X509v3CertificateBuilder builder = new X509v3CertificateBuilder(
				issueDn, serail, notBefore, notAfter, subjectDn,
				subjectPublicKeyInfo);
		
		//给证书签名
		X509CertificateHolder holder = builder.build(new ContentSigner() {
			ByteArrayOutputStream buf = new ByteArrayOutputStream();
			@Override
			public byte[] getSignature() {
				try {
					buf.write(signatureData);
				} catch (IOException e) {
					e.printStackTrace();
				}
				return signatureData;
			}

			@Override
			public OutputStream getOutputStream() {
				return buf;
			}

			@Override
			public AlgorithmIdentifier getAlgorithmIdentifier() {
				return AlgorithmIdentifier.getInstance(X509Util.getAlgorithmOID("SHA1withRSA"));
			}
		});
		try {
			byte[] certBuf = holder.getEncoded();
			X509Certificate certificate = (X509Certificate) CertificateFactory.getInstance("X509").generateCertificate(new ByteArrayInputStream(certBuf));
			System.out.println(certificate);
			//证书base64编码字符串
			System.out.println(Base64.encode(certificate.getEncoded()));
		} catch (IOException e) {
			e.printStackTrace();
		} catch (CertificateException e) {
			e.printStackTrace();
		}
		
 
3
0
分享到:
评论

相关推荐

    Java基于BC生成X509v3证书,以及部分扩展Extension的使用

    Java基于BC生成X509v3证书,以及部分扩展Extension的使用,如:BasicConstraints、CRLDIstPoint、CertificatePolicies、PolicyMappings、KeyUsage、ExtendedKeyUsage、SubjectAlternativeName、AuthorityInfoAccess...

    java生成X509证书jar包

    2. **创建自签名证书**:使用`X509v3CertificateBuilder`构建X509证书,包含主体(Subject)和颁发者(Issuer)信息,通常在自签名证书中,这两个信息是一致的。还需要设置有效期、序列号、公钥等关键字段。 3. **...

    java-sm2 - 副本.zip

    实现了SM2中如下5部分1.生成密钥对2.签名与验签3....利用BC的X509v3CertificateBuilder组装X509国密证书生成证书,,,杂凑算法采用SM3 密钥派生算法参考国密办文档中的KDF实现具体可查看resouces中三个文档

    基于202312最新版本的BC生成X509v3证书Demo,集合了两个独立的demo,实现对扩展Extension 的设置

    java代码,基于202312最新版本的BC生成X509v3证书Demo,同时生成pfx及cer证书,并有验签的封装类和测试demo。 里面集合了两个独立的demo。 实现对证书的 扩展Extension 字段 的设置。

    MyCertificateDemo.zip

    在"Java基于BC生成X509v3证书"的实践中,我们主要会使用Bouncy Castle库,这是一个强大的开源加密库,为Java和.NET提供了全面的密码学服务,包括对X509证书的支持。下面将详细介绍生成X509v3证书的关键步骤和知识点...

    gmhelper:基于BC库:国密SM2SM3SM4算法简单封装;实现SM2 X509v3证书的签发;实现SM2 pfx证书的签发

    gmhelper BC库从1.59版本开始已经基本实现了国密算法(SM2、SM3、SM4),本项目是基于BC库做的一些功能的简单封装,也可以当成一个sample看,目前主要实现了以下几块功能: ...SM2 X509v3证书的签发 SM2 pfx证书的签发

    基于BC库:国密SM2/SM3/SM4算法简单封装

    本文将深入探讨基于Bouncy Castle(BC)库实现的国密算法简单封装,以及如何使用这些算法进行X509v3证书和PFX证书的签发。 首先,让我们了解一下Bouncy Castle库。Bouncy Castle是一个开源的Java和.NET加密库,提供...

    SQLServer2005_BC_x64补丁 ,SQLServer2005_BC 32位补丁

    本压缩包包含了针对32位和64位系统的两个补丁:SQLServer2005_BC.msi 和 SQLServer2005_BC_x64.msi,主要目的是为了提升SQL Server 2005 Business Intelligence (BI)组件的兼容性和性能。 SQL Server 2005 Business...

    Broadcom BC440x.pkg

    Broadcom BC440x网卡驱动是专门为苹果电脑设计的,确保了苹果系统能够识别并充分利用这款网络适配器,实现无线或有线网络连接。 Broadcom是一家全球领先的半导体公司,专注于提供各种类型的网络、存储和无线解决...

    SQLServer2005_BC_x64补丁

    SQLServer2005及以后版本 向前 兼容 DTS等功能64位补丁

    华为服务器rh1288 v3固件包

    ├── RH1288 V3 -Mainboard(BC1HGSC01)-CPLD-V112.zip ├── RH1288 V3 iBMC软件 V397 版本说明书 01.zip ├── RH1288 V3-4&8HDD-Backplane(BC1EHBD01)-CPLD-V108.zip ├── RH1288 V3-8HDD(4NVMe) Backplane...

    $$ B ^ {-} _ c $$ Bc-的半轻子衰减到X(3930),X(3940),X(4160)

    我们研究了$$ B ^ {-} _ c $$ B-介子进入$$ \ bar {\ nu} l ^-$$νl-和同位旋零$$ X(3930)〜(2 ^ {++})$$ X(3930)(2 ++),$$ X(3940)〜(0 ^ {++})$$ X(3940)(0 ++),$$ X(4160) )〜(2 ^ {++})$...

    种利用BC方法的关键词自动提取算法研究

    种利用BC方法的关键词自动提取算法研究

    RH1288V3 BIOS V521

    【RH1288V3 BIOS V521】是华为服务器产品线中的一款关键固件更新,适用于RH1288V3型号的服务器。BIOS(基本输入输出系统)是计算机启动时加载的第一个软件,它负责初始化硬件并提供低级别的硬件控制,确保操作系统和...

    Android SM2、SM3、SM4 算法支持 Service Provider 及证书制作软件包

    生成、解释、验算 X.509v1/v3 证书,签名算法支持 SM3withSM2、主流 RSA、DSA、ECDSA.... 生成、解释、验算 PKCS#10 证书申请,签名算法支持 SM3withSM2、主流 RSA、DSA、ECDSA.... *** 无须打包 BouncyCastle 支持...

    一种利用BC方法的关键词自动提取算法研究

    一种利用BC方法的关键词自动提取算法研究 请下载查看。 看明白了,源码自己写就是了 只有算法。没有源码

    BC4.x破解补丁

    先生成再patch 只测试适配英文原版, 可能会掉激活 建议防火墙封禁bc

Global site tag (gtag.js) - Google Analytics