From 566700272132d2daef07678ecb2da190f01d12f0 Mon Sep 17 00:00:00 2001 From: qi4L Date: Sat, 6 Sep 2025 17:08:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0JDK=E4=BF=A1=E4=BB=BB?= =?UTF-8?q?=E8=AF=81=E4=B9=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/qi4l/JYso/TLSProxy.java | 24 ++++++++++++------- .../com/qi4l/JYso/gadgets/Config/Config.java | 8 +++---- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/qi4l/JYso/TLSProxy.java b/src/main/java/com/qi4l/JYso/TLSProxy.java index d6ff96a..a119632 100644 --- a/src/main/java/com/qi4l/JYso/TLSProxy.java +++ b/src/main/java/com/qi4l/JYso/TLSProxy.java @@ -1,6 +1,7 @@ package com.qi4l.JYso; import com.qi4l.JYso.gadgets.Config.Config; + import javax.net.ssl.*; import java.io.IOException; import java.io.InputStream; @@ -12,25 +13,32 @@ import java.nio.file.Paths; import java.security.KeyStore; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; + import static org.fusesource.jansi.Ansi.ansi; public class TLSProxy { private final String localAddr; private final String remoteAddr; private final String certFile; + private final String keyPass; - public TLSProxy(String localAddr, String remoteAddr, String certFile) { + public TLSProxy(String localAddr, String remoteAddr, String certFile, String keyPass) { this.localAddr = localAddr; this.remoteAddr = remoteAddr; this.certFile = certFile; + this.keyPass = keyPass; } public static void start() { System.out.println(ansi().render("@|green [+]|@ LDAPS Server Start Listening on >> " + Config.TLSPort + "...")); - new TLSProxy(Config.ip + ":" + Config.TLSPort, Config.ip + ":" + Config.ldapPort, Config.certFile).run(); + new TLSProxy(Config.ip + ":" + Config.TLSPort, Config.ip + ":" + Config.ldapPort, Config.certFile,Config.keyPass).run(); } public void run() { + // 设置JDK信任证书 + System.setProperty("javax.net.ssl.trustStore", certFile); + System.setProperty("javax.net.ssl.trustStorePassword", keyPass); + SSLServerSocketFactory sslServerSocketFactory = createSSLServerSocketFactory(); if (sslServerSocketFactory == null) { System.err.println("Failed to create SSLServerSocketFactory"); @@ -53,15 +61,15 @@ public class TLSProxy { private SSLServerSocketFactory createSSLServerSocketFactory() { try { - SSLContext sslContext = SSLContext.getInstance("TLS"); + SSLContext sslContext = SSLContext.getInstance("TLS"); KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); - KeyStore keyStore = KeyStore.getInstance("JKS"); + KeyStore keyStore = KeyStore.getInstance("JKS"); try (InputStream keyInput = Files.newInputStream(Paths.get(certFile))) { - keyStore.load(keyInput, Config.keyPass.toCharArray()); + keyStore.load(keyInput, keyPass.toCharArray()); } - keyManagerFactory.init(keyStore, Config.keyPass.toCharArray()); + keyManagerFactory.init(keyStore, keyPass.toCharArray()); sslContext.init(keyManagerFactory.getKeyManagers(), null, null); return sslContext.getServerSocketFactory(); } catch (Exception e) { @@ -72,7 +80,7 @@ public class TLSProxy { private void handleConnection(SSLSocket clientSocket) { String[] remoteAddressParts = remoteAddr.split(":"); - Socket remoteSocket = null; + Socket remoteSocket = null; try { // 修复:使用 remoteAddr 而不是 localAddr @@ -130,7 +138,7 @@ public class TLSProxy { private void forwardData(InputStream input, OutputStream output) throws IOException { byte[] buffer = new byte[8192]; - int bytesRead; + int bytesRead; try { while ((bytesRead = input.read(buffer)) != -1) { diff --git a/src/main/java/com/qi4l/JYso/gadgets/Config/Config.java b/src/main/java/com/qi4l/JYso/gadgets/Config/Config.java index a10de8e..fb4a357 100644 --- a/src/main/java/com/qi4l/JYso/gadgets/Config/Config.java +++ b/src/main/java/com/qi4l/JYso/gadgets/Config/Config.java @@ -46,10 +46,10 @@ public class Config { public static boolean TLSProxy = false; @Parameter(names = {"-tP", " --TLSPort"}, help = true, description = "TLS port", order = 5) public static String TLSPort = "1636"; - @Parameter(names = {"-kS", " --keyPass"}, help = true, description = "TLS private key", order = 5) - public static String keyPass = ""; - @Parameter(names = {"-cF", " --certFile"}, help = true, description = "Path to the TLS certificate file", order = 5) - public static String certFile = ""; + @Parameter(names = {"-kP", " --keyPass"}, help = true, description = "TLS private key", order = 5) + public static String keyPass = "326q999h80s8"; + @Parameter(names = {"-cF", " --certFile"}, help = true, description = "JKS certificate file Path", order = 5) + public static String certFile = "C:\\Users\\22393\\Downloads\\qi4l.top_jks\\qi4l.top.jks"; @Parameter(names = {"-j", "--jndi"}, help = true, description = "starter", order = 5) public static boolean jndi = false;