TLS1.2 지원하는 서버와의 HTTPS 통신 구현
7375 단어 TLS1.2SSL.NETFrameworkC#TLS
기존 TLS1.0만 대응의 경우
/// <summary>
/// Get Response From TLS Support Server
/// </summary>
private void GetDataByHttps()
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
try
{
var client = new HttpClient();
var res = await client.GetAsync("https://対象サイトFQDN/");
res.Dump();
}
catch (Exception e)
{
logger.Write("Exception:" + e.ToString());
}
}
TLS1.2로 이행한 후, TLS1.0, TLS1.1이 폐지된 경우, 아래와 같은 예가 출력된다
System.Net.WebException: 연결이 끊어졌습니다. 전송할 때 예기치 않은 오류가 발생했습니다. .
---> System.IO.IOException: 원격 당사자가 전송 스트림을 종료했기 때문에 인증에 실패했습니다.
위치 System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
···
해결하려면 .NET4.5를 사용하고 Tls1.2의 SecurityProtocol을 사용합니다.
.NET 4.0 supports up to TLS 1.0 while .NET 4.5 supports up to TLS 1.2
/// <summary>
/// Get Response From TLS or Above Support Server
/// </summary>
private void GetDataByHttpsTls10Above()
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
try
{
var client = new HttpClient();
var res = await client.GetAsync("https://対象サイトFQDN/");
res.Dump();
}
catch (Exception e)
{
logger.Write("Exception:" + e.ToString());
}
}
.NET4.0 이하로 대응하고 싶은 경우, 스스로 포트를 정의
/// <summary>
/// Get Response From TLS or Above Support Server with .Net 3.5 or 4.0
/// </summary>
private void GetDataByHttpsTls10Above()
{
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | (SecurityProtocolType)768 | (SecurityProtocolType)3072;
try
{
var client = new HttpClient();
var res = await client.GetAsync("https://対象サイトFQDN/");
res.Dump();
}
catch (Exception e)
{
logger.Write("Exception:" + e.ToString());
}
}
대상 서버가 TLS를 어디까지 지원하는지 이하 분석 서비스를 이용하면 알기 쉽다.
htps //w w.ぁbs. 이 m/sl로 st/아나 ly 꼭. HTML? d=오후우세. 야호오. 이. jp
※d= 다음에는 FQDN을 붙입니다.
yahoo 예제, TLS1.2도 지원되었지만 기존 SSL, TLS1.0, TLS1.1도 그대로 유지
Reference
이 문제에 관하여(TLS1.2 지원하는 서버와의 HTTPS 통신 구현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tanj/items/31a0fd6b188952886de5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)