Gen GUI client CreateObject to a COM DLL needs TLS 1.2 or above
search cancel

Gen GUI client CreateObject to a COM DLL needs TLS 1.2 or above

book

Article ID: 408543

calendar_today

Updated On:

Products

Gen Gen - Run Time Distributed

Issue/Introduction

Trying to initiate a TLS 1.2 connection to an 3rd party's COM DLL from a Gen 8.6 GUI client and it is failing with "FAILURE : Could not establish secure channel for SSL/TLS with authority 'sims-te".

Using the 3rd party product Wireshark, the trace indicates that the GUI client is sending a TLS 1.0 HELLO.  How can TLS 1.2 be used instead?

The following is a code snippet which shows the Gen action block creating the GUIOBJect which is failing.

1 ! NOTE
1 ! ======================================================================
1 ! Description..: Communicates with external vendor application. This is
1 ! done through a trigger DLL which is a COM object that
1 ! will act as the bridge between GUI Client and external vendor.
1 ! It is responsible for waking the Processing module,
1 ! transmitting the required keywords and resetting the
1 ! Processing module when a transaction is complete.
1 ! ======================================================================
2 !
3 ! EXIT STATE IS processing_ok
4 !
5 ! +-- CASE OF in_com interface_com_area com_method
5 ! CASE "SCAN"
6 ! !
7 ! ! NOTE
7 ! ! ======================================================================
7 ! ! Scan. Create Object.  The Create is what is failing because of TLS V1.
7 ! ! ======================================================================
8 ! !
9 ! ! SET lcl interface_com_area com_object TO CreateObject ( "Ext.Vendor.Com.Interop.Interface" )

 

The Wireshark trace shows TLSv1 Record Layer: Handshake Protocol: Client Hello

Environment

Gen 8.6 GUI Runtime

Resolution

Create a LOADMOD.EXE.config text file with the following configuration information.  Deploy the LOADMOD.EXE.config text file in the same folder as the LOADMOD.EXE.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.Net.DontEnableSystemDefaultTlsVersions=false;Switch.System.Net.DontEnableSchUseStrongCrypto=false" />
  </runtime>
</configuration>

Additional Information

Microsoft page covering the settings "Switch.System.Net.DontEnableSchUseStrongCrypto" and "Switch.System.Net.DontEnableSystemDefaultTlsVersions"Transport Layer Security (TLS) best practices with .NET Framework

Gen EDGE Community page post:  How to initiate a TLS 1.2 connection to external vendor from a GUI client?