sockets - 带有 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 中的错误?
解决方案
推荐阅读
- python - 更改多索引熊猫数据框中的值
- awk - 在 shell 脚本中增加输入变量号
- typescript - 如何将对象的每个属性都键入为字符串,除了一个?
- esp8266 - 如何在 MicroPython 中检测硬件类型(ESP32 或 ESP8266)?
- algorithm - 值以 2 的幂增加的循环的时间复杂度
- vue.js - CSS Loader 已使用与 API 架构不匹配的选项对象进行初始化
- java - Children of Firebase database path are not attached by DataSnapshot for loop (Android Studio)
- java - Maven Spring启动应用程序 - 8080端口的连接被拒绝错误
- javascript - 在客户端(Web)上存储敏感信息
- asp.net - ML.NET Writes too much Temp Files