首页 > 解决方案 > 带有 TLS 的 log4j2 SocketAppender 不会获取更新的证书

问题描述

我正在使用带有 TLS 和短期证书的 log4j2 SocketAppender。在使用新密钥 + 证书更新密钥库之前,流式传输日志工作正常。新的密钥库似乎没有被使用,在原始证书过期后,我收到以下错误:

2020-12-14 08:25:56,958 Thread-2 ERROR Unable to write to stream TLS:log-transformer:5024 for appender Service_Log_Socket org.apache.logging.log4j.core.appender.AppenderLoggingException: Error writing to TLS:log-transformer:5024 after reestablishing connection for log-transformer/10.102.22.166:5024
    at org.apache.logging.log4j.core.net.TcpSocketManager.write(TcpSocketManager.java:237)
    at org.apache.logging.log4j.core.appender.OutputStreamManager.write(OutputStreamManager.java:190)

我通过在不同的密钥库文件之间交换来更新日志配置,然后是 LoggerContext.reconfigure() 但这没有影响,并且套接字没有更新。

我使用的附加程序:

    <Socket name="Service_Log_Socket_TLS" host="${socketHost}" port="${socketPort}">
      <PatternLayout>
        <pattern>{"version": "0.2.0", "timestamp": "%d{yyyy-MM-dd'T'HH:mm:ss.SSSXXX}", "severity": "${adpLevel}", "service_id": "${serviceId}", "metadata" : {"pod_name": "${podName}", "container_name": "${containerName}", "node_name": "${nodeName}", "namespace": "${namespace}"}, "message": "%r [%t] %-5p %c %x - %maskedmsg%ex"}%n</pattern>
      </PatternLayout>
      <SSL protocol="TLSv1.2">
        <KeyStore location="/tmp/logcli.jks" password="logclipwd"/>
        <TrustStore location="/tmp/rootcert.jks" password="cacert"/>
      </SSL>
    </Socket>

有没有人设法用新的密钥库内容(密钥+证书)更新 SocketAppender,或者这可能是 log4j2 中的错误?

标签: socketsssllog4j2

解决方案


推荐阅读