아직 유효한 SSL 인증서가없는 새 SharePoint를 설정하고 있습니다. 설정에 대한 일부 메타 데이터를 검색하기 위해 Lists 웹 서비스를 호출하고 싶습니다. 그러나 이렇게하려고하면 예외가 발생합니다.
기본 연결이 닫혔습니다. SSL / TLS 보안 채널에 대한 신뢰 관계를 설정할 수 없습니다.
중첩 된 예외에는 오류 메시지가 포함됩니다.
유효성 검사 절차에 따라 원격 인증서가 유효하지 않습니다.
이는 임시 인증서를 사용하고 있기 때문에 정확합니다.
내 질문은 : .Net 웹 서비스 클라이언트 ( SoapHttpClientProtocol )에 이러한 오류를 무시하도록 어떻게 알릴 수 있습니까?
답변
이 문제에 직면했을 때 사용한 접근 방식은 임시 인증서의 서명자를 해당 컴퓨터의 신뢰할 수있는 기관 목록에 추가하는 것이 었습니다.
저는 일반적으로 CACERT로 생성 된 인증서로 테스트를 수행하고이를 신뢰할 수있는 기관 목록에 추가하면 원활하게 작동했습니다.
이렇게하면 응용 프로그램에 사용자 지정 코드를 추가 할 필요가 없으며 응용 프로그램이 배포 될 때 발생할 일을 제대로 시뮬레이션 할 수 있습니다. 따라서 이것이 프로그래밍 방식으로 검사를 해제하는 데 탁월한 솔루션이라고 생각합니다.
답변
또는 인증 오류를 무시하는 콜백 대리인을 등록 할 수 있습니다.
...
ServicePointManager.ServerCertificateValidationCallback = MyCertHandler;
...
static bool MyCertHandler(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors error)
{
// Ignore errors
return true;
}
답변
Jason S의 대답처럼 :
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
나는 이것을 내 Main에 넣고 코드 줄을 호출하기 전에 내 app.config
보고 테스트합니다 (ConfigurationManager.AppSettings["IgnoreSSLCertificates"] == "True")
.
답변
이 방법으로 해결했습니다.
해당 오류를 일으키는 SSL 웹 서비스를 호출하기 직전에 다음을 호출하십시오.
using System.Net;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
/// <summary>
/// solution for exception
/// System.Net.WebException:
/// The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.
/// </summary>
public static void BypassCertificateError()
{
ServicePointManager.ServerCertificateValidationCallback +=
delegate(
Object sender1,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
return true;
};
}
답변
DownloadString을 사용하여 동일한 오류가 발생했습니다. 이 페이지의 제안으로 아래와 같이 작동하도록 만들 수있었습니다.
System.Net.WebClient client = new System.Net.WebClient();
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
string sHttpResonse = client.DownloadString(sUrl);
답변
ServicePointManager.ServerCertificateValidationCallback +=
(mender, certificate, chain, sslPolicyErrors) => true;
invaild ssl을 우회합니다. 웹 서비스 생성자에 작성하십시오.
답변
초보자를 위해 부분 서비스 클래스를 별도의 cs 파일로 확장하고 “imanabidi”에서 제공 한 코드를 추가하여 통합 할 수 있습니다.
