Running Signed Modules between 7.7.7 and 7.7.8

We have been running Ignition 7.7.7 in production and testing 7.7.8.
We use modules developed using SDK, earlier we used to upload unsigned modules to Inductive’s website get them signed and now we are using module signer tool to sign modules.
I tried signing the module using Self-Generated certificate for testing, i observed that i could load this module to 7.7.8 but not to 7.7.7. I ran into below errors while trying to upload. Any suggestions would be appreciated.


com.inductiveautomation.ignition.gateway.modules.ModuleVerificationException: Module signature not present.
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.verifyModuleSignatures(ModuleManagerImpl.java:1627)
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.loadModule(ModuleManagerImpl.java:1509)
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$4.call(ModuleManagerImpl.java:954)
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.executeModuleOperation(ModuleManagerImpl.java:1095)
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.installModuleInternal(ModuleManagerImpl.java:936)
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl.access$1500(ModuleManagerImpl.java:122)
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$InstallCommand.execute(ModuleManagerImpl.java:1825)
at com.inductiveautomation.ignition.gateway.modules.ModuleManagerImpl$Receiver.receiveCall(ModuleManagerImpl.java:1766)
at com.inductiveautomation.ignition.gateway.redundancy.QueueableMessageReceiver.receiveCall(QueueableMessageReceiver.java:45)
at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl.dispatchMessage(RedundancyManagerImpl.java:658)
at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl$ExecuteTask.run(RedundancyManagerImpl.java:678)
at com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$ThrowableCatchingRunnable.run(BasicExecutionEngine.java:537)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

Support for self-signed modules wasn’t added until 7.7.8. They won’t work in prior versions.

Thanks for clarification, may i ask about the impact if we run un-signed modules?

Unsigned modules can only be run by setting a flag that allows any unsigned module to be installed. If that doesn’t worry you then it’s not a problem.

I had to re-compile recently a module that was developped for our company by another company long ago. However I don’t understand how it has to be signed (i want to self-sign it) so I added the line “wrapper.java.additional.10=-Dignition.allowunsignedmodules=true” in the ignition.conf as mentionned here : Allowing unsigned modules
My module is in Trial mode, does this mean I have to sign it for it to be Activated ?

No, that means you need to mark your module is being free. If you’re on a version that accepts unsigned modules and self-signed modules, then you need to override isFreeModule() in your gateway module hook to indicate the module is free.

Will it cause any issues if we don’t override isFreeModule() method in 7.7.8 or 7.9?

Your module will appear to be in trial mode and your gateway will have the banner that shows up when one or more modules is not activated, but unless you actually implement logic in your module that acts on the license state there will be no other effects.