听到有人在用,所以自己随便搜了搜试了下,这里就是简单记录

就是操作了一遍这篇博文

https://blog.csdn.net/a495614205/article/details/12648939

  1. import java.io.FileInputStream;
  2. import java.io.*;
  3. import java.net.Socket;
  4. import java.security.KeyStore;
  5. import javax.net.ssl.KeyManagerFactory;
  6. import javax.net.ssl.SSLContext;
  7. import javax.net.ssl.SSLServerSocket;
  8. import javax.net.ssl.SSLServerSocketFactory;
  9.  
  10. public class KeystoreTest {
  11. /**
  12. * name:KeystoreTest
  13. * author:suju
  14. */
  15. public static void main(String[] args) throws Exception{
  16. String key="D:/Users/***/.keystore";
  17. KeyStore keystore=KeyStore.getInstance("JKS");
  18. //keystore的类型,默认是jks
  19. keystore.load(new FileInputStream(key),"密码".toCharArray());
  20. //创建jkd密钥访问库 123456是keystore密码。
  21. KeyManagerFactory kmf=KeyManagerFactory.getInstance("SunX509");
  22. kmf.init(keystore,"密码".toCharArray());
  23. //asdfgh是key密码。
  24. //创建管理jks密钥库的x509密钥管理器,用来管理密钥,需要key的密码
  25. SSLContext sslc=SSLContext.getInstance("SSLv3");
  26. // 构造SSL环境,指定SSL版本为3.0,也可以使用TLSv1,但是SSLv3更加常用。
  27. sslc.init(kmf.getKeyManagers(),null,null);
  28. //第二个参数TrustManager[] 是认证管理器,在需要双向认证时使用,
  29. //构造ssl环境
  30. SSLServerSocketFactory sslfactory=sslc.getServerSocketFactory();
  31. SSLServerSocket serversocket=(SSLServerSocket) sslfactory.createServerSocket(9999);
  32. //创建serversocket,监听,并传输数据来验证授权
  33. for(int i=0;i<15;i++)
  34. {
  35. final Socket socket=serversocket.accept();
  36. new Thread(){
  37. public void run()
  38. {
  39. try{
  40. InputStream is=socket.getInputStream();
  41. OutputStream os=socket.getOutputStream();
  42. byte[] buf=new byte[1024];
  43. int len=is.read(buf);
  44. System.out.println(new String(buf));
  45. os.write("ssl test".getBytes());
  46. os.close();
  47. is.close();
  48. }catch(Exception e)
  49. {}
  50. }
  51. }.start();
  52. }
  53. serversocket.close();
  54. }
  55. }
  1. import java.io.FileInputStream;
  2. import java.io.InputStream;
  3. import java.io.OutputStream;
  4. import java.security.KeyStore;
  5. import javax.net.ssl.KeyManagerFactory;
  6. import javax.net.ssl.SSLContext;
  7. import javax.net.ssl.SSLServerSocket;
  8. import javax.net.ssl.SSLServerSocketFactory;
  9. import javax.net.ssl.SSLSocket;
  10. import javax.net.ssl.SSLSocketFactory;
  11. import javax.net.ssl.TrustManagerFactory;
  12.  
  13. public class KeystoreTestClient {
  14. /**
  15. * name:KeystoreTestClient
  16. * author:suju
  17. */
  18. public static void main(String[] args) throws Exception{
  19. String key="D:/Users/***/client";
  20. KeyStore keystore=KeyStore.getInstance("JKS"); //创建一个keystore来管理密钥库
  21. keystore.load(new FileInputStream(key),"密码".toCharArray());
  22. //创建jkd密钥访问库
  23. TrustManagerFactory tmf=TrustManagerFactory.getInstance("SunX509");
  24. tmf.init(keystore); //验证数据,可以不传入key密码
  25. //创建TrustManagerFactory,管理授权证书
  26. SSLContext sslc=SSLContext.getInstance("SSLv3");
  27. // 构造SSL环境,指定SSL版本为3.0,也可以使用TLSv1,但是SSLv3更加常用。
  28. sslc.init(null,tmf.getTrustManagers(),null);
  29. //KeyManager[] 第一个参数是授权的密钥管理器,用来授权验证。第二个是被授权的证书管理器,
  30. //用来验证服务器端的证书。只验证服务器数据,第一个管理器可以为null
  31. //构造ssl环境
  32. SSLSocketFactory sslfactory=sslc.getSocketFactory();
  33. SSLSocket socket=(SSLSocket) sslfactory.createSocket("127.0.0.1",9999);
  34. //创建serversocket通过传输数据来验证授权
  35. InputStream is=socket.getInputStream();
  36. OutputStream os=socket.getOutputStream();
  37. os.write("client".getBytes());
  38. byte[] buf=new byte[1024];
  39. int len=is.read(buf);
  40. System.out.println(new String(buf));
  41. os.close();
  42. is.close();
  43. }
  44. }

其余就是证书相关的操作

  1. 生成
  2. keytool -genkeypair
  3. 查看
  4. keytool -list -v
  5. 使用其他keystore来创建key,如果keystore不存在就创建一个新的。
  6. keytool --genkeypair -keystore c:\client
  7. 导出一个key
  8. keytool -exportcert -alias mykey -file c:\mykey.cer
  9. 导入一个key到一个keystore
  10. keytool -importcert -alias mykey -file c:\mykey.cer -keystore c:\client
  11.  
  12. 过程中如果文件没有权限或者目录问题之类的自己调整下就OK

Java ssl认证记录的更多相关文章

  1. 自定义SSL证书实现单双向ssl认证记录

    自定义SSL证书: 1.ca证书 #openssl genrsa -out ca.key 2048 #openssl req -new -key ca.key -out ca.csr #openssl ...

  2. java中 SSL认证和keystore使用

    java中 SSL认证和keystore使用 2013-10-12 11:08 10488人阅读 评论(0) 收藏 举报   目录(?)[+]     好久没用过SSL认证了,东西久不用,就有点生疏. ...

  3. SSL 认证之后,request.getScheme()获取不到https的问题记录

    通过浏览器输入https://www.xxx.com,request.getScheme()获取到的确实http而不是https通过request.getRequestURL()拿到的也是http:/ ...

  4. Java 8 学习记录

    Java 8 学习记录 官方文档 https://docs.oracle.com/javase/8/ https://docs.oracle.com/javase/8/docs/index.html ...

  5. RSA原理、ssl认证、Tomcat中配置数字证书以及网络传输数据中的密码学知识

      情形一:接口的加.解密与加.验签 rsa不是只有加密解密,除此外还有加签和验签.之前一直误以为加密就是加签,解密就是验签.这是错误的! 正确的理解是: 数据传输的机密性:公钥加密私钥解密是密送,保 ...

  6. java ssl https 连接详解 生成证书 tomcat keystone

    java ssl https 连接详解 生成证书 我们先来了解一下什么理HTTPS 1. HTTPS概念 1)简介 HTTPS(全称:Hypertext Transfer Protocol over ...

  7. MySQL开启SSL认证,以及简单优化

    1.1 MySQL开启SSL认证 #生成一个 CA 私钥 [root@db01 ssl]# openssl genrsa 2048 > ca-key.pem Generating RSA pri ...

  8. Difference between trustStore and keyStore in Java - SSL

    Difference between trustStore and keyStore in Java - SSL   trustStore vs keyStore in Java trustStore ...

  9. 申请Namecheap的.me 顶级域名以及申请ssl认证--github教育礼包之namecheap

    关于教育礼包的取得见另一篇随笔,在那里笔者申请了digital ocean的vps(虚拟专用主机),跟阿里云差不多,不过个人感觉比阿里云便宜好用一点. 有了自己的主机ip,就想到申请域名,方便好记,也 ...

随机推荐

  1. [UE4]UMG和关卡坐标变换、旋转小地图

    一.优化上一节的蓝图,新建一个函数addFlagToCanvas(动态添加图标到Canvas) 二. 分析地图坐标系和UMG坐标系 要根据实际情况分析关卡坐标系. UserWidget中的坐标系 三. ...

  2. 用juniversalchardet解决爬虫乱码问题

    爬虫往往会遇到乱码问题.最简单的方法是根据http的响应信息来获取编码信息.但如果对方网站的响应信息不包含编码信息或编码信息错误,那么爬虫取下来的信息就很可能是乱码. 好的解决办法是直接根据页面内容来 ...

  3. WebSocket 跨域

    http://www.cnblogs.com/joeymary/p/5259464.html

  4. 通过mysqlclient操作MySQL数据库

    一,安装mysql 如果是windows 用户,mysql 的安装非常简单,直接下载安装文件,双击安装文件一步一步进行操作即可. Linux 下的安装可能会更加简单,除了下载安装包进行安装外,一般的l ...

  5. HBase脚本命令

    1. 脚本使用小结1.开启集群 start-hbase.sh 2.关闭集群 stop-hbase.sh 3.开启/关闭[所有]的regionserver.zookeeper hbase-daemons ...

  6. IIS 修改并发连接数

    http://www.cnblogs.com/dudumao/p/4078687.html

  7. Android悬浮框,在Service中打开悬浮窗;在Service中打开Dialog;

    文章介绍了如何在Service中显示悬浮框,在Service中弹出Dialog,在Service中做耗时的轮询操作: 背景需求: 公司的项目现在的逻辑是这样的:发送一个指令,然后3秒一次轮询去查询这个 ...

  8. [work]Spring_Jdbc

    封装Spring-RowMapper,使得使用更加灵活 import java.sql.ResultSet; import java.sql.SQLException; import java.uti ...

  9. tomcat的一次请求过程

    Tomcat处理一个HTTP请求的过程 假设来自客户的请求为: http://tomcat.com/yy/index.jsp 首先 dns 解析tomcat.com机器,一般是ng服务器ip地址 然后 ...

  10. Java并发编程:Java Thread方法join的简单总结

    虽然关于讨论线程join方法的博客已经很多了,不过个人感觉挺多都讨论得不够全面,所以我觉得有必要对其进行一个全面的总结. 一.作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间 ...