【问题标题】:Configuring a Java syslog client to trust self-signed certificates将 Java syslog 客户端配置为信任自签名证书
【发布时间】:2021-02-12 14:12:11
【问题描述】:

我正在评估使用CloudBees Java syslog client 读取日志文件并将其内容发送到我已经构建的系统日志接收器。

我的理解是它的TcpSyslogMessageSender 可用于使用 SSL 证书通过 TLS 发送消息。但是我在任何地方都看不到任何“信任”配置,这让我想知道这个库是否完全支持自签名(非 CA 签名)证书?

如果我在另一端的 syslog 接收器向此客户端提供自签名证书,我如何配置 TcpSyslogMessageSender 以信任它?

【问题讨论】:

    标签: java ssl syslog cloudbees


    【解决方案1】:

    创建 SSLcontext 并在 TcpSyslogMessageSender 中设置

    为了构建 ssl 上下文,我使用了 org.apache.httpcomponents:httpcore,因为使用 java 工具构建 ssl 上下文更加困难

    例子

    public class SyslogTestCloudBees {
            public static void main(String[] args) throws IOException, CertificateException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
                //Initialization 
                TcpSyslogMessageSender messageSender = new TcpSyslogMessageSender();
                messageSender.setDefaultMessageHostname("myhostname"); 
                messageSender.setDefaultAppName("myapp");
                messageSender.setDefaultFacility(Facility.USER);
                messageSender.setDefaultSeverity(Severity.INFORMATIONAL);
                messageSender.setSyslogServerHostname("127.0.0.1");
                messageSender.setSyslogServerPort(1234);
               
                //SSL part
                SSLContext sslContext = SSLContextBuilder.create()
                        .loadTrustMaterial(new File("path/to/truststore"), 
                                                    "truststorepassword".toCharArray())
                        .build();
    
                messageSender.setSSLContext(sslContext);
                messageSender.setSsl(true);
    
                 // send a Syslog message
                messageSender.sendMessage("This is a test message");
            }
    }
    

    【讨论】:

    • 您也可以尝试使用 vm 参数设置信任库 -Djavax.net.ssl.trustStore=/path/to/truststore -Djavax.net.ssl.trustStorePassword=password 或者您可以将证书添加到默认信任库 - /jre_home/lib/security/cacerts(默认密码 changeme),但它为整个应用程序设置证书,而且我认为使用代码的方式是最好的,因为它是明确的
    • Nit:默认的 cacerts 密码是 changeit(不是我)
    猜你喜欢
    • 2021-11-17
    • 2012-07-03
    • 1970-01-01
    • 2018-09-21
    • 2013-07-14
    • 2022-01-07
    • 2020-01-11
    • 2011-02-15
    • 2013-02-08
    相关资源
    最近更新 更多