A command-line tool for testing SSL/TLS handshake latency, written in Go.
- TCP handshake latency
- SSL/TLS handshake latency
- TLS version used during the handshake
- SNI support
- Display handshake statistics
- Configurable endpoint port, handshake interval, timeout and count
An SSL/TLS handshake is the process that kicks off a communication session between client and server that uses TLS encryption. During a TLS handshake, the two communicating sides exchange messages to acknowledge each other, verify each other, establish the encryption algorithms they will use, and agree on session keys. TLS handshakes are a foundational part of how HTTPS works and it is defined in RFC 8446 (for TLS 1.3) or in RFC 5246 (for TLS 1.2).
TLS handshakes occur after a TCP connection has been opened via a TCP handshake.
TLS handshake packets captured with Wireshark.
Docker image is publicly available at DockerHub:
Run ssl-handshake
as Docker container:
docker run --rm ptuladhar/ssl-handshake -c 5 tuladhar.github.io:443
You can also alias ssl-handshake
, for ease of use:
alias ssl-handshake="docker run --rm ptuladhar/ssl-handshake"
ssl-handshake tuladhar.github.com:443
Binary is available for Linux, Windows and Mac OS (amd64 and arm64). Download the binary for your respective platform from the releases page.
Linux:
curl -sSLO https://github.com/tuladhar/ssl-handshake/releases/download/v1.6.1/ssl-handshake-v1.6.1-linux-amd64.tar.gz
tar zxf ssl-handshake-v1.6.1-linux-amd64.tar.gz
sudo install -m 0755 ssl-handshake /usr/local/bin/ssl-handshake
macOS (Intel):
curl -sSLO https://github.com/tuladhar/ssl-handshake/releases/download/v1.6.1/ssl-handshake-v1.6.1-darwin-amd64.tar.gz
tar zxf ssl-handshake-v1.6.1-darwin-amd64.tar.gz
sudo install -m 0755 ssl-handshake /usr/local/bin/ssl-handshake
macOS (Apple Silicon):
curl -sSLO https://github.com/tuladhar/ssl-handshake/releases/download/v1.6.1/ssl-handshake-v1.6.1-darwin-arm64.tar.gz
tar zxf ssl-handshake-v1.6.1-darwin-arm64.tar.gz
sudo install -m 0755 ssl-handshake /usr/local/bin/ssl-handshake
Windows:
curl -sSLO https://github.com/tuladhar/ssl-handshake/releases/download/v1.6.1/ssl-handshake-v1.6.1-windows-amd64.zip
unzip ssl-handshake-v1.6.1-windows-amd64.zip
If you wish to contribute or compile from source code, you'll first need Go installed on your machine. Go version 1.17+ is required. Currently, there are no dependencies on third-party modules.
git clone https://github.com/tuladhar/ssl-handshake
cd ssl-handshake
go build
- Draft new release
- Choose a release tag, e.g:
v1.6.2
- Set release title and changelog
- Click
Publish release
Now, GitHub action release workflow will triggered to build binary for all major platforms.