将最低TLS版本更改为1.2

时间:2020-02-07 11:57:10

标签: azure redis

在我的.NET Framework 4.6.1应用程序中,我正在使用StackExchange.Redis.StrongName 1.2.6连接到Azure Redis。 这是代码

    public RedisContext(string connectionString = null)
    {
        if (connectionString == null) return;

        Lazy<ConfigurationOptions> lazyConfiguration
            = new Lazy<ConfigurationOptions>(() => ConfigurationOptions.Parse(connectionString));

        var configuration = lazyConfiguration.Value;
        configuration.SslProtocols = SslProtocols.Tls12;//just added
        configuration.AbortOnConnectFail = false;

        Lazy<ConnectionMultiplexer> lazyConnection =
            new Lazy<ConnectionMultiplexer>(() => ConnectionMultiplexer.Connect(configuration));
        _connectionMultiplexer = lazyConnection.Value;

        LogProvider.IsDisabled = true;

        var connectionEndpoints = _connectionMultiplexer.GetEndPoints();
        _lockFactory = new RedisLockFactory(connectionEndpoints.Select(endpoint => new RedisLockEndPoint
        {
            EndPoint = endpoint,
            Password = configuration.Password,
            Ssl = configuration.Ssl
        }));
    }

在Azure中,我已将Redis资源更改为使用TLS1.2,并在代码中添加了以下行:

configuration.SslProtocols = SslProtocols.Tls12; //刚刚添加

现在,什么都没有了。这是我在Application Insights中遇到的错误:

连接到Redis时出错。无法连接到Redis服务器。 ConnectTimeout

我还尝试将“,ssl = True,sslprotocols = tls12”添加到redis连接字符串中,但结果相同。

1 个答案:

答案 0 :(得分:0)

尝试引用StackExchange.Redis而不是StackExchange.Redis.StrongName。我已经在几个项目中做到了这一点,现在可以了。但是,某些第三方仍然使用StrongName而不是普通的redis。现在不建议使用StackExchange.Redis.StrongName。 https://github.com/Azure/aspnet-redis-providers/issues/107。我假设您正在尝试连接到Azure Redis,因为它们停止了对TLS 1.0和1.1的支持?