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 /root/nsp.keystore`:指定了密钥库的存储路径及文件名为 `/root/nsp.keystore`。 ##### 2. 导入证书 接下来需要将生成的证书导入到证书信任库中,以便 Tomcat 能够识别并使用该证书。 **命令示例**...
1. **加载密钥库(KeyStore)**:使用KeyStore类加载包含私钥和证书的文件,设置密钥库类型(如JKS或PKCS12),以及密钥库和密钥密码。 2. **创建KeyManager**:使用KeyManagerFactory创建KeyManager实例,传入加载...
5. **自签名证书**:在开发和测试环境中,可能会使用自签名证书,了解其创建和使用方法。 6. **证书吊销列表(CRL)与在线证书状态协议(OCSP)**:用于检查证书是否已被撤销。 7. **Java代码中的证书使用**:在...
JAR文件是Java平台特有的归档格式,它将多个类文件、资源文件和其他元数据打包在一起,便于分发和执行。在这个场景中,`NCSJAVA`很可能是一个包含CA证书管理API的JAR库,开发者可以导入这个库到他们的项目中,以便...
- `step1-ca-prepare.bat`命令从PKCS12格式的CA根证书中导出未加密的CA私钥和自签名根证书(ca-cert.pem和ca-key.pem)。 - `step2-server-keystore.bat`生成服务器端证书,包括服务器的Keystore和Truststore。...
4. **Java证书库**:熟悉java.security.cert包中的类,如Certificate、KeyStore和TrustManager,用于管理和验证证书。 5. **JSSE(Java Secure Socket Extension)**:学习如何创建安全套接层(SSL)和传输层安全(TLS...
在实现这些功能时,开发者可能会使用Java的KeyStore API来管理和操作证书,使用CertificateFactory来解析证书,以及用KeyPairGenerator来生成密钥对。测试方面,JUnit和Mockito等工具可以帮助确保代码的正确性和可靠...