Skip to content

crypto/tls: advertise full SHA suite in SignatureHashAlgorithm #9757

Description

@medina

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:

screen shot 2015-02-02 at 10 28 59 am

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions