Hello Kamailio users,<div dir="auto"><br></div><div dir="auto">I would like testers to try out a new module tls_wolfssl,</div><div dir="auto">an alternate TLS transport based on wolfSSL.</div><div dir="auto"><br></div><div dir="auto">Why another TLS transport implementation?</div><div dir="auto"><br></div><div dir="auto">The travails of using OpenSSL >= 1.1.1 in Kamailio’s multi-process</div><div dir="auto">paradigm has been documented by OpenSIPS (and that sister</div><div dir="auto">project has implemented tls_wolfssl). Essentially, OpenSSL makes</div><div dir="auto">no concessions to the multi-process use case and in fact has implementation </div><div dir="auto">details that work against global shared memory structures.</div><div dir="auto"><br></div><div dir="auto">As a result Kamailio contains some tricky code</div><div dir="auto">* a pthread polyfill in core</div><div dir="auto">* duplicated SSL_CTX per worker</div><div dir="auto">* atexit workaround</div><div dir="auto"><br></div><div dir="auto">How to test?</div><div dir="auto"><br></div><div dir="auto">The code is currently in master and can be built in the usual way.</div><div dir="auto">Debian has 5.2.0 libwolfssl-dev needed; for some RPM distros (el8, el9,</div><div dir="auto">fc36) I have created a Copr repository </div><div><a href="https://copr.fedorainfracloud.org/coprs/beaveryoga/wolfSSL/">https://copr.fedorainfracloud.org/coprs/beaveryoga/wolfSSL/</a></div><div dir="auto"><br></div><div dir="auto">Known limitations </div><div dir="auto">The current state can be considered as identical to tls+OpenSSL 1.1.1/3.0.x.</div><div dir="auto"><br></div><div dir="auto">Old TLS protocols < 1.2 and cipher list configuration don’t work, i.e., only</div><div dir="auto">TLS 1.2 and 1.3 work with the default cipher list.</div><div dir="auto"><br></div><div dir="auto">In your configuration just replace</div><div dir="auto">loadmodule “tls.so”</div><div dir="auto">with</div><div dir="auto">loadmodule “tls_wolfssl.so”</div><div dir="auto"><br></div><div dir="auto">The rest of the TLS configuration can remain unchanged unless</div><div dir="auto">you are using a funky protocol version/cipher list combination.</div><div dir="auto"><br></div><div dir="auto">Thanks!</div><div dir="auto"><br></div><div dir="auto">S-P</div><div dir="auto"><br></div>