I solved it after exploring the inner workings of grpcurl. For anyone who might ever be stuck, here's the difference...
// Not working...
conn, err = grpc.Dial(host, grpc.WithInsecure())
// Working...
var tlsConf tls.Config
tlsConf.InsecureSkipVerify = true
var creds = credentials.NewTLS(&tlsConf)
conn, err = grpc.Dial(host, grpc.WithTransportCredentials(creds))
Previously I used the flag grpc.WithInsecure()
. It didn't work, so exploring grpcurl, I found that they were using grpc.WithTransportCredentials()
instead, with tls.Config
, setting InsecureSkipVerify
to true instead. That turned out well.