DEV Community

Joseph King
Joseph King

Posted on

Connect Heroku Redis V6 to .Net Core Heroku App hosted through Docker

I have a staging .Net Core app hosted on Heroku via Docker which uses the Heroku Redis addon as a cache. Heroku recently upgrade all mini plans to version 6 and I understand version 6 requires a TLS connection... sorry if I'm getting this wrong.

In any case, I can't start the app due to the following error from StackExchange.Redis:

Timeout performing SUBSCRIBE (5000ms), inst: 4, qu: 1, qs: 0, aw: False, bw: SpinningDown, serverEndpoint: [amazon ecs endpoint here], mc: 1/1/0, mgr: 10 of 10 available, clientName: 319aa5ff-317f-42e6-9a2e-d0c8e0be9020(SE.Redis-v2.6.66.47313), IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=0,Free=32767,Min=8,Max=32767), POOL: (Threads=6,QueuedItems=0,CompletedItems=302), v: 2.6.66.47313 (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts)
Enter fullscreen mode Exit fullscreen mode

I've tried validating the server certificate with the following:

private static ConfigurationOptions GetHerokuRedisConfigurationOptions(string host, int port, string password)
{

    var config = new ConfigurationOptions
    {
        ConnectRetry = 3,
        AbortOnConnectFail = false,
        Ssl = true,
        Password = password,
        EndPoints = { { host, port } }
    };

    config.CertificateValidation += ValidateServerCertificate;

    return config;
}

private static bool ValidateServerCertificate(
object sender,
X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
    if (sslPolicyErrors == SslPolicyErrors.None)
        return true;

    Console.WriteLine("Certificate error: {0}", sslPolicyErrors);

    return false;
}
Enter fullscreen mode Exit fullscreen mode

This produces the following error:

Certificate error: RemoteCertificateNameMismatch, RemoteCertificateChainErrors

How can I configure the TLS connection in StackExchange.Redis in order to connect to the Heroku Redis Data addon?

Thank you!
Joe

AWS Security LIVE!

Tune in for AWS Security LIVE!

Join AWS Security LIVE! for expert insights and actionable tips to protect your organization and keep security teams prepared.

Learn More

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay