A simple Go client connecting to a server via TLS1.2 advertises supported algorithms as the equivalent of openssl s_client -sigalgs RSA+SHA256:ECDSA+SHA256:RSA+SHA1:ECDSA+SHA1 -tls1_2, while it should be capable of more. An excerpt of the ClientHello sent from the client is below:

The server (a web load balancing appliance), which has an RSA+SHA256 certificate and a bundled RSA+SHA384 intermediary perhaps reasonably responds with an alert(40) (handshake_failure), whilst internally logging "[h]andshake failure selecting certificate for foo.example.com: Certificate chain uses algorithms not supported by client". On the face of what's presented by the client, this is true.
I believe this is the same issue previously reported by Michael Daffin on the golang-nuts mailing list. In that case, connecting to the specified server using a simulated string of
# "OpenSSL 1.0.2 22 Jan 2015" for `-sigalgs` support
$ openssl s_client \
-sigalgs RSA+SHA384:RSA+SHA256 \
-cipher AES256-SHA \
-tls1_2 \
-servername foo.example.com \
-connect foo.example.com:443 -showcerts
yields success.
I believe the GoLang TLS library should advertise the full SHA suite it supports in the SignatureHashAlgorithm.
A simple Go client connecting to a server via TLS1.2 advertises supported algorithms as the equivalent of
openssl s_client -sigalgs RSA+SHA256:ECDSA+SHA256:RSA+SHA1:ECDSA+SHA1 -tls1_2, while it should be capable of more. An excerpt of theClientHellosent from the client is below:The server (a web load balancing appliance), which has an RSA+SHA256 certificate and a bundled RSA+SHA384 intermediary perhaps reasonably responds with an
alert(40)(handshake_failure), whilst internally logging "[h]andshake failure selecting certificate for foo.example.com: Certificate chain uses algorithms not supported by client". On the face of what's presented by the client, this is true.I believe this is the same issue previously reported by Michael Daffin on the golang-nuts mailing list. In that case, connecting to the specified server using a simulated string of
yields success.
I believe the GoLang TLS library should advertise the full SHA suite it supports in the SignatureHashAlgorithm.