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,就想到申请域名,方便好记,也 ...
随机推荐
- [UE4]UMG和关卡坐标变换、旋转小地图
一.优化上一节的蓝图,新建一个函数addFlagToCanvas(动态添加图标到Canvas) 二. 分析地图坐标系和UMG坐标系 要根据实际情况分析关卡坐标系. UserWidget中的坐标系 三. ...
- 用juniversalchardet解决爬虫乱码问题
爬虫往往会遇到乱码问题.最简单的方法是根据http的响应信息来获取编码信息.但如果对方网站的响应信息不包含编码信息或编码信息错误,那么爬虫取下来的信息就很可能是乱码. 好的解决办法是直接根据页面内容来 ...
- WebSocket 跨域
http://www.cnblogs.com/joeymary/p/5259464.html
- 通过mysqlclient操作MySQL数据库
一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...
- HBase脚本命令
1. 脚本使用小结1.开启集群 start-hbase.sh 2.关闭集群 stop-hbase.sh 3.开启/关闭[所有]的regionserver.zookeeper hbase-daemons ...
- IIS 修改并发连接数
http://www.cnblogs.com/dudumao/p/4078687.html
- Android悬浮框,在Service中打开悬浮窗;在Service中打开Dialog;
文章介绍了如何在Service中显示悬浮框,在Service中弹出Dialog,在Service中做耗时的轮询操作: 背景需求: 公司的项目现在的逻辑是这样的:发送一个指令,然后3秒一次轮询去查询这个 ...
- [work]Spring_Jdbc
封装Spring-RowMapper,使得使用更加灵活 import java.sql.ResultSet; import java.sql.SQLException; import java.uti ...
- tomcat的一次请求过程
Tomcat处理一个HTTP请求的过程 假设来自客户的请求为: http://tomcat.com/yy/index.jsp 首先 dns 解析tomcat.com机器,一般是ng服务器ip地址 然后 ...
- Java并发编程:Java Thread方法join的简单总结
虽然关于讨论线程join方法的博客已经很多了,不过个人感觉挺多都讨论得不够全面,所以我觉得有必要对其进行一个全面的总结. 一.作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间 ...