go: crypto/tls: handshake fails with EOF

Go Version: 1.5.1 OS/Arch: Linux & Darwin/amd64

I’m trying to connect to a web service hosted by a third party using mutual TLS. Here is the simple test case I am trying:

https://play.golang.org/p/wr8x8awD8u

I am able to connect as expected to the same web service with the same parameters for key, cert, etc using curl:

curl --cacert /home/nifi/robtest/nexusproxy/guard_ca.pem --cert /path/to/public_crt.pem --key /path/to/private_key.pem https://some.server.com:8000/some/path

The go test case fails with an EOF error.

Further:

I’ve traced the error to this line in the tls client handshake:

https://github.com/golang/go/blob/go1.5.1/src/crypto/tls/handshake_client.go#L561

This section https://github.com/golang/go/blob/go1.5.1/src/crypto/tls/conn.go#L541-L546 would seem to suggest that an EOF is expected in some cases but there doesn’t appear to be any code to handle such a case.

About this issue

  • Original URL
  • State: closed
  • Created 9 years ago
  • Comments: 15 (9 by maintainers)

Most upvoted comments

@einthusan, that seems unrelated. This bug was about client-side TLS. I’d move your server-side question to https://golang.org/wiki/Questions for now.

I think I’m actually going to close this bug as TimedOut, since it’s been a year now (two releases) and there’s nothing quite actionable here.

Anybody, feel free to reopen either this or another perhaps ideally a new bug with details of client-side TLS problems with Go 1.8beta+.