Java ssl认证记录
听到有人在用,所以自己随便搜了搜试了下,这里就是简单记录
就是操作了一遍这篇博文
https://blog.csdn.net/a495614205/article/details/12648939
import java.io.FileInputStream;
import java.io.*;
import java.net.Socket;
import java.security.KeyStore;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory; public class KeystoreTest {
/**
* name:KeystoreTest
* author:suju
*/
public static void main(String[] args) throws Exception{
String key="D:/Users/***/.keystore";
KeyStore keystore=KeyStore.getInstance("JKS");
//keystore的类型,默认是jks
keystore.load(new FileInputStream(key),"密码".toCharArray());
//创建jkd密钥访问库 123456是keystore密码。
KeyManagerFactory kmf=KeyManagerFactory.getInstance("SunX509");
kmf.init(keystore,"密码".toCharArray());
//asdfgh是key密码。
//创建管理jks密钥库的x509密钥管理器,用来管理密钥,需要key的密码
SSLContext sslc=SSLContext.getInstance("SSLv3");
// 构造SSL环境,指定SSL版本为3.0,也可以使用TLSv1,但是SSLv3更加常用。
sslc.init(kmf.getKeyManagers(),null,null);
//第二个参数TrustManager[] 是认证管理器,在需要双向认证时使用,
//构造ssl环境
SSLServerSocketFactory sslfactory=sslc.getServerSocketFactory();
SSLServerSocket serversocket=(SSLServerSocket) sslfactory.createServerSocket(9999);
//创建serversocket,监听,并传输数据来验证授权
for(int i=0;i<15;i++)
{
final Socket socket=serversocket.accept();
new Thread(){
public void run()
{
try{
InputStream is=socket.getInputStream();
OutputStream os=socket.getOutputStream();
byte[] buf=new byte[1024];
int len=is.read(buf);
System.out.println(new String(buf));
os.write("ssl test".getBytes());
os.close();
is.close();
}catch(Exception e)
{}
}
}.start();
}
serversocket.close();
}
}
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.security.KeyStore;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLServerSocket;
import javax.net.ssl.SSLServerSocketFactory;
import javax.net.ssl.SSLSocket;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManagerFactory; public class KeystoreTestClient {
/**
* name:KeystoreTestClient
* author:suju
*/
public static void main(String[] args) throws Exception{
String key="D:/Users/***/client";
KeyStore keystore=KeyStore.getInstance("JKS"); //创建一个keystore来管理密钥库
keystore.load(new FileInputStream(key),"密码".toCharArray());
//创建jkd密钥访问库
TrustManagerFactory tmf=TrustManagerFactory.getInstance("SunX509");
tmf.init(keystore); //验证数据,可以不传入key密码
//创建TrustManagerFactory,管理授权证书
SSLContext sslc=SSLContext.getInstance("SSLv3");
// 构造SSL环境,指定SSL版本为3.0,也可以使用TLSv1,但是SSLv3更加常用。
sslc.init(null,tmf.getTrustManagers(),null);
//KeyManager[] 第一个参数是授权的密钥管理器,用来授权验证。第二个是被授权的证书管理器,
//用来验证服务器端的证书。只验证服务器数据,第一个管理器可以为null
//构造ssl环境
SSLSocketFactory sslfactory=sslc.getSocketFactory();
SSLSocket socket=(SSLSocket) sslfactory.createSocket("127.0.0.1",9999);
//创建serversocket通过传输数据来验证授权
InputStream is=socket.getInputStream();
OutputStream os=socket.getOutputStream();
os.write("client".getBytes());
byte[] buf=new byte[1024];
int len=is.read(buf);
System.out.println(new String(buf));
os.close();
is.close();
}
}
其余就是证书相关的操作
生成
keytool -genkeypair
查看
keytool -list -v
使用其他keystore来创建key,如果keystore不存在就创建一个新的。
keytool --genkeypair -keystore c:\client
导出一个key
keytool -exportcert -alias mykey -file c:\mykey.cer
导入一个key到一个keystore
keytool -importcert -alias mykey -file c:\mykey.cer -keystore c:\client 过程中如果文件没有权限或者目录问题之类的自己调整下就OK
Java ssl认证记录的更多相关文章
- 自定义SSL证书实现单双向ssl认证记录
自定义SSL证书: 1.ca证书 #openssl genrsa -out ca.key 2048 #openssl req -new -key ca.key -out ca.csr #openssl ...
- java中 SSL认证和keystore使用
java中 SSL认证和keystore使用 2013-10-12 11:08 10488人阅读 评论(0) 收藏 举报 目录(?)[+] 好久没用过SSL认证了,东西久不用,就有点生疏. ...
- SSL 认证之后,request.getScheme()获取不到https的问题记录
通过浏览器输入https://www.xxx.com,request.getScheme()获取到的确实http而不是https通过request.getRequestURL()拿到的也是http:/ ...
- Java 8 学习记录
Java 8 学习记录 官方文档 https://docs.oracle.com/javase/8/ https://docs.oracle.com/javase/8/docs/index.html ...
- RSA原理、ssl认证、Tomcat中配置数字证书以及网络传输数据中的密码学知识
情形一:接口的加.解密与加.验签 rsa不是只有加密解密,除此外还有加签和验签.之前一直误以为加密就是加签,解密就是验签.这是错误的! 正确的理解是: 数据传输的机密性:公钥加密私钥解密是密送,保 ...
- java ssl https 连接详解 生成证书 tomcat keystone
java ssl https 连接详解 生成证书 我们先来了解一下什么理HTTPS 1. HTTPS概念 1)简介 HTTPS(全称:Hypertext Transfer Protocol over ...
- MySQL开启SSL认证,以及简单优化
1.1 MySQL开启SSL认证 #生成一个 CA 私钥 [root@db01 ssl]# openssl genrsa 2048 > ca-key.pem Generating RSA pri ...
- Difference between trustStore and keyStore in Java - SSL
Difference between trustStore and keyStore in Java - SSL trustStore vs keyStore in Java trustStore ...
- 申请Namecheap的.me 顶级域名以及申请ssl认证--github教育礼包之namecheap
关于教育礼包的取得见另一篇随笔,在那里笔者申请了digital ocean的vps(虚拟专用主机),跟阿里云差不多,不过个人感觉比阿里云便宜好用一点. 有了自己的主机ip,就想到申请域名,方便好记,也 ...
随机推荐
- HTML5绘制饼图示例(一)
原文地址:http://www.2cto.com/kf/201108/100251.html HTML5引入Canvas元素,用于图形的绘制,我们可以仅仅基于HTML和JavaScript就能绘制出原 ...
- 方法 - 调试Dll方法
1.exe加载dll 2.Dll属性设置2.1运行exe生成Debug/...exe2.2属性->调试->命令-> 改成 ./Debug/调试Dll.exe ../Debug/调试D ...
- Kafka参数详解
一.相关参数配置 System 系统参数 #唯一标识在集群中的ID,要求是正数. broker.id=0 #服务端口,默认9092 port=9092 #监听地址,不设为所有地址 host.name= ...
- python中转义符&str格式化
转义字符: 1.将有意义的字符变的无意义 2.将无意义的字符变的有意义 语法: \ + 某个字符 \n, \r\n : 代表换行 \t : 代表一个缩进, (水平制表符) \r : ...
- 第11章 拾遗1:网络地址转换(NAT)和端口映射
1. 网络地址转换(NAT) 1.1 NAT的应用场景 (1)应用场景:允许将私有IP地址映射到公网地址,以减缓IP地址空间的消耗 ①需要连接Internet,但主机没有公网IP地址 ②更换了一个新的 ...
- web前端 3大储存 Cookie、localStorge、sessionStorage
Cookie: //setCookie function setCookie(name,value){ var Days = 30; var exp = new Date(); exp.setTime ...
- cocos源码分析--绘制顺序LocalZOrder、GlobalZOrder、OrderOfArrival
使用规则 节点的渲染顺序跟节点的三个成员变量有关(_localZOrder._globalZOrder._orderOfArrival)分别对应三个设置函数setLocalZOrder.setGlob ...
- restframwork之序列化
一 restframwork为我们提供了一个快速实例,方便我们快速理解restframwork的序列化的原理. 快速实例化 Django REST framework API 指南 二 restfra ...
- Spring获取application.properties
方法一:@Value获取属性值 首先在application.properties中添加属性值 app.name=MyApp app.description=${app.name} is a Spri ...
- 使用原子类或synchronized(没用Lock)解决阐述多线程所遇到线程安全问题和解决方案
例子题目: 创建10个线程,每个线程执行10000次加1,输出总和 正常结果100000 但是如果出现线程不安全会低于100000 import java.util.concurrent.Count ...