Tristan971 / ssl-handshake

A command-line tool for testing SSL/TLS handshake latency, written in Go.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

ssl-handshake

A command-line tool for testing SSL/TLS handshake latency, written in Go.

Features

  • TCP handshake latency
  • SSL/TLS handshake latency
  • TLS version used during the handshake
  • Display handshake statistics
  • Configurable endpoint port, handshake interval, timeout and count

What is an SSL/TLS Handshake?

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.

image

TLS handshake packets captured with Wireshark.

image

Docker Image

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

Install binary

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

Development

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

Contributors

About

A command-line tool for testing SSL/TLS handshake latency, written in Go.

License:MIT License


Languages

Language:Go 90.0%Language:Makefile 5.1%Language:Dockerfile 4.8%