C#
SSL証明書のエラーを回避
自分で用意した無効な証明書によってSSL通信をする場合、放っておくとエラーになりますが、ServicePointManager.ServerCertificateValidationCallbackを設定してtrueを返すことで回避できます。
private static bool RemoteCertificateValidationCallback(object sender,
System.Security.Cryptography.X509Certificates.X509Certificate certificate,
System.Security.Cryptography.X509Certificates.X509Chain chain,
System.Net.Security.SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == System.Net.Security.SslPolicyErrors.None)
{
return true;
}
if (sender is System.Net.WebRequest)
{
System.Net.WebRequest Request = (System.Net.WebRequest)sender;
switch (Request.RequestUri.Host)
{
// localhostの場合は証明書が無効であってもエラーにしない。
case "localhost":
return true;
}
}
// 上記以外はエラーにする。
return false;
}
private string GetResponse(string Url)
{
if (System.Net.ServicePointManager.ServerCertificateValidationCallback == null)
{
System.Net.ServicePointManager.ServerCertificateValidationCallback = RemoteCertificateValidationCallback;
}
System.Net.WebRequest Request = System.Net.WebRequest.Create(Url);
using (System.Net.WebResponse Response = Request.GetResponse())
{
using (System.IO.Stream ResponseStream = Response.GetResponseStream())
{
using (System.IO.StreamReader Reader = new System.IO.StreamReader(ResponseStream))
{
return Reader.ReadToEnd();
}
}
}
}