Got curl: (35) error:1400410B:SSL routines:CONNECT_CR_SRVR_HELLO:wrong version number when curl https://{ip of instance in gcp that runs collector}:16706/healthy

Hi everyone,

I am trying to set up pubsub collector on a gcp instance with docker command:

docker run \
  -v $PWD/scala-stream-collector-config:/snowplow/config \
  -p 16706:16706 \
  -e GOOGLE_APPLICATION_CREDENTIALS=/snowplow/config/secret.json \
  snowplow/scala-stream-collector-pubsub:latest   --config /snowplow/config/config-pubsub.hocon

It shows that:

[scala-stream-collector-akka.actor.default-dispatcher-7] INFO com.snowplowanalytics.snowplow.collectors.scalastream.GooglePubSubCollector$ - REST interface bound to /0.0.0.0:16706

When i tried this config and container on local and test healthy with:

curl http://localhost:16706/healthy

It can return ok.

However, when I tried with

curl https://{my ip in local}:16706/healthy

It returns

curl: (35) error:1400410B:SSL routines:CONNECT_CR_SRVR_HELLO:wrong version number

I doubted it’s my local issue, so I moved to an instance in GCP, but it’s still the same.,showing:

[scala-stream-collector-akka.actor.default-dispatcher-3] WARN akka.actor.ActorSystemImpl - Illegal request, responding with status '400 Bad Request': Unsupported HTTP method: The HTTP method started with 0x16 rather than any known HTTP method from {my ip }:60538. Perhaps this was an HTTPS request sent to an HTTP endpoint?

Have I missed anything in the config? Keen to have your thoughts!

Perhaps this was an HTTPS request sent to an HTTP endpoint?

This will likely be the issue - if you want to send over HTTPS you’ll ideally want a listener as well as a SSL certificate setup (using a GCP load balancer is the easiest way to do this).