如何使用 librelp 以编程方式为 relp 服务器配置 TLS

问题描述 投票:0回答:1

我正在使用

librelp
标头创建一个 relp 服务器,以从我也在创建的客户端接收消息。该库的文档非常稀疏,因此我似乎无法为我的服务器配置 TLS。我在下面尝试了两种方法,但我什至不确定它们是独立的还是互补的。我已确定需要以下函数,但是方法 1 似乎提供了方法 2 中的函数传递的所有信息。

方法一:使用TlsConfigCmd

省略无关代码。

main.cpp

<...>
relpSrv_t* pRelpSrv;
relpSrvSetEnableTLS2(pRelpSrv);
relpSrvSetTlsConfigCmd(pRelpSrv, GetFileChars("tls-cmd")); // GetFileChars reads file to char*
relpSrvSetAuthMode(pRelpSrv, (char*)"certvalid");
<...>
relpEngineRun(pRelpSrv);

tls-cmd

type="omrelp"
target="localhost" port="10000"
tls="on"
tls.caCert="ca-cert.pem"
tls.myCert="server-cert.pem"
tls.myPrivKey="server-key.pem"
tls.authMode="name"
tls.tlslib="openssl"
tks.tlscfgcmd="MinProtocol=TLSv1.2"

方法二:设置证书/设置密钥

省略无关代码。

<...>
relpSrv_t* pRelpSrv;
relpSrvSetOwnCert(pRelpSrv, GetFileChars("server-cert.pem");
relpSrvSetCACert(pRelpSrv, GetFileChars("ca-cert.pem");
relpSrvSetPrivKey(pRelpSrv, GetFileChars("server-key.pem");
relpSrvSetAuthMode(pRelpSrv, (char*)"certvalid");
<...>
relpEngineRun(pRelpSrv);

但是,使用这两种方法中的任何一种,我的客户端仍然能够发送消息,并且系统日志接收回调(使用

relpEngineSetSyslogRcv(pRelpEngine, &MyCallback);
设置)仍然会被调用。

如何配置我的 relp 服务器以要求消息使用 TLS?

c++ syslog rsyslog
1个回答
0
投票

我有两个问题;

  1. TCP 设置函数在
    relpEngineListenerConstructFinalize()
  2. 之后调用
  3. 第二个参数
    relpSrvSetCACert()
    relpSrvSetOwnCert()
    relpSrvSetPrivKey()
    是各自密钥或证书的路径,而不是证书/密钥文件的字符

TCP 现已正常运行。两种方法均可用于提供所有必需的设置。

© www.soinside.com 2019 - 2024. All rights reserved.