django-cacheops с шифрованием aws redis

Я настроил Redis с Encyption в пути и на отдыхе. Я наткнулся на https://dev.to/yuki0417/easy-way-to-connect-to-amazon-elasticache-redis-with-password-from-django-app-40il и Подключение к 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

person shorif2000    schedule 23.11.2020    source источник
comment
Что за сообщение об ошибке?   -  person pbacterio    schedule 02.12.2020


Ответы (1)


Вам нужно указать путь к сертификату ssl. Этот пример действителен для Ubuntu

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

Вы можете указать, где найти свой сертификат в целевой ОС с помощью этого кода (пример ответа MacOS)

import certifi
certifi.where()

Что касается меня, то я не использую облачный Redis — слишком долго ждать цикла запрос-ответ. Если это кеш — найдите способ использовать локально установленный кеш или расшарить его внутри группы безопасности. Только несколько типов проектов действительно нуждаются в Redis на SSL или в облаке Redis.

person Fannigurt    schedule 27.11.2020
comment
Я использую aws, у меня нет сертификата ssl. Я использую менеджер сертификатов в aws - person shorif2000; 30.11.2020
comment
это сертификат вашей локальной системы. Когда вы устанавливаете соединение TLS, вам нужен сертификат, и он есть у вашего Python. Сделайте импорт certifi certifi.where() и прокомментируйте результат здесь - person Fannigurt; 02.12.2020
comment
я добавил к вопросу - person shorif2000; 02.12.2020
comment
хммм? можно ли установить пакет? - person Fannigurt; 03.12.2020