이것은 중요한 질문이다. SSL 3 프로토콜 (1996)은 2014 년에 발표 된 푸들 공격으로 돌이킬 수 없게 깨졌습니다. IETF는 "SSLv3 MUST NOT be used"을 게시했습니다. 웹 브라우저가 그것을 버리고 있습니다. Mozilla Firefox 및 Google Chrome은 이미 그렇게했습니다.
브라우저에서 프로토콜 지원을 확인하는 데 유용한 두 가지 도구는 SSL Lab's client test 및 https://www.howsmyssl.com/입니다. 후자는 자바 스크립트를 필요로하지 않는다, 그래서 당신은 .NET의 HttpClient에서 시도 할 수 있습니다 :
// set proxy if you need to
// WebRequest.DefaultWebProxy = new WebProxy("http://localhost:3128");
File.WriteAllText("howsmyssl-httpclient.html", new HttpClient().GetStringAsync("https://www.howsmyssl.com").Result);
// alternative using WebClient for older framework versions
// new WebClient().DownloadFile("https://www.howsmyssl.com/", "howsmyssl-webclient.html");
결과는 욕입니다 :
당신의 클라이언트에 가능성이 취약, 매우 오래된 TLS 1.0을 사용하고 있습니다 BEAST 공격에 사용할 수있는 암호 스위트가 없습니다. MD5-SHA-1을 대체 할 AES-GCM 및 SHA256과 같은 추가 기능은 TLS 1.0 클라이언트뿐만 아니라 더 많은 현대 암호 제품군에서 사용할 수 없습니다.
그건 그렇습니다. 내가 .NET 프레임 워크 4.6.2을 사용하고
var test_servers = new Dictionary<string, string>();
test_servers["SSL 2"] = "https://www.ssllabs.com:10200";
test_servers["SSL 3"] = "https://www.ssllabs.com:10300";
test_servers["TLS 1.0"] = "https://www.ssllabs.com:10301";
test_servers["TLS 1.1"] = "https://www.ssllabs.com:10302";
test_servers["TLS 1.2"] = "https://www.ssllabs.com:10303";
var supported = new Func<string, bool>(url =>
{
try { return new HttpClient().GetAsync(url).Result.IsSuccessStatusCode; }
catch { return false; }
});
var supported_protocols = test_servers.Where(server => supported(server.Value));
Console.WriteLine(string.Join(", ", supported_protocols.Select(x => x.Key)));
: 그것은 정확히 HTTP 클라이언트가 지원하는 프로토콜을 나열하려면 2006의 인터넷 익스플로러 7
비교, 당신은 아래의 버전 별 테스트 서버를 시도 할 수 있습니다 . HttpClient가 SSL 3 및 TLS 1.0 만 지원한다는 사실을 발견했습니다. 그건 관련이 있습니다. 그것은 TLS 1.1 및 1.2을 지원 HttpClient를 회전,하지만 당신은 System.Net.ServicePointManager.SecurityProtocol
에서 수동으로 설정해야 :이 업데이트
2006의 인터넷 익스플로러 7과 비교입니다.https://stackoverflow.com/a/26392698/284795
왜 나쁜 프로토콜을 사용하는지 모르겠다. 그게 가난한 설치 선택, 주요 보안 버그 (나는 많은 응용 프로그램이 기본값을 변경하지 않을 내기와 동일) 보인다. 어떻게 신고 할 수 있습니까?
서버 (또는 중간에있는 사람)가 요청할 경우 WebRequest를 SSL 3으로 대체 할 예정입니까? –
내가 잘못 본 것이 아니라면 WebRequest는 당겨 받기를 시도하는 서버의 보안 인증서를보고 웹 서버에있는 암호화 스키마를 사용한다고 생각합니다. 나는 당신이 클라이언트 측에서 아무 것도 변경할 필요가 없다고 생각합니다. – Icemanind
방금 SSL3을 지원하지 않는다고 말한 API 소유자가 자신의 서버가 클라이언트에게 SSL3을 사용하도록 요청하지 않았 으면 좋겠다고 생각했습니다. –