我在密钥库中有一个客户端证书,在信任库中有服务器的公共证书。
System.setProperty("javax.net.ssl.keyStoreType", "pkcs12");
System.setProperty("javax.net.ssl.keyStore", Constants.APPLICATION_HOME + File.separatorChar + this.certificateName);
System.setProperty("javax.net.ssl.keyStorePassword", certificatePass);
System.setProperty("javax.net.ssl.trustStore", Constants.APPLICATION_HOME + File.separatorChar + "jssecacerts");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
System.setProperty("javax.net.ssl.trustStoreType", "JKS");
keyStore = KeyStore.getInstance("PKCS12");
InputStream keyStoreData = new FileInputStream(Constants.APPLICATION_HOME + File.separatorChar + this.certificateName);
this.keyStore.load(keyStoreData, certificatePass.toCharArray());
TrustManagerFactory trustFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
trustFactory.init(this.keyStore);
TrustManager[] trustManagers = trustFactory.getTrustManagers();
sslContext = SSLContext.getInstance("SSL");
sslContext.init(null, trustManagers, null);
SSLContext.setDefault(sslContext);
http-bio-8080-exec-10,处理异常:javax.net.ssl.sslhandShakeException:sun.security.validator.validatoreXception:PKIX路径构建失败:sun.security.provider.certpath.suncertPathBuilderException:找不到请求目标的有效证书路径
我如何做到这一点?
这个例子可以帮助您:
import java.io.File;
import java.io.FileInputStream;
import java.net.InetAddress;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
import java.security.KeyStore;
import org.java_websocket.server.DefaultSSLWebSocketServerFactory;
public class EventWebSocketSecureServer extends EventWebSocketServer {
private static EventWebSocketSecureServer instance;
public static EventWebSocketSecureServer instance() {
return instance;
}
public EventWebSocketSecureServer(int port, InetAddress ip) {
this(port, null, null, ip);
}
public EventWebSocketSecureServer(int port, String keystorepath, String keystorepassword, InetAddress ip) {
super(port, ip);
try {
SSLContext sslContext = SSLContext.getInstance("TLS");
char ksPassword[] = keystorepassword.toCharArray();
if (!keystorepath.equals("")) {
KeyStore ks = KeyStore.getInstance("JKS");
ks.load(new FileInputStream(new File(keystorepath)), ksPassword);
KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
kmf.init(ks, ksPassword);
TrustManagerFactory tmf = TrustManagerFactory.getInstance("SunX509");
tmf.init(ks);
sslContext.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
} else {
sslContext.init(null, null, null);
}
this.setWebSocketFactory(new DefaultSSLWebSocketServerFactory(sslContext));
} catch (Exception e) {
com.gmt2001.Console.out.println("Secure EventSocketServer failed: " + e);
e.printStackTrace();
}
}
}
https://www.programcreek.com/java-api-examples/?code=gloriouseGroll/quorrabot/quorrabot-master/src/com/simeonf/eventwebsocketsecureserver.java
问题内容: 我以前不知道何时定义参数,数据存储在哪里? 如果说我在一个Java文件中使用过,那么我可以在任何地方使用这些属性吗?但这不是真的,我不能在任何地方使用它,只能在我调用的同一个Java文件中使用。 我真的不知道这种方法的原因和作用。 问题答案: 类具有一个名为props 的成员变量,其类型为。除此之外,是类的子类型。所有属性值都存储为键和值。因此,回答另一个问题,您可以在整个应用程序中很
null 为了使SSL在客户机和服务器之间工作,我只需要在使用终端命令(Keytool和openssl)生成用于相互身份验证的keystore和truststore的逐步指南中得到帮助。
他们在两边配置了相同的keystore和truststore文件。我已经打开了它们的keystore和truststore,这是它们的构建方式: keystore entry1-server cert[1]md5:x cert[2]md5:y cert[3]md5:Z TrustStore entry1-root 证书[1]MD5:Z entry2-intermedium 证书[1]MD5:Y 在
问题内容: 我正在尝试设置Spring Security以与Spring Boot的嵌入式Tomcat实例一起使用。有很多基本示例可以执行此操作,但我被困在它们的后面,他们通过HTTP(不是HTTPS)执行基本身份验证。 如果可以访问Tomcat配置文件(),我可能可以使它工作,但是由于Spring Boot使用嵌入式Tomcat实例(否则非常方便),因此我无权访问Tomcat配置文件(至少不能访
我有两个环境来设置我的API,所以我有生产和开发。我首先需要的是找到一种方法来自动完成这一任务,例如,在运行时,不发送任何参数(-d)应用程序找到了一种方法来识别环境,但我没有找到任何方法来完成这一任务。 所以我看了一个教程,在同样有一个方法放了一个环境变量,并定义了我的application.properties。所以在下面的步骤中: > 我在我的应用程序中定义了3个文件,application
问题内容: 如何使用jQuery设置和取消设置Cookie,例如创建一个名为的Cookie 并将其值设置为? 问题答案: 2019年4月更新 Cookie的读取/操作不需要jQuery,因此请不要使用下面的原始答案。 转到https://github.com/js-cookie/js-cookie,然后在其中使用不依赖jQuery的库。 基本示例: 有关详细信息,请参见github上的文档。 参见