`
jasonw68
  • 浏览: 154180 次
  • 性别: 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");
		}

	}
}

 

分享到:
评论

相关推荐

    用JSSE定制SSL连接.docx

    - **创建客户端KeyStore文件**:使用`keytool`工具生成客户端KeyStore文件,其中包含Alice和Bob的授权。 ```bash keytool -genkey -alias alice -keystore clientKeys ``` 输入相关的信息,例如姓名、组织单位...

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

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

    为高级 JSSE 开发人员定制 SSL

    1. **KeyStores和TrustStores**:JSSE使用KeyStore存储私钥和证书,用于身份验证;TrustStore则存储信任的CA证书或服务器证书,用于验证对方的身份。开发者可以通过系统属性`javax.net.ssl.keyStore`和`javax.net....

    java keytool安全证书学习

    在Java Secure Socket Extension (JSSE) 中,它扮演着创建和管理KeyStore和TrustStore的角色,以实现SSL/TLS协议的安全通信。 KeyStore是Java用来存储密钥对和证书的容器,它可以包含公钥、私钥以及相应的证书链。...

    用jsse定制SSL

    **JSSE(Java Secure Socket Extension)是Java平台中用于实现安全网络通信的API,它提供了SSL(Secure Sockets Layer)和TLS(Transport Layer Security)协议的实现,使得开发者能够构建安全的HTTPS、SMTPS等服务...

    ecology9用resin4部署https

    - 使用OpenSSL将.crt和.key文件转换成.p12格式。 - 再将.p12文件转换成.jks格式。 具体命令示例: ```sh openssl pkcs12 -export -out cert.p12 -inkey privatekey.key -in cert.crt keytool -importkeystore -...

    jsse工具包.rar

    与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何...

    jsse-2.0.5.jar.zip

    java.security.NoSuchAlgorithmException: SHA1PRNG SecureRandom not available at sun.security.jca.GetInstance.getInstance(GetInstance.java:142) at java.security....unpack200 jsse.pack jsse.jar

    直接通过Socket使用JSSE

    总结一下,通过Java的JSSE,我们可以直接使用Socket建立HTTPS连接,步骤包括:配置SSLContext、创建HttpsURLConnection、设置SocketFactory和读取响应。这个过程适用于那些需要低级别控制网络通信的场景。不过,对于...

    jsse.jar

    jsse.jar

    java-exportpriv.zip

    Java ExportPriv是一个专门为Java开发者设计的开源工具,其主要功能是导出Java Secure Socket Extension (JSSE) Keystore中的私钥。在Java安全框架中,Keystore是一个存储证书、私钥和其他安全凭证的地方,通常用于...

    jsse.jar 用于jsse.jar

    jar网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|版权声明|问题报告

    java 实现数字证书的操作实现网络安全

    导出证书则通过getKey和getCertificate获取所需证书,再使用KeyStore的store方法将其写入文件。 5. **数字证书的删除**: 删除证书可通过KeyStore的deleteEntry方法实现,传入要删除的证书别名即可。 6. **服务器...

    jsp-api-2.1.jar+servlet-api-2.5-6.1.9.jar+jsse.jar

    在Java Web开发中,`jsp-api-2.1.jar`、`servlet-api-2.5-6.1.9.jar` 和 `jsse.jar` 是三个非常关键的库文件,它们分别对应了JSP(JavaServer Pages)、Servlet和JSSE(Java Secure Socket Extension)的核心功能。...

    jsse-samples-guides.zip

    `jsse-samples-guides.zip`文件包含了关于Java SSL技术的示例和指南,这将帮助开发者更好地理解和使用JSSE。 首先,让我们理解SSL和TLS协议的核心概念。SSL是一种用于保护网络通信安全的协议,它通过加密数据传输...

    java安全

    Java提供了一个内置的命令行工具`keytool`,用于管理Keystore,包括创建、导入、导出和删除密钥对及证书。 在Java中,OpenSSL是一个常用的开源加密库,提供了丰富的加密算法和协议支持。虽然Java标准库已经包含了大...

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

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

    SSL Socket双向认证的实现.doc

    通过使用 JSSE,可以在客户机和服务器之间通过TCP/IP 协议安全地传输数据。 为了实现消息认证:服务器端需要: 1. KeyStore:其中保存服务器端的私钥 2. Trust KeyStore:其中保存客户端的授权证书 客户端需要: ...

Global site tag (gtag.js) - Google Analytics