2017-12-13 7 views
0

URL을 사용하여 SOAP을 사용하는 웹 서비스에 연결합니다. URL에 올바른 https 프로토콜이 없으며 브라우저를 통해 액세스하려는 경우이 연결에 '위험'을 받아 들여야합니다.HTTPS 인증서 무시

프로그래밍 방식으로 액세스하려는 경우 문제가 발생합니다. SOAP POST 요청을 보내려고하면 연결이 닫히고 예외가 포착됩니다.

"The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel."

은 분명히이 문제는 일반적인, 그리고 많은 자원이 thisthis이 가장 upvoted되는 볼 수 있습니다. 내가 코드의 일부 시도

:

ServicePointManager.ServerCertificateValidationCallback += (sender, cert, chain, sslPolicyErrors) => true;

뿐만 아니라 연결이 작동하지 않았다,하지만 지금은 주어진 오전 :

"The remote server returned an error: (500) Internal Server Error."

지금 내 질문입니다. 위의 코드는 프로토콜을 https에서 http으로 전환합니까?

이 코드 줄은 실제로 무엇을하지 않습니까?

+0

"연결이 작동하지 않았지만 이제는 다음과 같이 알려졌습니다. "원격 서버에서 (500) 내부 서버 오류 "오류를 반환했습니다. 실제로이 연결은 _did_ 작업을 의미하지만 원격 서버는 – ADyson

+0

"위의 코드는 프로토콜을 https에서 http로 전환합니까?"아니요. 코드는 요청한 HTTP 스택이 인증서 유효성 검사 오류를 무시하고 요청을 처리하도록합니다. 서면으로, 이것은 모든 호스트에 대한 모든 요청에 ​​영향을 미친다. – spender

+0

@spender 나는 많은 연결을 가지고 있지만 그것들은 모두 같은 호스트를 사용하므로 나는 그것에 대해 걱정할 필요가 없다. 그래서 기본적으로 그 코드 부분은 그 부분을하고있다. 어떤 방식 으로든 URL이나 연결을 '변경'하지 않습니다. 따라서 내 요청이 올바르지 않거나 원격 서버가 처리 할 수 ​​없습니까? – Noel

답변

0

이 답변을 할 것인지 잘 모르겠지만, 그것은 주석에 적합하지 않은 것처럼 ...

하지 바이 패스 인증서 유효성 검사를 수행합니다. TLS의 올바른 버전 만 설정하면됩니다. 당신은 그 인증서를 획득해야 할 수도 있습니다 작동하지 않는 경우 :

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 

을 한 번에 하나를 사용하는 대신에 그들을 함께 OR 처리에서 지원하는 가장 높은 버전을 찾기 위해이 사용하는 하나 하나를 실험 할 수있다 서비스 또는 인증서 체인의 상위 서비스

+0

이게 내가 처음 시도한 것 같아요.하지만 내일 다시 시도 할게요. 내 사무실로 돌아갈거야. 왜냐면 지금 코드가 없기 때문이야. – Noel

+0

첫 번째 시도 만 할 수는있어. 'Tls11'과'Tls12'는 컴파일러에 알려진 명령이 아닙니다. – Noel

+0

사용중인 .net 프레임 워크의 버전은 무엇입니까? 4.5 세 이상이 필요합니다. 대부분의 서비스가 TLS1.1 또는 1.2를 필요로하기 때문에 업데이트해야 할 수도 있습니다. – Crowcoder