azure - 使用 RDM 使用 SSL 通过 Ngnix 安全连接到 redis 容器
问题描述
我无法使用 Redis 桌面管理器 (RDM) 通过安全连接(基于 SSL)连接到 Redis 容器。所以,我一起部署了两个容器:
- Redis 容器暴露 6379 端口
- Nginx 镜像,它接受来自 redis 客户端的 SSL 请求,并通过 localhost 连接将 tcp 请求传递给另一个 redis 容器。
按照本教程:https ://docs.microsoft.com/en-us/azure/container-instances/container-instances-container-group-ssl
并使用生成的自签名证书 SSL。
这是 Nginx.conf 文件:
user nginx;
worker_processes auto;
events {
worker_connections 1024;
}
pid /var/run/nginx.pid;
stream {
server {
listen [::]:443 ssl;
listen 443 ssl;
proxy_pass 127.0.0.1:6379;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:ECDHE-RSA-RC4-SHA:ECDHE-ECDSA-RC4-SHA:AES128:AES256:RC4-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m; # a 1mb cache can hold about 4000 sessions, so we can hold 40000 sessions
ssl_session_timeout 24h;
ssl_certificate /etc/nginx/ssl.crt;
ssl_certificate_key /etc/nginx/ssl.key;
}
}
这是容器部署 Yaml 文件:
api-version: 2018-10-01
location: eastus
name: rediscontainer-int
properties:
containers:
- name: nginx-with-ssl
properties:
image: nginx
ports:
- port: 443
protocol: TCP
resources:
requests:
cpu: 2
memoryInGB: 3
volumeMounts:
- name: nginx-config
mountPath: /etc/nginx
- name: my-app
properties:
image: redislabs/rebloom:latest
ports:
- port: 6379
protocol: TCP
resources:
requests:
cpu: 2
memoryInGB: 3
volumes:
- secret:
ssl.crt: <Enter contents of base64-ssl.crt here>
ssl.key: <Enter contents of base64-ssl.key here>
nginx.conf: <Enter contents of base64-nginx.conf here>
name: nginx-config
ipAddress:
ports:
- port: 443
protocol: TCP
type: Public
dnsNameLabel: rediscontainer-int
osType: Linux
tags: null
type: Microsoft.ContainerInstance/containerGroups
通过 RDM 连接并指定容器公共 IP,例如:
指定 SSL:
解决方案
推荐阅读
- javascript - 我不知道如何在 nodejs express 服务器中存储来自 api 调用的 json 数据,并将其发送到 react 本机客户端
- python-3.x - 尝试从 TMDB 获取系列背景
- elasticsearch - Magento\Elasticsearch7\Model\Client\Elasticsearch::query() 的返回值必须是数组类型,Model/Elasticsearch.php:367 中返回的字符串
- reactjs - web3-shh 包将在 1.3.5 版本中被弃用,不再受支持
- github-actions - 减少 GitHub Actions 步骤中的样板文件
- node.js - 无法在 Ubuntu 19.04 中安装 Node.js
- python - Python pytype 安装:无法为 pytype 构建轮子,无法为使用 PEP 517 的 pytype 构建轮子
- visual-studio - 为什么我的VS2008窗口经常刷新甚至卡死?
- python - 在我向另一个模型添加值的同时向 django 模型添加值
- diagnostics - 如何在我的 ECU 中设计诊断处理程序?