`
jasonw68
  • 浏览: 155135 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用jsse创建keystore文件和导出cert

阅读更多
package com.gc.test.cert;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.InputStream;
import java.security.SecureRandom;

import javax.net.ssl.KeyManager;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;



public class CertTest {
	public CertTest(){
	//空构造
	}
	
	//create ketstore and get cert file
	
	class initial{
		
		String stringidentity =null;
		
		String stringpassword = null;
		
		String stringname = null;
		
		String stringhome = System.getProperty("user.home"+"/"+"keystore");
		
		String stringkeystore = null;
		
		TrustManager[] arturstmanager; // 负责管理做出信任决定时使用的的信任材料,也负责决定是否接受同位体提供的凭据
		
		KeyManager[] arkeymanager; //KeyManager 负责管理用于验证到同位体的本地 SSLSocket 的密钥内容
		
		SSLContext sslcontext; //安全套接字协议的实现
		
		public initial(String identity,String password,String name){
			stringidentity = identity;
			stringpassword = password;
			stringname = name;
		}
		
		public initial(){
		//空构造
		}
		
		
		/**
		 * Create Dir
		 */
		public void makeDir(){
			
			File filehome = new File(stringhome);
			
			if(filehome.exists()==false){
				
				filehome.mkdirs();
			}
		}
		
		/**
		 * Create the keystore save directory
		 * @throws Exception
		 */
		public void makeStore()throws Exception{
			
			stringkeystore =stringhome;
			
			File filekeystore = new File(stringkeystore);
			
			if(filekeystore.exists()==false){
				
				System.out.println("creating keystroe..");
				
				byte[] arb = new byte[16];
				//伪随机数生成器 (PRNG) 形式
				SecureRandom sr = SecureRandom.getInstance("sha1prng");
				
				sr.nextBytes(arb);
				
				stringname ="ofcard";
				//创建key tool命令
				String[] stringCommand = new String[]{
						"keytool ",
						"-genkey ",
						"-alias ",stringidentity,
						"-keyalg ","rsa",
						"-keysize","1024",
						"-dname","cn="+ stringname,
						"-keystore ",stringname,
						"-keypass ",stringpassword,
						"-storetype ","jks",
						"-storepass ",stringpassword	
				};
				
				for(int i=0;i<stringCommand.length;i++){
					System.out.println(stringCommand[i]);
				}
			
				try {
					Process process = Runtime.getRuntime().exec(stringCommand); //处理keytool命令
					
					process.waitFor();//进程等待
					
					InputStream is = process.getErrorStream();
					
					BufferedInputStream br = new BufferedInputStream(process.getErrorStream());
					
					int len = br.available();
					
					byte[] b = new byte[len];
					
					br.read(b);
					
					String msgerr = new String(b);
					
					System.out.println("/n"+msgerr.trim());
					
					if(process.exitValue()!=0){
						
						new Exception().printStackTrace();
						
						System.exit(-1);
					}
				} catch (Exception e) {
					e.printStackTrace();
				}
				System.out.println("\n"+"make store successfully");
			}
		}
		
		/**
		 * 生成keystore文件
		 */
		public void getCert(){
			String[] stringCommand = new String[]{
					"keytool ",
					"-export ",
					"-keystore ",stringhome,
					"-alias ",stringidentity,
					"-file ","c:\\serverx.cer",
					"-storetype ","jks",
					"-storepass",stringpassword
			};
			
			for(int i=0;i<stringCommand.length;i++){
				
				System.out.println(stringCommand[i]);
				
			}
			try {
				Process process = Runtime.getRuntime().exec(stringCommand); //处理keytool命令
				
				process.waitFor();//进程等待
				
				InputStream is = process.getErrorStream();
				
				BufferedInputStream br = new BufferedInputStream(process.getErrorStream());
				
				int len = br.available();
				
				byte[] b = new byte[len];
				
				br.read(b);
				
				String msgerr = new String(b);
				
				System.out.println("/n"+msgerr.trim());
				
				if(process.exitValue()!=0){
					
					new Exception().printStackTrace();
					
					System.exit(-1);
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
			System.out.println("\n"+"make store successfully");
		}

	}
}

 

分享到:
评论

相关推荐

    tomcat,https加密方式(jsse.openssl)

    - `-keystore /root/nsp.keystore`:指定了密钥库的存储路径及文件名为 `/root/nsp.keystore`。 ##### 2. 导入证书 接下来需要将生成的证书导入到证书信任库中,以便 Tomcat 能够识别并使用该证书。 **命令示例**...

    java-SSL证书及安装配置详解.rar

    1. **加载密钥库(KeyStore)**:使用KeyStore类加载包含私钥和证书的文件,设置密钥库类型(如JKS或PKCS12),以及密钥库和密钥密码。 2. **创建KeyManager**:使用KeyManagerFactory创建KeyManager实例,传入加载...

    SUN Java certificate tutorial.rar

    5. **自签名证书**:在开发和测试环境中,可能会使用自签名证书,了解其创建和使用方法。 6. **证书吊销列表(CRL)与在线证书状态协议(OCSP)**:用于检查证书是否已被撤销。 7. **Java代码中的证书使用**:在...

    CA证书开发 JAR包 API

    JAR文件是Java平台特有的归档格式,它将多个类文件、资源文件和其他元数据打包在一起,便于分发和执行。在这个场景中,`NCSJAVA`很可能是一个包含CA证书管理API的JAR库,开发者可以导入这个库到他们的项目中,以便...

    配置适用于正式使用环境下的Tomcat Web服务器双向SSL认证1

    - `step1-ca-prepare.bat`命令从PKCS12格式的CA根证书中导出未加密的CA私钥和自签名根证书(ca-cert.pem和ca-key.pem)。 - `step2-server-keystore.bat`生成服务器端证书,包括服务器的Keystore和Truststore。...

    TarjetasDigitalesCertificatic

    4. **Java证书库**:熟悉java.security.cert包中的类,如Certificate、KeyStore和TrustManager,用于管理和验证证书。 5. **JSSE(Java Secure Socket Extension)**:学习如何创建安全套接层(SSL)和传输层安全(TLS...

    Examen-Java-Digital-House:数字证书库

    在实现这些功能时,开发者可能会使用Java的KeyStore API来管理和操作证书,使用CertificateFactory来解析证书,以及用KeyPairGenerator来生成密钥对。测试方面,JUnit和Mockito等工具可以帮助确保代码的正确性和可靠...

Global site tag (gtag.js) - Google Analytics