Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Web Client Exception: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel

Tags:

c#

.net

ssl

I have a simple app that uses the C# Web Client class to download a websites HTML. This is a stripped down sample of the code I'm using:

WebClient wc = new WebClient(); wc.Headers.Add("user-agent",     "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)"); htmlCode = wc.DownloadString("https://www.oig.hhs.gov/exclusions/exclusions_list.asp"); 

There seems to be an issue with the websites certificate, because I encounter this exception:

The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel." "The remote certificate is invalid according to the validation procedure.

If you copy and paste the link into a browser, it requires you to agree to the risks before allowing you to view the site. Its a government website, so I'm not worried about any viruses or anything. Is there anyway to tell the web client to bypass this issue, and continue to the site?

like image 789
broke Avatar asked Sep 27 '12 15:09

broke


People also ask

How do you fix the underlying connection was closed could not establish trust relationship for the SSL TLS secure channel?

A common reason you may receive the error Could not establish trust relationship for the SSL/TLS secure channel is because the SSL certificate isn't trusted. If the SSL certificate is not trusted, you will need to install the SSL certificate's root certificate.

Could not establish trust relationship for the SSL TLS with authority?

Answer. If you are still failing to establish trust relationship for the SSL/TLS secure channel, check if your SSL Certificate has expired. In the case that it is, please use a valid SSL Certificate that has not yet expired.

What is SSL TLS secure channel?

SSL/TLS creates a secure channel between a users' computer and other devices as they exchange information over the internet, using three main concepts: encryption, authentication, and integrity to accomplish this. Encryption hides data being transferred from any third parties.


1 Answers

As far as I know this is because they use a invalid or expired SSL certificate. You can bypass (ignore) it by using:

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

Edit 2015:

This post is getting a lot of upvotes, but I regret my answer. It may remove your error, but it won't fix the issue. Accepting any SSL certificates will leave you vulnerable for man in the middle attacks, so it's generally a very bad idea. I will leave this answer for future reference, but please take note that you should try to fix the issue at the root, namely by making sure the SSL certificate is valid.

like image 55
Leon Cullens Avatar answered Oct 06 '22 02:10

Leon Cullens