어느날 갑자기 잘되던 API 전송이 되지않기 시작
발생에러내용
System.Net.WebException: The SSL connection could not be established, see inner exception.
---> System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.
---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid because of errors in the certificate chain: NotTimeValid
PostMan을 이용해 보내면 문제없이 응답함.
ServicePointManager.ServerCertificateValidationCallback +=
(sender, cert, chain, sslPolicyErrors) => true;
위의 문구를 추가하니 정상적으로 작동.
하지만 인증서 유효성검사를 하지않는 방법이라고해서 다른방법 검토
// Validation of SSL certificates
ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateServerCertificate);
private bool ValidateServerCertificate(object sender, X509Certificate? certificate, X509Chain? chain, SslPolicyErrors sslPolicyErrors)
{
if(sslPolicyErrors == SslPolicyErrors.None)
{
// No errors encountered, certificate is considered valid
return true;
}
else
{
logManager.Error("SSl policy error issued");
return false;
}
}
sender: 유효성 검사 이벤트를 트리거한 객체로, 일반적으로 SslStream 클래스 또는 관련 클래스의 인스턴스입니다.
certificate: SSL 핸드셰이크 중에 제공된 서버의 X.509 인증서입니다. 이 인증서를 검사하여 만료 날짜, 주체, 발급자 또는 유효성 검사에 필요한 기타 속성과 같은 정보를 추출할 수 있습니다.
chain: 서버의 인증서까지 이어지는 인증서 체인을 나타내는 X509Chain 개체입니다. 이렇게 하면 중간 인증서를 포함하여 전체 체인을 검사할 수 있습니다.
sslPolicyErrors: SSL/TLS 인증서 유효성 검사 프로세스 중에 발생한 모든 오류를 나타내는 열거형입니다. 여기에는 인증서 만료, 인증서 이름 불일치 또는 인증서 체인 오류와 같은 오류가 포함될 수 있습니다.