A couple of weeks ago my Graylog GELF TCP Input suddenly stopped working. I have tried several suggestions I have found on postings of similar issues with no luck, as well as a few other things. All other inputs on the server are working fine, and the HTTPS is valid and cert confirmed OK. This seemed to happen out of the blue, with no manual updates recently performed and not close to certificate expiration.
Things that have been tried:
- Creating and implementing a brand new certificate & private key from scratch
- Rolling back the last few Graylog patches
- Downgrading Java OpenJDK
- Adding
enabled_tls_protocols = TLSv1.2
to the server config file
Error:
2021-07-07T08:53:22.762-04:00 WARN [ChannelInitializer] Failed to initialize a channel. Closing: [id: 0x4631075c, L:/SERVER:12202 - R:/CLIENT:50608]
org.bouncycastle.pkcs.PKCSException: Encountered unexpected object type: org.bouncycastle.cert.X509CertificateHolder
at org.graylog2.plugin.inputs.transports.util.KeyUtil.privateKeyFromFile(KeyUtil.java:272) ~[graylog.jar:?]
at org.graylog2.plugin.inputs.transports.AbstractTcpTransport$3.createSslEngine(AbstractTcpTransport.java:346) ~[graylog.jar:?]
at org.graylog2.plugin.inputs.transports.AbstractTcpTransport$3.call(AbstractTcpTransport.java:323) ~[graylog.jar:?]
at org.graylog2.plugin.inputs.transports.AbstractTcpTransport$3.call(AbstractTcpTransport.java:319) ~[graylog.jar:?]
at org.graylog2.plugin.inputs.transports.NettyTransport$1.initChannel(NettyTransport.java:105) ~[graylog.jar:?]
at io.netty.channel.ChannelInitializer.initChannel(ChannelInitializer.java:129) [graylog.jar:?]
at io.netty.channel.ChannelInitializer.handlerAdded(ChannelInitializer.java:112) [graylog.jar:?]
at io.netty.channel.AbstractChannelHandlerContext.callHandlerAdded(AbstractChannelHandlerContext.java:938) [graylog.jar:?]
at io.netty.channel.DefaultChannelPipeline.callHandlerAdded0(DefaultChannelPipeline.java:609) [graylog.jar:?]
at io.netty.channel.DefaultChannelPipeline.access$100(DefaultChannelPipeline.java:46) [graylog.jar:?]
at io.netty.channel.DefaultChannelPipeline$PendingHandlerAddedTask.execute(DefaultChannelPipeline.java:1463) [graylog.jar:?]
at io.netty.channel.DefaultChannelPipeline.callHandlerAddedForAllHandlers(DefaultChannelPipeline.java:1115) [graylog.jar:?]
at io.netty.channel.DefaultChannelPipeline.invokeHandlerAddedIfNeeded(DefaultChannelPipeline.java:650) [graylog.jar:?]
at io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:502) [graylog.jar:?]
at io.netty.channel.AbstractChannel$AbstractUnsafe.access$200(AbstractChannel.java:417) [graylog.jar:?]
at io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:474) [graylog.jar:?]
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) [graylog.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472) [graylog.jar:?]
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:384) [graylog.jar:?]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [graylog.jar:?]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [graylog.jar:?]
at com.codahale.metrics.InstrumentedExecutorService$InstrumentedRunnable.run(InstrumentedExecutorService.java:180) [graylog.jar:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_292]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_292]
at com.codahale.metrics.InstrumentedThreadFactory$InstrumentedRunnable.run(InstrumentedThreadFactory.java:66) [graylog.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_292]
Input config (note that the cert & private key are not encrypted therefore not needing a tls key password):
bind_address: 0.0.0.0
decompress_size_limit:8388608
max_message_size:2097152
number_worker_threads:4
override_source:<empty>
port:12202
recv_buffer_size:1048576
tcp_keepalive:false
tls_cert_file:/etc/graylog/server/graylog-certificate.pem
tls_client_auth:disabled
tls_client_auth_cert_file:<empty>
tls_enable:true
tls_key_file:/etc/graylog/server/graylog-key.pem
tls_key_password:
use_null_delimiter:true
OS: Debian 9
Graylog Version: 4.1.0
Java: OpenJDK 1.8.0_292