Itgenale014 als Production release en Beta release naast elkaar

Momenteel is het niet mogelijk om zowel Latest Production Releases als BETA Products naast elkaar te draaien. Wanneer ik de licentie toevoeg aan beta release (20.1.267) ontneemt hij de licentie van productie release (20.0.111). Dit is ook andersom. Getest met Invantive Data Hub en Invantive Query Tool. Ik krijg de volgende foutmelding terug.

itgenale014: The license key is encrypted using an obsoleted encryption method. Please acquire an up-to-date license key and install it.

Welke mappen heb je in %USERPROFILE%\Invantive\Prd\Invantive Data Hub\Inst ?

En in die mappen, staat daar telkens een bestand product-installation-user.settings.settings? Hierin wordt de licentiesleutel versleuteld opgeborgen in het XML-element met de naam EncryptedLicenseKey.

Aan het einde zie je als goed is ook onder AuditEvents hoe vaak het bestand overschreven wordt. Zie je hierin een “ruzie” tussen de twee versies om de licentiesleutel te wijzigen?

  <AuditEvent>
    <Machine>INVANTIVE</Machine>
    <MessageCode>itgenpig002</MessageCode>
    <MomentOccurrence>2020-11-06T13:19:22.7856136Z</MomentOccurrence>
    <Text>Changed setting of NumberOfProductInstallationStarts from '2' to '3'.</Text>
    <User>invantive\businessinnovation</User>
  </AuditEvent>
  <AuditEvent>
    <Machine>INVANTIVE</Machine>
    <MessageCode>itgenpig002</MessageCode>
    <MomentOccurrence>2020-11-06T13:19:22.9486147Z</MomentOccurrence>
    <Text>Changed setting of DateTimeLastUpgradeDetectedOnStart from '11/6/2020 1:17:21 PM' to '11/6/2020 1:19:22 PM'.</Text>
    <User>invantive\businessinnovation</User>
  </AuditEvent>

Vermoedelijk hetzelfde probleem. Raken steeds de licentie kwijt onder v20.0.110.

In %USERPROFILE%\Invantive\Prd\Invantive Data Hub\Inst staat niks. In de onderliggende map Data Hub wel.

3 november beginnen deze corrupte bestanden, dit is ook de datum dat versie 20.0.110 geïnstalleerd is.

There is an error in XML document (19, 34).

itgenemd002: Unknown node ‘LastLanguage’ in XML file on line 19, position 34, context ‘’.

InvantiveSystemException
System.InvalidOperationException

Dit staat in alle bestanden met een naam eindigend op -error.

Het lijkt er op dat hij ping-pongt tussen twee versies van het opslagformaat voor Data Hub installatie-instellingen. Hier zit ook de licentiesleutel versleuteld in opgeborgen.

Zou je eens kunnen proberen om de 20.0.11 te upgraden naar een recente 20.0 release, bijvoorbeeld 20.0.114? 20.0.11 is een van de eerste versies binnen 20.0.

En daarna nogmaals proberen.

Gebruikte RSA Implementatie

Mocht daarna nog niet werken, dan is het mogelijk dat er twee verschillende RSA-implementaties elkaar in de weg zitten.

Kijk daarom wat de waarde is van de omgevingsvariabele INVANTIVE_RSA? Is die leeg/afwezig of gelijk aan INVANTIVE?

Mocht de waarde van INVANTIVE_RSA leeg zijn of anders dan INVANTIVE, stel hem s.v.p. in op INVANTIVE. Laad daarna de licentiesleutel nog een keer op zowel 20.0 als 20.1 BETA indien bij het opstarten een licentiesleutelerror optreedt. En draai daarna de jobs nogmaals:

  • eerst willekeurige job met 20.0
  • daarna een willekeurige 20.1 BETA job
  • dan weer een 20.0 job
  • nogmaals een 20.1 BETA

Werkt het dan?

Achtergrond

In ieder geval in de 17.32 gebruikten we de ingebouwde RSA-encryptie van Windows, maar die bleek niet betrouwbaar geïmplementeerd of te moeilijk voor onze beperkte breincapaciteit. Bij Windows server patches werden regelmatig maar onvoorspelbaar sleutels ongeldig en na patch Tuesday was het afwachten of niet massaal gebeld werd omdat de servers niet meer de jobs konden verwerken. Dit probleem trad op bij zowel on-premise als Azure en AWS servers. De meest voorkomende error was zoiets als:

Could not instantiate RSA crypto service provider for container 'InvantiveDevice' due to System.Security.Cryptography.CryptographicException: Key not valid for use in specified state.

   at System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
   at System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)
   at System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair()
   at System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 dwKeySize, CspParameters parameters, Boolean useDefaultKeySize)
   at (Int32 , CspParameters )
   at IBC.IDJ.U(Int32 , CspParameters )
   at Invantive.Basics.StrongAsymmetricKey.CreateWindowsCryptoProvider(GlobalState owner, ExecutionOptions executionOptions, String keyContainerName)

Onder Linux, Mac OSX, Android en iOS zat vanaf de eerste releases al een eigen RSA-implementatie in Invantive SQL. Gezien de aanhoudende issues met Windows is de standaardinstelling ook voor Windows op enig moment gewisseld van de ingebouwde RSA-encryptie naar de eigen implementatie.

Licentiesleutel meegeven

Een alternatief is eventueel om de licentiesleutel expliciet mee te geven in elke batchjob. Dat kan via de licensekey commandoregeloptie met Invantive Data Hub. Een voorbeeld van een batchjob:

set INVANTIVE_TRACE_FOLDER=c:\trace\xxacme
set INVANTIVE_CONFIGURATION_DATABASES_FOLDER=c:\jobs\xxacme\cfg
set INVANTIVE_PRG=C:\Program Files (x86)\Invantive Software BV\Invantive Data Hub 20.0\Invantive.Producer.QueryEngine.exe
set INVANTIVE_CONN=groep\database
set INVANTIVE_SQL_FILE=c:\jobs\xxacme\sql\job.sql
set INVANTIVE_LOG_FILE=c:\jobs\xxacme\log\job-%%Y%%m.log
set INVANTIVE_LOG_FILE_OVERWRITE=False
set INVANTIVE_INTERACTIVE=False
set INVANTIVE_LICENSE_KEY=lhGCN...CBAcg==

"%INVANTIVE_PRG%" /verbose /database:"%INVANTIVE_CONN%" /file:"%INVANTIVE_SQL_FILE%" /logfile:"%INVANTIVE_LOG_FILE%" /logoverwrite:"%INVANTIVE_LOG_FILE_OVERWRITE%" /interactive:%INVANTIVE_INTERACTIVE% /licensekey:%INVANTIVE_LICENSE_KEY%

IF %ERRORLEVEL% NEQ 0 (
  echo Failed Data Hub job with exit code %ERRORLEVEL%.
  exit /b %ERRORLEVEL%
)

echo Completed Data Hub job with exit code %ERRORLEVEL%.

Of dit volledig gaat werken weet ik niet op voorhand en zeker niet voor de genoemde combinatie van versies. Dat kan proefondervindelijk vastgesteld worden. Het kan zijn dat er alsnog geping-pongd wordt tussen de twee versies en dat daardoor het opstarten toch een itgenale014 foutmelding blijft geven.

1 like

Gebruikte RSA Implementatie

Ik ervaar het zelfde probleem

Getest met beta release (20.1.267) en productie release (20.0.111)

Licentiesleutel meegeven

Lijkt me niet een veilige oplossing? Wachtwoorden of licenties als tekst in een file zetten.

Kun je kijken wat er ingesteld staat bij INVANTIVE_RSA zoals boven beschreven? En indien nodig vervolgstappen volgen.

Qua licentiesleutel meegeven: dat is veilig voor dit toepassingsgebied. Je kunt als je licentiesleutel meegeeft toch ISO 2700[12] compliant werken. Implementeer op goede wijze 2 van de 3: kennis, locatie, bezit. En in de praktijk zal de sleutel niet leiden tot niet-terugdraaibare financiële transacties; als iemand die sleutel meeneemt en je hebt je zaakjes netjes op orde verder dan zal Invantive praktisch in een discussie zitten. In de audit-trails kunnen we goed achterhalen wie/wat/waar een sleutel gebruikt is.

De omgevingsvariabele INVANTIVE_RSA heeft voor ons niet geholpen. Licentiesleutel meegeven
werkt wel.

Dit is geen oplossing maar een workaround, enig idee wanneer dit probleem word opgelost?

Het probleem is nog niet reproduceerbaar helaas. Zou je in de trace files eens kunnen zoeken naar de zinsnede:

platform-specific RSA implementation

Ik ben nieuwsgierig wat daar. Er zijn drie mogelijkheden, telkens voor versie 20.0 en 20.1 BETA:

  • komt niet voor (dan zou traditionele versleuteling gebruikt zijn)
  • er staat Windows in (dat zou alleen kunnen op 20.0)
  • er staat “platform-independent”, dan zou het de Invantive implementatie zijn.

Ben nieuwsgierig naar de resultaten. We gaan in ieder geval versneld op versie 20.0 de Windows RSA versleuteling obsoleten.