配置 Java 系统日志客户端以信任自签名证书
Configuring a Java syslog client to trust self-signed certificates
我正在评估使用 CloudBees Java syslog client 读取日志文件并将其内容发送到我已经构建的系统日志接收器。
我的理解是其TcpSyslogMessageSender
可用于使用SSL证书通过TLS发送消息。但是我在任何地方都看不到任何“信任”配置,这让我想知道这个库是否完全支持自签名(非 CA 签名)证书?
如果另一端的系统日志接收器向此客户端提供自签名证书,我如何配置 TcpSyslogMessageSender
信任它?
创建 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");
}
}
我正在评估使用 CloudBees Java syslog client 读取日志文件并将其内容发送到我已经构建的系统日志接收器。
我的理解是其TcpSyslogMessageSender
可用于使用SSL证书通过TLS发送消息。但是我在任何地方都看不到任何“信任”配置,这让我想知道这个库是否完全支持自签名(非 CA 签名)证书?
如果另一端的系统日志接收器向此客户端提供自签名证书,我如何配置 TcpSyslogMessageSender
信任它?
创建 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");
}
}