howsmyssl is the web app behind https://howsmyssl.com.
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
This project requires Go 1.10 (or newer).
go build will generate a static
binary called howsmyssl. This repo is
go get'able, of course.
It has a fork of the Go crypto/tls library at ./tls/ in order to add a ServerHandshake and expose the ClientHello 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.)