We were configuring SSL on our gateway and apparently some SSL configuration was not done correctly. Since "Force Secure Redirect" was enabled, we are no longer able to access the gateway.
I restored a production backup (with everything disabled) to my local machine (after installing the same Ignition version on it) and was able to access the gateway using http://localhost:8088.
The reason I restored to my local machine was becuase I wanted to access an old version of the tag provider through the Tag Browser in the designer but found that I could not open the designer (an error came up in the launcher before asking for credentials Error launching application: ConnectException: Connection refused:getsockopt).
I believe this is due to the fact that my local machine does not have SSL certs and the Force Secure Redirect setting was enabled and grayed out. Settinggateway.forceSecureRedirect key to false in data/gateway.xmland restarting gateway allowed me to access designer through http://localhost:8088 (I am kind of surprised I was able to access the gateway initially after restore with http://localhost:8088…).
When the designer opened, I got an error:
java.util.concurrent.ExecutionException: com.inductiveautomation.ignition.client.gateway_interface.GatewayException: java.lang.Exception: Provider 'default' not found:
at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source)
at com.inductiveautomation.ignition.designer.sqltags.opcbrowser.OpcBrowseExecutor$ProviderBrowseExecutor.browse(OpcBrowseExecutor.java:49)
at com.inductiveautomation.ignition.designer.sqltags.opcbrowser.AbstractOPCTreeNode.browse(AbstractOPCTreeNode.java:35)
at com.inductiveautomation.ignition.designer.sqltags.opcbrowser.OPCFolderNode.loadChildren(OPCFolderNode.java:52)
at com.inductiveautomation.ignition.client.util.gui.tree.AbstractAsynchronousTreeNode$Loader.run(AbstractAsynchronousTreeNode.java:82)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: com.inductiveautomation.ignition.client.gateway_interface.GatewayException: java.lang.Exception: Provider 'default' not found:
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.newGatewayException(GatewayInterface.java:360)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.sendMessage(GatewayInterface.java:334)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.sendMessage(GatewayInterface.java:287)
at com.inductiveautomation.ignition.client.gateway_interface.GatewayInterface.invoke(GatewayInterface.java:967)
at com.inductiveautomation.ignition.client.tags.impl.GatewayTagInterface.browseTagDataSourcesAsync(GatewayTagInterface.java:183)
at com.inductiveautomation.ignition.client.tags.impl.GatewayTagInterface$GatewayProviderProxy.browseTagDataSourcesAsync(GatewayTagInterface.java:299)
at com.inductiveautomation.ignition.client.tags.impl.ClientTagManagerImpl.browseTagDataSourcesAsync(ClientTagManagerImpl.java:194)
... 9 more
Caused by: java.util.concurrent.ExecutionException: java.lang.Exception: Provider 'default' not found:
at java.util.concurrent.CompletableFuture.reportGet(null)
at java.util.concurrent.CompletableFuture.get(null)
at com.inductiveautomation.ignition.gateway.servlets.gateway.functions.TagProviderRpc.browseTagDataSources(TagProviderRpc.java:852)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(null)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(null)
at java.lang.reflect.Method.invoke(null)
at com.inductiveautomation.ignition.gateway.servlets.gateway.AbstractGatewayFunction.invoke(AbstractGatewayFunction.java:228)
at com.inductiveautomation.ignition.gateway.servlets.Gateway.doPost(Gateway.java:435)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:523)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:590)
at com.inductiveautomation.ignition.gateway.bootstrap.MapServlet.service(MapServlet.java:86)
at org.eclipse.jetty.servlet.ServletHolder$NotAsync.service(ServletHolder.java:1410)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:764)
at org.eclipse.jetty.servlet.ServletHandler$ChainEnd.doFilter(ServletHandler.java:1665)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:598)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1580)
at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1384)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1553)
at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1306)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
at com.inductiveautomation.catapult.handlers.RemoteHostNameLookupHandler.handle(RemoteHostNameLookupHandler.java:121)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:301)
at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51)
at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:141)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122)
at org.eclipse.jetty.server.Server.handle(Server.java:563)
at org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598)
at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501)
at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100)
at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:199)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149)
at java.lang.Thread.run(null)
Ignition v8.1.47 (b2025022612)
Java: Azul Systems, Inc. 17.0.13
Ahhh - I did not realize the tag provider would be disabled. Ok so I’m guessing enabling this will solve my issue - I am just a little concerned that after I do so, things like tag event scripts, alarm notifications etc. will fire from my local machine - I may just disconnect my machine from the network before doing so. Thanks Phil!
Yes, this is a hazard. I think this is the single most important reason to never install Ignition in localhost. Always use virtual machines or containers. If you don't know how to do the latter, drop everything and learn it, immediately.