如何使用SSL/TLS与Redis企业万博体育彩
在这篇文章中,你将看到如何使用SSL(安全套接字层)保护你的Redis数据库。在生产环境中,总是建议使用SSL来保护在不同计算机(客户端应用程序和Redis服务器)之间移动的数据。传输级别安全(TLS)保证只允许应用程序/计算机连接到数据库,而且数据不会被中间商进程查看或更改。
您可以使用以下内容确保客户端应用程序和redis群集之间的连接
- 单向SSL:客户端(你的应用程序)从服务器(Redis集群)获得证书,验证它,然后所有通信都被加密
- 双向SSL :( AKA相互SSL)在这里,客户端和服务器彼此身份验证并验证两端是否可信赖。
在本文中,我们将专注于双向SSL,并使用Redis Enterprise。万博体育彩
#
先决条件- re万博体育彩dis Enterprise 6.0.x数据库,(我的数据库受到密码的保护
secretdb01
,并监听端口12000.
) redis-cli
运行基本命令- Python,节点, 和java.如果要测试各种语言,请安装。
#
简单的测试让我们确保数据库可用:
这将打印服务器信息。
#
步骤1。从Redis集群获取证书假设你可以访问Redis企业集群,你需要访问节点来检索证书(这是一个自生成的默万博体育彩认证书)。
群集证书位于:/etc/opt/redislabs/proxy_cert.pem.
.
接下来,在每个客户端机器上复制集群证书;注意,一旦完成,您就可以使用此证书来使用“单向SSL”进行连接,但这不仅仅是本文的目的。
在本教程中,我们将使用Docker来复制证书。
#
步骤2。生成新的客户端证书使用双向SSL,您需要为客户端使用redis数据库代理使用的客户端来信任客户端。在本教程中,我们将使用openssl使用自签名证书。我们将为命名的应用程序创建证书app_001
.请注意,您可以创建任意数量的证书,或者将此证书重用于所有服务器/应用程序。
打开终端,执行如下命令:
此命令生成一个新的客户端密钥(client_key_001.PEM.
)及证书(client_cert_001.pem.
),没有密码。
#
步骤3。配置Redis数据库下一步是拍摄证书并将其添加到要保护的数据库中。
让我们复制证书并将其粘贴到Redis企业Web控制台。万博体育彩
将证书复制到剪贴板中:
麦克:
Linux:
窗口:
转到Redis En万博体育彩terprise Admin Web控制台并在数据库上启用TLS:
- 编辑数据库配置
- 检查TL.
- 选择“对所有通信要求TLS”
- 检查“强制客户端身份验证”
- 将证书粘贴到文本区域
- 单击Save按钮保存证书
- 单击Update按钮保存配置。
数据库现在受到保护,并且必须使用SSL证书连接到它。
#
步骤4.使用证书连接到数据库在所有这些示例中,您将使用“自签名”证书,因此不需要检查主机名的有效性。您应该根据证书配置调整连接/TLS信息。
#
步骤4.1使用Redis-CLI使用。连接到受SSL保护的数据库redis-cli
你必须使用st
.
创建一个stunnel.conf
文件包含以下内容:
使用该命令启动stunnel
这将启动一个监听端口的进程6380.
并用作端口上的Redis Enterprise数据库的万博体育彩代理12000.
.
#
步骤4.2使用python使用Python,您必须设置SSL连接参数:
更多信息见文档"在Python中使用Redis".
#
步骤4.3使用node.js更多信息见文档"通过Node.js使用Redis".
#
步骤4.4使用Java在Java中,能够使用SSL连接,您必须使用Java环境中的所有证书使用keytool.实用程序。
创建一个keystore.存储您先前创建的密钥和证书的文件:
您可以看到密钥库用于存储与您联系的凭据;它将在以后使用-javax.net.ssl.keystore.
Java应用程序中的系统属性。
除了密钥删除之外,您还必须创建一个信任存储,用于存储其他凭证,例如在我们的示例中,redis集群证书。
创建一个信托商店文件并将Redis Cluster证书添加到其中
+稍后将使用该值-javax.net.ssl.trustStore
Java应用程序中的系统属性。
现在,您可以使用以下环境变量运行Java应用程序:
对于此示例和简单性,我将在Java代码本身中硬代码这些属性:
- 第8-12行,系统环境变量被设置为指向密钥存储库和信任存储库(应该外部化)
- 第14行,Redis URL以
rediss
有2秒表示连接应该加密 - 第17行,设置数据库密码
更多信息见文档"使用redis与java".
#
结论在本文中,您将学习如何:
- 检索redis服务器证书
- 生成客户证书
- 通过两种方式的身份验证来保护您的数据库,以加强传输级别安全性(TLS)
- 从连接到数据库
redis-cli
,python,node和java