java安全HTTPS工具类
2023-09-27 14:20:50 时间
1 import java.io.FileInputStream; 2 import java.security.KeyStore; 3 import java.security.SecureRandom; 4 5 import javax.net.ssl.HttpsURLConnection; 6 import javax.net.ssl.KeyManagerFactory; 7 import javax.net.ssl.SSLContext; 8 import javax.net.ssl.SSLSocketFactory; 9 import javax.net.ssl.TrustManagerFactory; 10 11 import org.apache.commons.codec.digest.DigestUtils; 12 13 14 /** 15 * HTTPS组件 16 * @author bestmata 17 * 18 */ 19 public class HTTPSCoder { 20 21 private static final String TLS="TLS"; 22 23 private static final String SSL="SSL"; 24 25 26 /** 27 * 获取keyStore 28 * 29 * @param keyStorePath 30 * @param pwd 31 * @return 32 * @throws Exception 33 */ 34 private static KeyStore getKeyStore(String keyStorePath,String pwd) throws Exception{ 35 KeyStore ks=KeyStore.getInstance(KeyStore.getDefaultType()); 36 FileInputStream in=new FileInputStream(keyStorePath); 37 ks.load(in, pwd.toCharArray()); 38 in.close(); 39 return ks; 40 } 41 42 43 /** 44 * 获取SSLSocektFactory 45 * 46 * @param keyStorePath 47 * @param pwd 48 * @param trustStorePath 49 * @return 50 * @throws Exception 51 */ 52 private static SSLSocketFactory getSSLSocketFactory(String keyStorePath,String pwd,String trustStorePath) throws Exception{ 53 //实例话密匙库 54 KeyManagerFactory keyManageF=KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); 55 KeyStore ks=getKeyStore(keyStorePath, pwd); 56 //初始化密匙工厂 57 keyManageF.init(ks, pwd.toCharArray()); 58 //实例化信任库 59 TrustManagerFactory trustManageF=TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); 60 //获得信任库 61 KeyStore trustStore=getKeyStore(trustStorePath, pwd); 62 trustManageF.init(trustStore); 63 //实例化SSL上下文 64 SSLContext ctx=SSLContext.getInstance(TLS); 65 ctx.init(keyManageF.getKeyManagers(), trustManageF.getTrustManagers(), new SecureRandom()); 66 return ctx.getSocketFactory(); 67 } 68 69 70 public static void configSSLSocketFactory(HttpsURLConnection conn,String keyStorePath,String pwd,String trustStorePath) throws Exception{ 71 SSLSocketFactory sslSocketFactory=getSSLSocketFactory(keyStorePath, pwd, trustStorePath); 72 conn.setSSLSocketFactory(sslSocketFactory); 73 74 } 75 76 77 public static void main(String[] args) { 78 System.out.println("e10adc3949ba59abbe56e057f20f883e"); 79 System.out.println(DigestUtils.md5Hex("123456")); 80 } 81 82 }
相关文章
- 利用Java操作Jenkins API实现对Jenkins的控制详解
- Java Metrics工具介绍
- Java核心技术卷I基础知识2.2 使用命令行工具
- 监视器–JAVA同步基本概念
- 【转】Lombok:让JAVA代码更优雅
- Java 开发神器--反编译工具 jadx & jd-gui
- JAVA--AI编程助手【代码智能补全工具】盘点,让AI提高你的编程效率
- Java面试题:HashMap的原理
- java 字节码分析工具 jclasslib
- 【Java】+图表生成(8种图表工具)
- Java面试集合(四)
- 深入浅出的Java网络通信
- java TreeMap 源代码分析 平衡二叉树
- Java 图像噪声工具类
- 如何删除数组中的某个元素(C/Python/Java/Go/MATLAB)
- Java web项目的字符集问题
- Java内存分析工具MAT
- Java反编译工具
- Java工作中常用到的工具
- Java Sql IN 条件拼接工具类,SqlUtils工具类
- java操作数组的工具类-Arrays
- java函数式编程的形式
- 无插件及工具纯java生成验证码
- 代码自动生成工具_java版
- java抓取动态生成的网页
- Java两大工具库:Commons和Guava
- java工具类-对称加密算法AES 加密文件流
- java获取视频第一帧工具类
- 【Java篇】多线程 学习笔记
- java虚拟机性能监控工具介绍
- Java NIO vs. IO
- Java 阅读TXT文件