As Rawlin mentions in thread titled "Go version for components other than TO", Traffic Ops has issues communicating with Riak when built with Go versions 1.12 or higher. I looked a bit into why that is, and TO can successfully use TLS 1.1 to communicate with Riak instead of TLS 1.2 (the default). My update_go_1.13 branch includes the changes that are necessary to make this work:
https://github.com/zrhoffman/trafficcontrol/commits/update_go_1.13 Let me explain why I am using TLS 1.1, and why TO using TLS 1.2 to communicate with Riak KV version 2.2.3 is not an option for Go versions 1.12 and higher. Riak KV 2.2.3 fails to work if the client sends it an unknown signature algorithm in the "hello" message of the TLS 1.2 handshake (see related Erlang bug from 2015: https://github.com/erlang/otp/pull/767). That is not an issue in Go 1.11, which luckily uses signature algorithms ( https://go.googlesource.com/go/+/refs/tags/go1.11.13/src/crypto/tls/common.go#138 ) that are all known to Riak. In Go 1.12 (specifically in commit https://go.googlesource.com/go/+/ee7e443389 ), signature algorithms are added that are unknown to Riak, so TLS 1.2 cannot be used in Go versions >= 1.12 without patching the crypto/tls package, because the list of signature algorithms sent to the server is hard-coded (see: https://go.googlesource.com/go/+/refs/tags/go1.13.9/src/crypto/tls/handshake_client.go#116 ). On a side note, a proposal was accepted that lets you configure supported signature algorithms (https://github.com/golang/go/issues/28660 , implemented in https://go.googlesource.com/go/+/5b17b65750 ), which lets you choose the signature algorithm used for the TLS session. That is different than the signature algorithm used in the handshake. This makes TLS 1.1 the highest TLS version that can be used by Go versions 1.12 and higher to communicate with Riak KV 2.2.3, because signature algorithms are a TLS 1.2 addition. Does anyone have thoughts about updating the version of Go used to compile Traffic Ops (and potentially the other components) and opting for TLS 1.1 for TO~Riak communication? -Zach
