1

我已经在传输和休息中设置了带有 Encyption 的 redis。我遇到了https://dev.to/yuki0417/easy-way-to-connect-to-amazon-elasticache-redis-with-password-from-django-app-40il通过 In-Transit 连接到 AWS ElastiCache加密。当我使用https://github.com/Suor/django-cacheops时,没有显示任何关于 ssl 的内容,如何实现 ssl 以使用带有加密的 aws redis?

我努力了

CACHEOPS_REDIS = {
        'host': "redis://{}".format(os.environ.get("REDIS_LOCATION")),
        'socket_timeout': 3,
        'ssl': True,
    }

在阅读了以下https://github.com/jazzband/django-redis/issues/353之后 我已经尝试过了,但它仍然不起作用

CACHEOPS_REDIS = {
        'host': "rediss://{}/0".format(os.environ.get("REDIS_LOCATION")),
        'socket_timeout': 3,
    }

CACHES = {
        "default": {
            "BACKEND": "django_redis.cache.RedisCache",
            "LOCATION": CACHEOPS_REDIS,
            "OPTIONS": {
                "CLIENT_CLASS": "django_redis.client.DefaultClient",
                "IGNORE_EXCEPTIONS": True,
                'CONNECTION_POOL_KWARGS': {
                    'skip_full_coverage_check': True,
                    "ssl_cert_reqs": None,
                    "ssl": True
                }
            },
            "KEY_PREFIX": ENVIRONMENT
        }
    }

证书在

我有以下

$ ll /etc/ssl/certs/
total 12
lrwxrwxrwx 1 root root   49 Sep 22 17:47 ca-bundle.crt -> /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem
lrwxrwxrwx 1 root root   55 Sep 22 17:47 ca-bundle.trust.crt -> /etc/pki/ca-trust/extracted/openssl/ca-bundle.trust.crt
4

1 回答 1

0

您需要定义 ssl 证书的路径。此示例适用于 Ubuntu

CACHES = {
    "default": {
        # …
        "OPTIONS": {
            "CONNECTION_POOL_KWARGS": {
                "ssl_ca_certs": "/etc/ssl/certs/ca-certificates.crt",
            },
        },
    },
}

您可以通过此代码定义在目标操作系统上找到证书的位置(MacOS 示例响应)

import certifi
certifi.where()

至于我,我没有使用云 Redis - 等待请求-响应周期太多了。如果这是一个缓存 - 找到一种方法来使用本地安装的缓存或在安全组中共享它。只有少数类型的项目真正需要 SSL 上的 Redis 或云 Redis。

于 2020-11-27T22:43:32.933 回答