WolfSSL sucks too, so now what?

Alternative TLS Libraries Discussed

  • Multiple alternatives are suggested: rustls, BearSSL, MbedTLS, NanoSSL, Botan, s2n‑tls, LibreSSL, and AWS-LC-backed setups.
  • BearSSL is praised for design and smallness, but concerns are raised: last release in 2018, beta label, no TLS 1.3, and minimal recent development.
  • MbedTLS is viewed as working well in lightweight clients (e.g., Dillo), but someone recalls historically frequent API breakage.
  • NanoSSL (DigiCert) is open source but AGPLv3, so problematic as a drop‑in replacement for many projects.
  • Botan is described as pleasant to use, with good handling of timing-attack issues, though not as optimized as OpenSSL.
  • LibreSSL is defended as a solid OpenSSL drop‑in, especially given OpenBSD’s use; blame is placed on distros for not adopting it.
  • Some note that projects that tried to move away from OpenSSL often came back, invoking the “just use OpenSSL” meme.

rustls and Crypto Backends

  • rustls is suggested repeatedly; there’s a C FFI and a FIPS-compliance mode when used with AWS‑LC.
  • rustls doesn’t implement primitives itself; it relies on providers like AWS‑LC, Ring, or RustCrypto.
  • One thread notes this seems to conflict with the blog’s criticism of AWS‑LC/BoringSSL, but others argue:
    • The criticisms were about TLS stacks and vendor focus, not the low‑level primitives.
    • Using their vetted C/assembly crypto under a safer Rust protocol/X.509 layer is a good compromise.

WolfSSL Issue, RFC Compliance, and Maintainer–User Conflict

  • The GitHub issue at the center of the blog is dissected:
    • Some argue the blog author acted in bad faith: long periods of silence, then a critical post instead of opening the narrower RFC‑compliance ticket requested by the maintainer.
    • Others say asking the reporter to refile was needless bureaucracy, especially once the underlying spec violation was understood; the maintainer could have opened the focused ticket themselves.
  • Several commenters praise wolfSSL’s responsiveness and support quality; others note the tone could have been more diplomatic and suggest better templates or separation between “support” and “bug tracker.”
  • Broader debate emerges over “entitlement” in FOSS:
    • One side: maintainers don’t owe unpaid labor; users are not customers unless they pay.
    • Other side: users reasonably judge projects by how they handle bug reports; “it’s free” doesn’t make criticism illegitimate.
    • Some report similar experiences: they’ll warn others off software whose maintainers seem overwhelmed or unresponsive, without anger—just risk management.

TLS 1.3, Middleboxes, and Standards

  • The concrete technical issue involves TLS 1.3 “middlebox compatibility” behavior and RFC “MUST” requirements.
  • Some contend wolfSSL’s behavior is non‑compliant and that a language‑specific workaround isn’t a fix.
  • Others emphasize that TLS 1.3 itself is messy:
    • It masquerades as TLS 1.2, hides the real version in extensions, and includes hacks for legacy middleboxes.
    • A widely used implementation is itself non‑compliant with mandatory cipher requirements, forcing others to follow de facto behavior.
  • One commenter argues this shows standards are weakened by catering to broken middleboxes and calls for software regulation and “building codes.”
  • A counter‑view defends the protocol evolution: middleboxes only broke unencrypted parts; TLS 1.3 and ECH progressively encrypt more, which is seen as a pragmatic, effective alternative to government intervention.

Other Ideas and Side Threads

  • Suggestion to wrap Go’s crypto/tls behind an OpenSSL‑compatible C ABI; objections focus on adding GC to the TLS stack vs C’s lack of memory safety.
  • Some humor about “just write your own” TLS in the age of advanced AI coding tools, acknowledged implicitly as unrealistic.
  • Mention that HAProxy now ships “performance” packages built with AWS‑LC, illustrating how large projects are gravitating toward vendor‑backed crypto libraries despite philosophical concerns.