git cliente y separación del browser en el server https

Estoy intentando habilitar la fijación de certificates para git clone . Para hacer eso, he usado openssl s_client y agarré el certificate del server hello:

 openssl s_client -connect anongit.gentoo.org:443 2>&1 </dev/null 

Pero el siguiente command en realidad no se pudo verificar en el certificate del server:

 git clone -c http.sslVerify=yes -c 'http.pinnedpubkey=sha256//13fY3xnMhZp6C5wKICfMZVJbN+AtmBbTXSy+sjJvKDE=' https://anongit.gentoo.org/git/repo/gentoo.git 

Haciendo una pequeña investigación, descubrí en los volcados de networking que los certificates son diferentes para openssl s_client y git clone . Solo las diferencias (en hello del cliente) que puedo ver en los volcados son: SNI para anongit.gentoo.org y ALPN para http/1.1 en el tráfico de git . Parece muy poco para distinguir al cliente de Git y el browser.

Entonces, la pregunta es: ¿de qué manera el server detecta un cliente de Git para responder con un certificate diferente?

Aparentemente, el que hace la diferencia aquí es SNI:

 openssl s_client -connect anongit.gentoo.org:443 2>&1 </dev/null | sed -n '/BEGIN/,/END/p' | openssl x509 -noout -pubkey | openssl rsa -pubin -outform DER | openssl dgst -sha256 -binary | openssl enc -base64 openssl s_client -servername anongit.gentoo.org -connect anongit.gentoo.org:443 2>&1 </dev/null | sed -n '/BEGIN/,/END/p' | openssl x509 -noout -pubkey | openssl rsa -pubin -outform DER | openssl dgst -sha256 -binary | openssl enc -base64 

Esos commands devuelven diferentes hashes de certificate (sin y con el uso de SNI en consecuencia). Y el segundo es para ser usado con git clone .

Sin embargo, la razón real para hacer tal cosa todavía es un misterio para mí.