Auditing Transport Layer Security (TLS) across hundreds or thousands of networked endpoints is an essential task for security engineers, DevOps specialists, and penetration testers. Traditional tools such as OpenSSL s_client process targets sequentially and generate verbose output, creating significant latency during large-scale network assessments. tlsx, developed by ProjectDiscovery, is a modular, high-speed Go-based utility engineered to perform rapid TLS handshakes, extract SAN extensions, audit cipher suites, and validate certificate chains at scale.
Installation Methods
Deploy tlsx across modern Linux distributions using precompiled binaries or Go toolchains:
| Installation Method | Shell Command | Best For |
|---|---|---|
| Go Install (Source) | go install -v github.com/projectdiscovery/tlsx/cmd/tlsx@latest |
Developers with active Go environments. |
| ProjectDiscovery Pdtm | pdtm -install tlsx |
Automated multi-tool toolkit management. |
| Direct GitHub Binary | curl -sL https://github.com/projectdiscovery/tlsx/releases/latest/download/tlsx_linux_amd64.zip -o tlsx.zip && unzip tlsx.zip && sudo mv tlsx /usr/local/bin/ |
Production servers and CI/CD audit runners. |
Step-by-Step Practical Usage
- Single Host Certificate Inspection: Probe a domain on default HTTPS port 443 to retrieve basic Subject Alternative Names (SAN) and issuer details:
tlsx -u example.com -san -cn - High-Speed Multi-Host Probing from Standard Input: Feed a list of discovered hostnames or IP addresses from reconnaissance tools directly into
tlsx:
Thecat subdomains.txt | tlsx -ports 443,8443,9443 -c 100 -o live_tls_hosts.txt-c 100switch establishes 100 concurrent worker threads, resolving and validating thousands of endpoints in seconds. - Extracting Expiry Dates and Wildcard Mismatches: Check certificate validity periods to identify expiring or improperly bound certificates:
This reveals whether the target serves a valid commercial certificate or an unverified self-signed fallback.tlsx -u example.com -ex -expired -self-signed - Auditing Supported TLS Protocol Versions: Enforce regulatory compliance by verifying that servers do not negotiate obsolete protocols (TLS 1.0 or TLS 1.1):
To probe specifically for legacy cipher acceptance:tlsx -u example.com -versiontlsx -u example.com -tls10 -tls11 - Structured JSON Output for Security Pipelines: Stream raw machine-readable JSON payloads containing serial numbers, SHA-256 fingerprint hashes, and cryptographic signatures into
jq:tlsx -u example.com -json | jq '{subject: .subject_dn, issuer: .issuer_dn, expires: .not_after}'
Advanced Capabilities: JARM and JA3 Fingerprinting
To detect malicious infrastructure, backend reverse proxies, or hidden command-and-control servers, tlsx generates active JARM signatures:
tlsx -u example.com -jarm
JARM crafts ten distinct TLS client hellos to fingerprint the remote TLS stack implementation, enabling security teams to correlate separate IP addresses running identical web servers or load balancers regardless of domain masking.