Can I use TLS1.2 with an MLLP adapter? - biztalk

I'm being asked to send HL7 messages to an Azure-hosted system using MLLP/TCP with a TLS1.2 connection and client certificate for validation.
Is there a way of making BizTalk use TLS 1.2 with the MLLP adapter on a send port? I can't get it to send anything other than plan text. Or is a VPN the only solution here?
I have BizTalk 2016 CU9 installed and .Net 4.6.2

BizTalk MLLP adapter does not support TLS. One option which is not ideal is to setup a secured VPN tunnel.
It shouldn’t be hard to add this to adapter though by BizTalk product team.

There are several options to make BizTalk send ports use TLS 1.2
Add a WCF Endpoint Behaviour that set the TLS in code, but the MLLP probably doesn't have this option.
Make the .Net Layer use TLS 1.2, and that is through some registry key changes. Note: That this will make all connections use TLS 1.2 in preferences. There is also the option of disabling all the older TLS version and Ciphers, but that would require testing all interfaces. With earlier version of BizTalk that also required upgrading .Net and installing a later version of the SQL Client, but BizTalk 2016 should be fine. Again, not something you can to with MLLP as it doesn't support TLS at all.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]
"SchUseStrongCrypto"=00000001
How to transmit data securely using MLLP adapter (MSDN Forum), which talks about a VPN tunnel or IPSEC to secure the channel for MLLP
See
Support for TLS 1.2 protocol in BizTalk Server (Microsoft)
Configure TLS 1.2 On BizTalk Server (Article)
BizTalk 2016 FP 3 CU6 and TLS 1.2 not working (StackOverflow)

Related

Do we have support for TLS 1.3 in .NET Framework v4.8?

We have an FTP Client written in .NET Framework v4.8 using TCP. We notice that the our FTP client application does not connect an FTP Server that has TLS 1.3 support. We are running the FTP Client in Windows 11 OS, which officially supports TLS 1.3. We also enabled the TLS 1.3 support via registry hack and followed this recommendation. But still, our FTP Client is unable to connect to the FTP server via TLS 1.3.
Also, According to this article, it states that TLS 1.3 support would come in mid-2021 in .NET Framework, however, there is no latest information.
Does anyone know if .NET Framework v4.8 supports TLS 1.3 or not? I could not find any good article which clarify this statement.

BizTalk application consuming api changing to TSL 1.0 to 1.2.What is the Required change in BizTalk side?

In my BizTalk application I am consuming one rest API which is TSL 1.0.
Now API team going t change the TSL 1.0 to TSL 1.2.
I am using BizTalk 2013 R2.
Any change need to do at BizTalk end to call TSL 1.2 API?
As per Support for TLS 1.2 protocol in BizTalk Server and the options listed on 3155464 MS16-065: Description of the TLS/SSL protocol information disclosure vulnerability (CVE-2016-0149): May 10, 2016
You either
Programmatically make the send port change to using TLS 1.2. This can be done either via an End Point behaviour, for example Salesforce disabling TLS 1.0 – How to get it working for API calls via BizTalk, or by setting it in the Orchestration
or
Make the entire BizTalk server use TLS 1.2. For that see Unable to connect to BizTalk group after enabling TLS 1.2 and disabling lower versions of SSL and TLS This involves installing the laster CU and the SQL client as per the Microsoft articles.

Unable to connect to BizTalk group after enabling TLS 1.2 and disabling lower versions of SSL and TLS

After diabling lower security protocol versions SSL3.0, TLS1.0, TLS1.1 and enabling TLS 1.2, I am not able to connect to BizTalk group or use BizTalk server. The BizTalk server version I am using is 2013R2. Following is the error:
An attempt to connect to "BizTalkMgmtDb" SQL Server database on server "XXXXXX" failed.
Internal Error from OLEDB provider: "[DBNETLIB][ConnectionOpen (SECCreateCredentials()).]SSL Security error."
Also when I enable TLS 1.2 without disabling the lower versions I don't see any problems and everything seems working fine
Please suggest what can be done to make the server compatible while disabling lower versions
You need to install CU 8 and and also the prerequisite SQL Server 2012 Native Client version 11 as per Support for TLS 1.2 protocol in BizTalk Server
See also BizTalk: Configure TLS 1.2 on BizTalk Server
For BizTalk 2013 R2 we also installed .Net 4.6 and updated the BAM connection strings to use the SQL Server Native Client 11.
You will also have to ensure that any other endpoints that BizTalk communicates with or that communicates with BizTalk is capable of TLS 1.2, for anything using either HTTPS, FTPS or SQL.
So any SQL server you connect to also need to have SQL Server 2012 Native Client version 11 or above, and .NET 4.5 or greater.
Are you added this key on regedit?
Going to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4.0.30319
then Add--> New DWORD --> SchUseStrongCrypto with value 1
Needing to do same operation on HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft.NETFramework\v4.0.30319

TLS version support for BizTalk 2016

How can I check on which TLS version our BizTalk 2016 server is running
I want to know if TLS1.2 is not enabled how can I enable the same on BizTalk 2016 server.
As BizTalk 2016 is on .Net 4.6 this tries to use TLS 1.2 first but falls back to TLS 1.1 & TLS 1.0 unless they are disabled.
MS16-065: Description of the TLS/SSL protocol information disclosure vulnerability (CVE-2016-0149): May 10, 2016
Note The .NET Framework 4.6 and later versions use TLS 1.2, TLS 1.1, and TLS 1.0 as the protocol defaults. This is discussed in the Microsoft Security Advisory 2960358 topic on the Microsoft TechNet website.
If you want to make BizTalk use TLS 1.2 exclusively you need to make sure you have either Feature Pack 2 or Feature Pack 3 (I would recommend the latest always), or if not installing feature packs, install CU 5 for BizTalk 2016. You also need to ensure that any system BizTalk connects to, including the BizTalk database server support TLS 1.2
Note there is a prerequisite:
SQL Server 2012 Native Client version 11 should be installed on all BizTalk Server systems before you apply this update. If the SQL Native Client is not installed before you apply cumulative update, the installation may not complete.
Both of those articles then link you to Support for TLS 1.2 protocol in BizTalk Server and also links leading to MS16-065: Description of the TLS/SSL protocol information disclosure vulnerability (CVE-2016-0149): May 10, 2016

How to open a TCP connection from a WebMatrix 3 project?

I need to talk to an external server that only accepts TCP connections and doesn't support HTTP connections. I know the IP address and the port since the service is running on a Linux box I have in a Virtual Machine on Azure. What I can't figure out is how to do this from a WebMatrix 3 project since it only supports .NET 4.0, not .NET 4.5, and 4.5 has the assemblies that support TCP client work.
I've tried to use the WebSocket4Net NuGet package, installed into WebMatrix 3, but I'm not sure connecting as a client TCP socket is what it does. When I try connecting to the server using code like this (note, the URL is fake except for the "ws:" protocol prefix, the only prefix WebSocket4Net seems to support):
WebSocket4Net.WebSocket("ws://myazuredns.cloudapp.net:6721");
ws.Open();
The connection times out. I know that the service at the foreign web site is active since I checked many times that the service is listening on the right port using netstat. How can I do TCP client socket work from a WebMatrix 3 project?

Resources