g-andrade
Tls_certificate_check: TLS/SSL certificate verification for humans
Hi forum,
I’ve the pleasure to announce the release of tls_certificate_check, a library that packs the boilerplate required for verifying the authenticity of certificates presented by TLS servers against a list of trusted certificate authorities.
It wraps certifi and ssl_verify_fun together with the code required for verifying certificate chains in non canonical order.
It’s simple enough to use:
host = "example.com"
port = 443
tls_options = :tls_certificate_check.options(host)
:ssl.connect(host, 443, tls_options)
You’ll no longer need to copy the usual CA validation boilerplate everywhere!
Most Liked
g-andrade
tls_certificate_check 1.12.0 is out 
New CAs:
- vtrus ecc root ca
- isrg root x2
- vtrus root ca
- HiPKI Root CA - G1
- Autoridad de Certificacion Firmaprofesional CIF A62634068
Updated CAs:
- gts root r4
- gts root r3
- gts root r1
- gts root r2
- GlobalSign ECC Root CA - R4
Removed CAs:
- GlobalSign Root CA - R2
- cybertrust global root
g-andrade
That took me a while!
tls_certificate_check 1.17.0 is out, and it does a couple of cool new things.
For OTP 25+, it now uses OTP-trusted CAs by default - if any / when available, falling back to the bundled CAs otherwise (this is tweakable).
This version also supports overriding the trusted CAs (say, if you’d wish to use CAStore instead.)
kip
g-andrade
It’s a good ideia; however, having tls_certificate_check depend on castore directly would complicate compatibility with Erlang (since it’s an Elixir dependency.)
I’m planning to add support for consumer-defined CA lists, though - that could be one way to use castore instead of certifi.
g-andrade
Thanks for reporting, @cadebward ! Someone else also reported the issue on GitHub : I’ve released version 1.17.3, which should fix the problem.







