<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">I'm trying to get mutual TLS validation working and seem to be having issues with the config.  The situation I've got is that I'm trying to accept a stream from another organization.  And so my preferred configuration involves two CA's.. mine and theirs.  My syslog-ng server needs to validate their server certificate using their CA certificate, and their syslog-ng client needs to validate my server certificate using my CA certificate. I've set up a test using the server that will be production, and a handy VM I control.  <div><br></div><div>I assumed that it would be as simple as using the example configs from the manual [0], and anywhere a CA cert is involved just pick the appropriate one: store their CA on my server, and my CA on "their" server (the test VM).  That didn't work.</div><div><br></div><div>I've backed down to trying to get this working using all certificates signed by my CA, but I can't seem to make that work either.  The error timing I'm getting doesn't quite match similar errors I can see reported online.</div><div><br></div><div>If I don't have the correct CA cert on the client, then I see a connect, immediate disconnect, and a "SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca" error on the server.  If I do have the CA cert on the client, I see a connect ... and then nothing until I try to send a message.  Then I get the same error on the server and a logged "Certificate validation failed" error on the client referencing the server's cert, and a disconnect.</div><div><br></div><div>Server logs:</div><div><div><div>Sep 17 23:17:49 adm syslog-ng[31128]: Syslog connection accepted; fd='24', client='AF_INET(<a href="http://216.235.10.40">216.235.10.40</a>:<wbr>54063)', local='AF_INET(<a href="http://64.191.0.17:6514" target="_blank">64.191.0.17:<wbr>6514</a>)'</div><div>Sep 17 23:18:01 adm syslog-ng[31128]: SSL error while reading stream; tls_error='SSL routines:ssl3_read_bytes:tlsv1 alert unknown ca'</div><div>Sep 17 23:18:01 adm syslog-ng[31128]: I/O error occurred while reading; fd='24', error='Connection reset by peer (104)'</div><div>Sep 17 23:18:01 adm syslog-ng[31128]: Syslog connection closed; fd='24', client='AF_INET(<a href="http://216.235.10.40">216.235.10.40</a>:<wbr>54063)', local='AF_INET(<a href="http://64.191.0.17:6514" target="_blank">64.191.0.17:<wbr>6514</a>)'</div></div></div><div><br></div><div>Client logs:</div><div><div>Sep 17 23:17:48 ubuntu syslog-ng[4603]: syslog-ng starting up; version='3.13.2'</div><div>Sep 17 23:17:48 ubuntu syslog-ng[4603]: Syslog connection established; fd='13', server='AF_INET(<a href="http://64.191.0.17">64.191.0.17</a>:<wbr>6514)', local='AF_INET(<a href="http://0.0.0.0:0" target="_blank">0.0.0.0:0</a>)'</div><div>Sep 17 23:18:00 ubuntu syslog-ng[4603]: Certificate validation failed; subject='emailAddress=<a href="mailto:xxx@dns-oarc.net" target="_blank">xxx@dns-<wbr>oarc.net</a>, CN=64.191.0.17, O=OARC\, Inc., L=Indianapolis, ST=Indiana, C=US', issuer='emailAddress=<a href="mailto:xxx@dns-oarc.net" target="_blank">xxx@dns-<wbr>oarc.net</a>, CN=OARC Inc. Certificate Authority, O=OARC\, Inc., ST=Indiana, C=US', error='unable to get local issuer certificate', depth='0'</div><div>Sep 17 23:18:00 ubuntu syslog-ng[4603]: SSL error while writing stream; tls_error='SSL routines:tls_process_server_<wbr>certificate:certificate verify failed'</div><div>Sep 17 23:18:00 ubuntu syslog-ng[4603]: I/O error occurred while writing; fd='13', error='Broken pipe (32)'</div><div>Sep 17 23:18:00 ubuntu syslog-ng[4603]: Syslog connection broken; fd='13', server='AF_INET(<a href="http://64.191.0.17">64.191.0.17</a>:<wbr>6514)', time_reopen='60'</div></div><div><br></div><div>Note the 12 second gap between startup and cert validation failure.  The failure coincides with logging a message that should be sent from the client to the server.</div><div><br></div><div>Server config:</div><div><div>source tls_source {</div><div><span style="white-space:pre-wrap"> </span>network(ip(64.191.0.17) port(6514)</div><div><span style="white-space:pre-wrap">               </span>transport("tls")</div><div><span style="white-space:pre-wrap">               </span>tls(</div><div><span style="white-space:pre-wrap">                     </span>key-file("/etc/ssl/private/<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">64.<wbr>191.0.17</span>.key")</div><div><span style="white-space:pre-wrap">                     </span>cert-file("/etc/ssl/certs/<span style="font-size:small;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial;float:none;display:inline">64.<wbr>191.0.17</span>.crt")</div><div><span style="white-space:pre-wrap">                      </span>ca-dir("/etc/ssl/certs")</div><div><span style="white-space:pre-wrap">               </span>)</div><div><span style="white-space:pre-wrap">        </span>);</div><div>};</div></div><div><br></div><div>Client config:</div><div><div>destination d_tls {</div><div><span style="white-space:pre-wrap">       </span>network("64.191.0.17" port(6514)</div><div><span style="white-space:pre-wrap">               </span>transport("tls")</div><div><span style="white-space:pre-wrap">               </span>tls(</div><div><span style="white-space:pre-wrap">                     </span>ca-dir("/etc/ssl/certs")</div><div><span style="white-space:pre-wrap">                       </span>key-file("/etc/ssl/private/<wbr>216.235.10.40.key")</div><div><span style="white-space:pre-wrap">                      </span>cert-file("/etc/ssl/certs/216.<wbr>235.10.40.crt")</div><div><span style="white-space:pre-wrap">               </span>)</div><div><span style="white-space:pre-wrap">        </span>);</div><div>};</div></div><div><br></div><div>I have the CA cert stored as /etc/ssl/certs/server_ca.pem on both systems.</div><div><br></div><div>Any idea what's wrong here? And, should I be able to get this to work using different CAs for the client and server certs?</div><div><br></div><div>Thanks</div><div><br></div><div>[0]: <<a href="https://www.syslog-ng.com/technical-documents/doc/syslog-ng-open-source-edition/3.16/mutual-authentication-using-tls#TOPIC-956368" target="_blank">https://www.syslog-ng.com/<wbr>technical-documents/doc/<wbr>syslog-ng-open-source-edition/<wbr>3.16/mutual-authentication-<wbr>using-tls#TOPIC-956368</a>></div></div></div></div></div></div></div></div></div>