자바 키스 토어 와 truststore 에 따라 SSL context 만 들 기
package com.lz.util;
import com.lz.client.model.MyClientConfig;
import javax.net.ssl.*;
import java.io.File;
import java.io.FileInputStream;
import java.security.KeyStore;
import java.security.cert.X509Certificate;
public class SSLContextUtil {
private static SSLContext configureSsl(String keystorePath,
String keystorePass,
String truststorePath,
String truststorePass) throws Exception {
// Create a trust manager that does not validate certificate chains
TrustManager[] trustManagers = null;
if (truststorePath == null || truststorePass == null) {
trustManagers = new TrustManager[] {new X509TrustManager() {
public java.security.cert.X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}};
} else {
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
File ts = new File(truststorePath);
System.out.println("Reading trust store at " + ts.getAbsolutePath());
FileInputStream fin = new FileInputStream(ts);
ks.load(fin, truststorePass.toCharArray());
fin.close();
TrustManagerFactory kmf = TrustManagerFactory.getInstance(
TrustManagerFactory.getDefaultAlgorithm());
kmf.init(ks);
trustManagers = kmf.getTrustManagers();
for (TrustManager trustManager : trustManagers) {
System.out.println("CONFIGURED TRUST MANAGER:" + trustManager);
}
}
KeyManager[] keyManagers = null;
if (keystorePath != null && keystorePass != null) {
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
File keys = new File(keystorePath);
System.out.println("Reading key store at " + keys.getAbsolutePath());
FileInputStream fin = new FileInputStream(keys);
ks.load(fin, keystorePass.toCharArray());
fin.close();
KeyManagerFactory kmf = KeyManagerFactory.getInstance(
KeyManagerFactory.getDefaultAlgorithm());
kmf.init(ks, keystorePass.toCharArray());
keyManagers = kmf.getKeyManagers();
for (KeyManager keyManager : keyManagers) {
System.out.println("CONFIGURED KEY MANAGER:" + keyManager);
}
}
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(keyManagers, trustManagers, new java.security.SecureRandom());
return sc;
}
public static SSLContext createSslContext(MyClientConfig config) throws Exception {
return configureSsl(config.getKeystorePath(), config.getKeystorePass(),
config.getTruststorePath(), config.getTruststorePass());
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.