jmhodges/howsmyssl

The web app running howsmyssl.com

Go

351

1,091 commits

updated Sep 16, 2026

See the code

README

howsmyssl

howsmyssl is the web app behind https://howsmyssl.com.

Orientation

This is a Go project.

The HTML code goes in templates/. Templates are generated with Go's html/template package. Determining the client's security is done in client_info.go.

go build will generate a static binary called howsmyssl. This repo is go get'able, of course.

It has a fork of Go 1.26.6's crypto/tls library at ./tls1266/ in order to expose the client's ClientHello details (offered cipher suites, compression methods, supported versions, curves, and signature algorithms) on the ConnectionState struct.

It's been useful to me to use justrun to recompile the project while modifying the template. Typical use is simply:

justrun -c "go build && ./howsmyssl" -i howsmyssl . templates/

(Justrun has the benefit of controlling the lifecycle of a process, unlike most other file watch utilities.)

Contributors

jmhodges

533 commits

dependabot[bot]

470 commits

renovate[bot]

61 commits

jsha

4 commits

jmhodges/howsmyssl

The web app running howsmyssl.com

Go

351

1,091 commits

updated Sep 16, 2026

See the code

README

howsmyssl

howsmyssl is the web app behind https://howsmyssl.com.

Orientation

This is a Go project.

The HTML code goes in templates/. Templates are generated with Go's html/template package. Determining the client's security is done in client_info.go.

go build will generate a static binary called howsmyssl. This repo is go get'able, of course.

It has a fork of Go 1.26.6's crypto/tls library at ./tls1266/ in order to expose the client's ClientHello details (offered cipher suites, compression methods, supported versions, curves, and signature algorithms) on the ConnectionState struct.

It's been useful to me to use justrun to recompile the project while modifying the template. Typical use is simply:

justrun -c "go build && ./howsmyssl" -i howsmyssl . templates/

(Justrun has the benefit of controlling the lifecycle of a process, unlike most other file watch utilities.)

Contributors

jmhodges

533 commits

dependabot[bot]

470 commits

renovate[bot]

61 commits

jsha

4 commits

Languages

Go

92.0%

HTML

7.7%