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,就想到申请域名,方便好记,也 ...
随机推荐
- 【ZZ】号称“开发者神器”的GitHub,到底该怎么用?
号称“开发者神器”的GitHub,到底该怎么用? https://mp.weixin.qq.com/s/zpKOBMKWckY05Mv_B28RgQ A developer’s introductio ...
- Oracle 表空间的概念
表空间 在数据库系统中,存储空间是较为重要的资源,合理利用空间,不但能节省空间,还可以提高系统的效率和工作性能. Oracle 可以存放海量数据,所有数据都在数据文件中存储.而数据文件大小受操作系 ...
- HDOJ 2004 成绩转换
#include<cstdio> #include<iostream> using namespace std; int main() { int score; while ( ...
- 云端搭建内网局域网+NAT冗余上网:vps-centos6.10 +pptp client +2个ros 实现默认走pptp上网,万一pptp断了,走另外一个ros路由+centos7补充了下
介绍下环境: 1.ROS1也是PPTP SERVER,IP为172.16.22.3/24,pptp pool为172.16.23.0/24,pptp的默认帐号是111,密码是123 2.ROS2的IP ...
- google chrome浏览器 程序无法启动并行配置不正确
启动电脑后打开chrome弹出如下信息: 系统:win7 进入chrome的安装路径 C:\Program Files (x86)\Google\Chrome\Application 两个版本文件夹, ...
- 自定义锁屏图片 win7
win + R打开运行对话框 输入Regedit 点确定 进入注册表,找到以下项次 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersi ...
- [UE4]Grid Panel
一.使用Grid Panel可以做出类似暗黑3一样的物品栏:不同的物品栏占据的物品栏格子不一样. 二.GridPanel.FillRules,可以设置每个单元格内的控件是否是拉伸比重.注意:这个是Gr ...
- keepalived主备节点都配置vip,vip切换异常案例分析
原文地址:http://blog.51cto.com/13599730/2161622 参考地址:https://blog.csdn.net/qq_14940627/article/details/7 ...
- 第11章 拾遗4:IPv6(3)_配置IPv6路由
5. 配置IPv6路由 5.1 配置IPv6静态路由 (1)在路由器上配置静态路由(以R1路由器为例) //静态路由 R1#config t R1(config)#ipv6 unicast-routi ...
- C++和C#进程之间通过命名管道通信(上)
C++和C#进程之间通过命名管道通信(上) "命名管道"是一种简单的进程间通信(IPC)机制.命名管道可在同一台计算机的不同进程之间,或在跨越一个网络的不同计算机的不同进程之间,支 ...