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");
}
}
}
分享到:
相关推荐
- **创建客户端KeyStore文件**:使用`keytool`工具生成客户端KeyStore文件,其中包含Alice和Bob的授权。 ```bash keytool -genkey -alias alice -keystore clientKeys ``` 输入相关的信息,例如姓名、组织单位...
- `-keystore /root/nsp.keystore`:指定了密钥库的存储路径及文件名为 `/root/nsp.keystore`。 ##### 2. 导入证书 接下来需要将生成的证书导入到证书信任库中,以便 Tomcat 能够识别并使用该证书。 **命令示例**...
1. **KeyStores和TrustStores**:JSSE使用KeyStore存储私钥和证书,用于身份验证;TrustStore则存储信任的CA证书或服务器证书,用于验证对方的身份。开发者可以通过系统属性`javax.net.ssl.keyStore`和`javax.net....
在Java Secure Socket Extension (JSSE) 中,它扮演着创建和管理KeyStore和TrustStore的角色,以实现SSL/TLS协议的安全通信。 KeyStore是Java用来存储密钥对和证书的容器,它可以包含公钥、私钥以及相应的证书链。...
**JSSE(Java Secure Socket Extension)是Java平台中用于实现安全网络通信的API,它提供了SSL(Secure Sockets Layer)和TLS(Transport Layer Security)协议的实现,使得开发者能够构建安全的HTTPS、SMTPS等服务...
- 使用OpenSSL将.crt和.key文件转换成.p12格式。 - 再将.p12文件转换成.jks格式。 具体命令示例: ```sh openssl pkcs12 -export -out cert.p12 -inkey privatekey.key -in cert.crt keytool -importkeystore -...
与 ZIP 文件不同的是,JAR 文件不仅用于压缩和发布,而且还用于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的工具直接使用。在 JAR 中包含特殊的文件,如 manifests 和部署描述符,用来指示工具如何...
java.security.NoSuchAlgorithmException: SHA1PRNG SecureRandom not available at sun.security.jca.GetInstance.getInstance(GetInstance.java:142) at java.security....unpack200 jsse.pack jsse.jar
总结一下,通过Java的JSSE,我们可以直接使用Socket建立HTTPS连接,步骤包括:配置SSLContext、创建HttpsURLConnection、设置SocketFactory和读取响应。这个过程适用于那些需要低级别控制网络通信的场景。不过,对于...
jsse.jar
Java ExportPriv是一个专门为Java开发者设计的开源工具,其主要功能是导出Java Secure Socket Extension (JSSE) Keystore中的私钥。在Java安全框架中,Keystore是一个存储证书、私钥和其他安全凭证的地方,通常用于...
jar网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|版权声明|问题报告
导出证书则通过getKey和getCertificate获取所需证书,再使用KeyStore的store方法将其写入文件。 5. **数字证书的删除**: 删除证书可通过KeyStore的deleteEntry方法实现,传入要删除的证书别名即可。 6. **服务器...
在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`文件包含了关于Java SSL技术的示例和指南,这将帮助开发者更好地理解和使用JSSE。 首先,让我们理解SSL和TLS协议的核心概念。SSL是一种用于保护网络通信安全的协议,它通过加密数据传输...
Java提供了一个内置的命令行工具`keytool`,用于管理Keystore,包括创建、导入、导出和删除密钥对及证书。 在Java中,OpenSSL是一个常用的开源加密库,提供了丰富的加密算法和协议支持。虽然Java标准库已经包含了大...
1. **加载密钥库(KeyStore)**:使用KeyStore类加载包含私钥和证书的文件,设置密钥库类型(如JKS或PKCS12),以及密钥库和密钥密码。 2. **创建KeyManager**:使用KeyManagerFactory创建KeyManager实例,传入加载...
通过使用 JSSE,可以在客户机和服务器之间通过TCP/IP 协议安全地传输数据。 为了实现消息认证:服务器端需要: 1. KeyStore:其中保存服务器端的私钥 2. Trust KeyStore:其中保存客户端的授权证书 客户端需要: ...