{"id":17676690,"url":"https://github.com/tuladhar/ssl-handshake","last_synced_at":"2026-03-13T15:31:56.822Z","repository":{"id":45235504,"uuid":"441406986","full_name":"tuladhar/ssl-handshake","owner":"tuladhar","description":"A command-line tool for testing SSL/TLS handshake latency, written in Go.","archived":false,"fork":false,"pushed_at":"2025-05-20T12:58:41.000Z","size":349,"stargazers_count":72,"open_issues_count":2,"forks_count":9,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-25T13:26:08.655Z","etag":null,"topics":["cli","client","debugging","developer-tools","devops","golang","hacktoberfest","hacktoberfest-accepted","https","open-source","ssl","ssl-handshake","terminal","tls"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tuladhar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-12-24T08:09:54.000Z","updated_at":"2025-10-20T14:17:31.000Z","dependencies_parsed_at":"2023-12-22T16:43:52.423Z","dependency_job_id":"efc4d002-0a01-4bb6-b92c-5faf557cb56d","html_url":"https://github.com/tuladhar/ssl-handshake","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/tuladhar/ssl-handshake","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuladhar%2Fssl-handshake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuladhar%2Fssl-handshake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuladhar%2Fssl-handshake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuladhar%2Fssl-handshake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tuladhar","download_url":"https://codeload.github.com/tuladhar/ssl-handshake/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tuladhar%2Fssl-handshake/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30469312,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-13T11:00:43.441Z","status":"ssl_error","status_checked_at":"2026-03-13T11:00:23.173Z","response_time":60,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","client","debugging","developer-tools","devops","golang","hacktoberfest","hacktoberfest-accepted","https","open-source","ssl","ssl-handshake","terminal","tls"],"created_at":"2024-10-24T07:26:27.307Z","updated_at":"2026-03-13T15:31:56.791Z","avatar_url":"https://github.com/tuladhar.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ssl-handshake\nA command-line tool for testing SSL/TLS handshake latency, written in [Go](https://go.dev/).\n\n## Features\n* TCP handshake latency\n* SSL/TLS handshake latency\n* TLS version used during the handshake\n* SNI support\n* Display handshake statistics\n* Configurable endpoint port, handshake interval, timeout and count\n\n## \n\u003cp align=\"center\"\u003e\n  \u003cimg width=\"600\" src=\"https://github.com/tuladhar/ssl-handshake/blob/main/demo/ssl-handshake.svg\"\u003e\n\u003c/p\u003e\n\n\n## What is an SSL/TLS Handshake?\nAn SSL/TLS handshake is the process that kicks off a communication session between client and server that uses [TLS encryption](https://en.wikipedia.org/wiki/Transport_Layer_Security). 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)](https://tools.ietf.org/html/rfc8446) or in [RFC 5246 (for TLS 1.2)](https://datatracker.ietf.org/doc/html/rfc5246).\n\nTLS handshakes occur after a TCP connection has been opened via a TCP handshake. \n\n![image](https://user-images.githubusercontent.com/5674762/147405109-319358ff-8506-4383-8778-6961e99c4e99.png)\n\nTLS handshake packets captured with [Wireshark](https://www.wireshark.org/).\n\n![image](https://user-images.githubusercontent.com/5674762/147404043-7e6d983a-e9c5-4477-a8e2-3e054d4f861d.png)\n\n## Docker Image\n\nDocker image is publicly available at DockerHub:\n* https://hub.docker.com/r/ptuladhar/ssl-handshake\n\nRun `ssl-handshake` as Docker container:\n```\ndocker run --rm ptuladhar/ssl-handshake -c 5 tuladhar.github.io:443\n```\nYou can also alias `ssl-handshake`, for ease of use:\n```\nalias ssl-handshake=\"docker run --rm ptuladhar/ssl-handshake\"\nssl-handshake tuladhar.github.com:443\n```\n## Install binary\nBinary is available for Linux, Windows and Mac OS (amd64 and arm64). Download the binary for your respective platform from the [releases page](https://github.com/tuladhar/ssl-handshake/releases).\n\nLinux:\n```\ncurl -sSLO https://github.com/tuladhar/ssl-handshake/releases/download/v1.6.1/ssl-handshake-v1.6.1-linux-amd64.tar.gz\n```\n```\ntar zxf ssl-handshake-v1.6.1-linux-amd64.tar.gz\n```\n```\nsudo install -m 0755 ssl-handshake /usr/local/bin/ssl-handshake\n```\n\nmacOS (Intel):\n```\ncurl -sSLO https://github.com/tuladhar/ssl-handshake/releases/download/v1.6.1/ssl-handshake-v1.6.1-darwin-amd64.tar.gz\n```\n```\ntar zxf ssl-handshake-v1.6.1-darwin-amd64.tar.gz\n```\n```\nsudo install -m 0755 ssl-handshake /usr/local/bin/ssl-handshake\n```\n\nmacOS (Apple Silicon):\n```\ncurl -sSLO https://github.com/tuladhar/ssl-handshake/releases/download/v1.6.1/ssl-handshake-v1.6.1-darwin-arm64.tar.gz\n```\n```\ntar zxf ssl-handshake-v1.6.1-darwin-arm64.tar.gz\n```\n```\nsudo install -m 0755 ssl-handshake /usr/local/bin/ssl-handshake\n```\n\nWindows:\n```\ncurl -sSLO https://github.com/tuladhar/ssl-handshake/releases/download/v1.6.1/ssl-handshake-v1.6.1-windows-amd64.zip\n```\n```\nunzip ssl-handshake-v1.6.1-windows-amd64.zip\n```\n\n## Development\n\nIf 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. \n\n```\ngit clone https://github.com/tuladhar/ssl-handshake\ncd ssl-handshake \ngo build\n```\n\n## Release\n\n1. [Draft new release](https://github.com/tuladhar/ssl-handshake/releases/new)\n2. Choose a release tag, e.g: `v1.6.2`\n3. Set release title and changelog\n4. Click `Publish release`\n\nNow, [GitHub action release workflow](https://github.com/tuladhar/ssl-handshake/actions/workflows/release.yml) will triggered to build binary for all major platforms.\n\n## Contributors\n- [See Contributors](https://github.com/tuladhar/ssl-handshake/graphs/contributors)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftuladhar%2Fssl-handshake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftuladhar%2Fssl-handshake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftuladhar%2Fssl-handshake/lists"}