AvaTax TLS 1.2 complience

Yes, it uses SOAP.

1 Like

@Jonathan Our testing is setup with this URL and we are still getting an error. I have opened a support ticket with Avalara.

As long as the error is about authentication it means the call is reaching Avalara correctly but failing due to the credentials, otherwise the error would be different.

So does that mean the test worked? And yes, the error is about authentication.

Yes, it is using TLS 1.2 if it is able to connect and check the credentials. You get below error

image

2 Likes

Anyone else dealing with broken integrations today?

I’m trying to help a customer with a custom .NET app they wrote which uses an AvaTax RestClient NuGet Gallery | Avalara.AvaTax 22.3.0

Getting errors like this at runtime:

Unhandled Exception: System.Net.Http.HttpRequestException: An error occurred while sending the request. —> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. —> System.IO.IOException: Authentication failed because the remote party has closed the transport stream.

Pretty sure it’s a TLS issue given the error syntax and timing, but not sure how to solve yet…

I tried going into Visual Studio and updating these packages:

But that did not help.

Going to try working with someone at Avalara, but hoping someone here might have advice in the meantime… @Jonathan @Mark_Wonsil @Olga @josecgomez

Avalara has published that anyone using TLS 1.x on their REST API would lose access do some poking on the forum there’s some info out here.

View this email in your browser Safelist Avalara

Avalara Tax compliance done right123x44

$23x23 AVALARA UPDATE

Upcoming changes to Avalara security infrastructure

Hi Greta,

With our commitment to the security of our customers’ information, Avalara will discontinue support for Transport Layer Security (TLS) version 1.0 and 1.1.

Disabling support of TLS version 1.0 and 1.1 is an ongoing, industry-wide effort to replace obsolete protocol configurations, emphatically recommended by the National Security Agency. See here for more information.

What this means for you:
Avalara will be disabling TLS version 1.0 and 1.1 on the following schedule in 2022:

• February 1, the TLS 1.0 and TLS 1.1 protocols will be disabled on Sandbox environment – TLS 1.2 only for all integrations

• March 31, the TLS 1.0 and TLS 1.1 protocols will be disabled on Production environment – TLS 1.2 only for RESTv2 API end points

• December 31: Production environment – TLS 1.2 only SOAP and REST v1 endpoints

What needs to be done?
You will need to test your Avalara AvaTax integration using your sandbox account and appropriate sandbox URL. If you need a universal sandbox account to test your AvaTax account after the TLS 1.2 upgrade, click here for information. If your system is successful at calculating tax or a test connection succeeds, then your system is secure, and no changes are needed.

Steps to test your AvaTax integration using a sandbox account and the appropriate sandbox URL can be found here.

What happens on March 31, 2022?
Avalara will discontinue support for TLS version 1.0 and 1.1 on our Production RESTv2 API endpoint. If any of your client software is still using these versions to connect to this endpoint, you will need to update to 1.2 or your connection will fail.

Thanks,
Avalara Product Support

2 Likes

Thanks Jose.

I guess what I’m really asking is how do I make this app use TLS 1.2…

I didn’t write it, but in looking through the code and config files I see zero reference to TLS…

Edit: It appears this may do the trick:

        System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
1 Like

Can you post the part of the code that sets up the initial connection? Is it using Josh and Jose’s Nuget package (doesn’t appear in your list of libraries though…doesn’t appear to use RestSharp either… :thinking: )

Seems very straightforward… I’m wondering if the root issue is some weird registry or certificate thing on the machine it’s running on. But that ServicePointManager.SecurityProtocol bit seems to make it work now.

2 Likes

Cool. Avalara must use HttpClient under the hood since this is how one would do the same:

HttpClient httpClient = new HttpClient();  
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
2 Likes

The default TLS used is I believe a mix of OS and .Net, not sure why any recent .Net project would not default to TLS 1.2 already.

This is not recommended because in the future once 1.2 is deprecated and the default is 1.3 you would need to change this line of code, so it is a maintenance issue, although who knows how long it will take for this to happen.

2 Likes

Agreed, although making sure every machine running this app has all the right OS, .NET, registry, etc. settings and whatnot is also a maintenance issue… :thinking:

what ERP version is this?

It’s a custom app, completely separate from Epicor (apart from the fact that there is a client side customization on a screen that allows a user to run the app on demand).

But they’re on 10.2.700 to answer the question.

1 Like

I see. Then in {appname}.exe.config there must be a record to setup .NET Framework:
something like what we have in Epicor.exe.config:
<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" /> </startup>
make sure it contains v4.8 there, that must set Tls to 1.2 by default

4 Likes

Ah ha! I think that was it. Mine shows 4.5.

Thanks Olga!

1 Like

Thanks for chiming in Olga! :pray:

2 Likes