我正在使用
librelp
标头创建一个 relp 服务器,以从我也在创建的客户端接收消息。该库的文档非常稀疏,因此我似乎无法为我的服务器配置 TLS。我在下面尝试了两种方法,但我什至不确定它们是独立的还是互补的。我已确定需要以下函数,但是方法 1 似乎提供了方法 2 中的函数传递的所有信息。
省略无关代码。
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?
我有两个问题;
relpEngineListenerConstructFinalize()
relpSrvSetCACert()
、relpSrvSetOwnCert()
和relpSrvSetPrivKey()
是各自密钥或证书的路径,而不是证书/密钥文件的字符TCP 现已正常运行。两种方法均可用于提供所有必需的设置。