TLS Client Authentication
In a Zero trust network nothing is trusted by default. When something calls our API, how can we be sure the caller is the right one? With mutual TLS or simply mTLS, we validate parties on the other end of the connection are who they claim to be. Mihaita Tinta
- Server and client validates each other's certificates (Client certificate verfication is needed).
- CA Authority validates the certificates
- Two way net/sec/PKI/TLS
By default the TLS protocol only proves the identity of the server to the client using X.509 certificate and the authentication of the client to the server is left to the application layer.
For Debugging issues use openssl

Links
- Implementation of mTLS in NodeJS
- Implementation of mTLS in Spring Boot
- mTLS connection using curl
- Implementation of mTLS in nGInx
Generate Self Signed root CA using openssl
Reference
- How to enable mutual TLS in a Spring Boot Application | by Salar Ahmadi | Medium Following
- A simple mTLS guide for Spring Boot microservices | by Mihaita Tinta | ING Hubs Romania | Medium
- X.509 Authentication in Spring Security | Baeldung
- TLS Setup in Spring | Baeldung
- Mutual TLS Authentication (mTLS) De-Mystified | by John Tucker | codeburst Following
- https://cloud.google.com/load-balancing/docs/mtls
mTLS in browser
Github Project
- GitHub - joutwate/mtls-springboot: Mutual TLS authentication with SpringBoot example
- GitHub - drGrove/mtls-cli: A short-lived certificate tool based on the Zero Trust network model
mTLS in Linux
mTLS in mac
mTLS in Chrome
mTLS in nGinx
mTLS Security
mTLS - CA workflow
