자바 가 https 에 연결 할 때 인증서 인증 을 사용 하지 않 습 니 다.
-
import java.io.File;
-
import java.security.cert.CertificateException;
-
import java.util.List;
-
import java.util.Map;
-
-
import javax.net.ssl.SSLContext;
-
-
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-
import org.apache.http.conn.ssl.TrustSelfSignedStrategy;
-
import org.apache.http.conn.ssl.TrustStrategy;
-
import org.apache.http.impl.client.CloseableHttpClient;
-
import org.apache.http.impl.client.HttpClients;
-
import org.apache.http.ssl.SSLContexts;
-
import org.springframework.beans.factory.annotation.Autowired;
-
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
-
import org.springframework.security.core.annotation.AuthenticationPrincipal;
-
import org.springframework.stereotype.Controller;
-
import org.springframework.web.bind.annotation.RequestMapping;
-
import org.springframework.web.bind.annotation.RequestMethod;
-
import org.springframework.web.bind.annotation.ResponseBody;
-
import org.springframework.web.client.RestTemplate;
-
-
public String test_getssoinfo() throws Exception {
-
-
TrustStrategy acceptingTrustStrategy =
new TrustStrategy() {
-
-
@Override
-
public boolean isTrusted(java.security.cert.X509Certificate[] chain,
-
String authType)
throws CertificateException {
-
System.out.println(
"in isTrusted" );
-
// TODO
-
return
true;
-
}
-
} ;
-
-
SSLContext sslContext = org.apache.http.ssl.SSLContexts.custom()
-
.loadTrustMaterial(
null, acceptingTrustStrategy)
-
.build();
-
-
SSLConnectionSocketFactory csf =
new SSLConnectionSocketFactory(sslContext);
-
-
CloseableHttpClient httpClient = HttpClients.custom()
-
.setSSLSocketFactory(csf)
-
.build();
-
-
HttpComponentsClientHttpRequestFactory requestFactory =
-
new HttpComponentsClientHttpRequestFactory();
-
-
requestFactory.setHttpClient(httpClient);
-
-
RestTemplate restTemplate =
new RestTemplate(requestFactory);
-
// RestTemplate restTemplate = new RestTemplate();
-
String userJsonStr = restTemplate.getForObject(
"https://www.xxx.yy/", String.class);
-
return userJsonStr;
-
}
okhttp:
-
X509TrustManager trustManager =
new X509TrustManager()
-
{
-
@Override
-
public void checkClientTrusted(java.security.cert.X509Certificate[] arg0, String arg1) throws java.security.cert.CertificateException
-
{
-
}
-
@Override
-
public void checkServerTrusted(java.security.cert.X509Certificate[] arg0, String arg1) throws java.security.cert.CertificateException
-
{
-
}
-
@Override
-
public java.security.cert.X509Certificate[] getAcceptedIssuers()
-
{
-
StrUtil.log(
"getAcceptedIssuers()");
-
return
new X509Certificate[
0];
-
}
-
};
-
-
SSLContext sslContext = SSLContext.getInstance(
"SSL");
-
sslContext.init(
null,
new X509TrustManager[] { trustManager },
new java.security.SecureRandom());
-
SSLSocketFactory sslSocketFactory = sslContext.getSocketFactory();
-
-
builder.sslSocketFactory(sslSocketFactory, trustManager).hostnameVerifier(
new HostnameVerifier()
-
{
-
@Override
-
public boolean verify(String hostname, SSLSession session)
-
{
-
StrUtil.log(
"verify() hostname:" + hostname +
", session:" + (session !=
null ? session.toString() :
"null"));
-
return
true;
-
}
-
});
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.