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
通过使用JSSE,可以在Client和Server之间通过TCP/IP协议安全地传输数据。 为了实现消息认证。 Server需要: 1)KeyStore: 其中保存服务端的私钥 2)Trust KeyStore:其中保存客户端的授权证书 Client需要: 1)...
与 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
tomcat,https加密方式(jsse.openssl),亲自测试方法可行,真实有效。
jsse.jar
jar网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|版权声明|问题报告
使用java标准的jsse函数进行一次https的请求连接,并获得返回值
主要是在源码网站上抓取的jsse.jar jce.jar dnsns.jar charsets.jar源代码。 其中附上抓取的源代码,可以自己修改相应的参数,实现自定义下载。 因为写的匆忙,因此没有加上多线程,欢迎修改交流。
为高级 JSSE 开发人员定制 SSL.doc。 此文档指导您快速了解jsse 安全机制。
java exportpriv 是一个java工具,可以用来导出 JSSE Keystore 中的私钥。由于JDK自带的keytool不提供导出私钥功能,这个工具可以弥补这个不足。
jsp-api-2.1.jar+servlet-api-2.5-6.1.9.jar+jsse.jar
通用JSSE 要求 JDK 1.7或更高版本。 安装 < groupId>com.aliyun</ groupId> < artifactId>gmsse < version>{{see the version on the badge}} 用法 import javax.net.ssl.HttpsURLConnection ; import javax...
使用方法见:https://blog.csdn.net/upset_ming/article/details/87872381 1. 修改了前一版本中证书验证的bug,支持...2. 适配了一些硬件设备和国密浏览器 3. 支持国密SSL双向认证 4. 将过期的国密证书替换为新证书
您不需要使用ANT来构建相应的JAR文件,因为我们已经构建了该文件并将其放入“ lib”目录(lib / wolfssl-3.6.9.jar)。 安装Maven依赖项(wolfssl-3.6.9.jar)。 为此,请转到源基本目录并运行:mvn install:...
网络开发时,发现服务器一定时间会内存溢出,发现是SSLSocketImpl类初始化数量过多造成,终于在jdk7源代码中找到了jsse方面的源代码。
sun.security.provider不存在
打包找不到 jcommander COULD NOT FIND jcommander-1.48 解压后将jar包与pom文件都放在.m2\repository指定路径下