用最专业的眼光看待互联网
立即咨询本文将介绍如何为运行 RDS 的 SQL Server 和 Oracle 的 Amazon RDS 实例配置 SSL/TLS 连接。本文重点包括:
使用常见数据库管理工具如 SQL Server Management Studio、DBeaver 和 Oracle SQL Developer配置 SSL/TLS 。了解 SSL 和 TLS 的基本原理,以及 SSL/TLS 证书如何在安全数据库连接中工作。按照步骤在 Amazon RDS 中为 SQL Server 和 Oracle 配置 SSL/TLS 连接。通信的完整性和机密性对客户和数据库之间的连接非常重要。然而,出于实际复杂性或对所用工具的认知障碍,SSL 的部署有时会面临阻力。通过本篇文章,我们将展示如何通过广泛使用的客户端应用程序来配置 SSL/TLS 连接。
SSL 是一种标准安全技术,用于在服务器和客户端之间建立加密链接。如今 SSL 已被 TLS 取代,后者修复了 SSL 的现有漏洞,并能够高效地执行身份验证。
SSL/TLS 证书是由受信任的 证书颁发机构CA签名的数字文档,能够帮助系统验证身份,并随后使用 SSL/TLS 协议与另一系统建立加密的网络连接。所谓的“传输中的加密”使用 SSL/TLS 协议,而 SSL/TLS 证书必须加载到数据库中。
一般来说,数据库服务器倾向于在没有互联网暴露的私有网络中配置,有时会使用自签名证书。自签名证书提供加密功能,但并不提供来自受信任 CA 的身份验证。
证书链是一个有序的证书列表,包含 SSL/TLS 证书和 CA 证书,使接收方可以验证发送方及所有 CA 是否可信。链条从 SSL/TLS 证书开始,每个证书由下一个证书所定义的实体进行签名。下面的图示展示了一条证书链。
对于所有 Amazon RDS 数据库引擎,当 DB 实例被创建时,会生成 SSL 证书。该证书以 DB 实例端点作为 SSL 证书的通用名称CN,以防止 欺骗攻击。
要配置 SSL:
对于 Amazon RDS for SQL Server,在参数组中使用 rdsforcessl 参数。对于 Amazon RDS for Oracle,在 选项组 中使用 SQLNETCIPHERSUITE、FIPSSSLFIPS140 和 SQLNETSSLVERSION 参数, 并在实例的安全组配置中禁用 1521 端口的访问。每个数据库引擎都有其实现 SSL/TLS 的过程。要了解如何为您的 DB 实例实施 SSL/TLS,您可以参考 使用 SSL/TLS 加密与 DB 实例的连接。
本节演示如何使用 SSMS 和 DBeaver 配置到 Amazon RDS for SQL Server 的 SSL 连接。SSMS 使用 Windows 证书存储。按照以下步骤将您的证书导入 Windows 证书存储:
在 SSMS 中打开 certmgrmsc。展开 证书,右键点击 受信任的根证书颁发机构。选择 所有任务,然后选择 导入。在证书导入向导的第一页中选择 下一步。选择 浏览。在浏览窗口中,将文件类型更改为 所有文件 (),因为 pem 不是标准证书扩展。找到您之前下载的 pem 文件。选择 打开,然后选择 下一步。选择 完成。对话框会提示导入成功。在证书管理控制台中,展开 证书,展开 受信任的根证书颁发机构 并选择 证书。确认证书存在。在 SSMS 连接属性 标签中,选择 加密连接 和 信任服务器证书。

为了使用 DBeaver 连接到 RDS for SQL Server:
在 DBeaver 的 主 标签下,选择 连接设置,然后选择 信任服务器证书。在 SSL 标签中,选择 使用 SSL。在 密钥库 字段中,输入您的密钥库路径。本节展示如何通过 Oracle SQL Developer 和 SQLPLUS 指令行配置到 Amazon RDS for Oracle 的 SSL 连接。
为安全地通过 Oracle SQL Developer 连接 Oracle,首先执行连接到命令行所需的操作。前提条件如下:
创建一个新的选项组以配置 RDS 实例的参数。使用的 Oracle 客户端软件。OpenSSL 软件 用于创建与 RDS 实例的 SSL 连接。Java 加密扩展JCE软件。Oracle SQL Developer 以获得 RDS 实例的图形用户界面GUI。连接数据库时使用的 AWS 证书包。请完成以下步骤:
导航至 RDS 控制台。在选项组下,选择创建一个新选项组,包含 SSL 选项。下载 Oracle 客户端 zip 文件,并将客户端软件解压到任意目录。运行从解压文件中提取的 setupexe 文件。下载 openssl102jfipsx8664/openssl102jfipsx8664zip,并将 OpenSSL 软件解压到 C此软件将被解压到 Copenssl。下载 JCE 文件,并将文件解压到任意目录。我们需要使用的两个文件是 localpolicyjar 和 USexportpolicyjar。下载 Oracle SQL Developer,并将软件解压到 C。从 AWS 下载证书,选择您所在区域的证书。找到配置所需的以下文件: orapkibat (Coraclebin) opensslexe (COpenSSLbin) keytoolexe (Coraclejdkbin) sqlnetora (Coraclenetworkadmin) JCE 文件 (Csqldeveloperssl) sqldeveloperconf (Csqldevelopersqldeveloperbin) 通过以下命令创建钱包在 Windows 命令窗口中:shell Coraclebinorapki wallet create wallet Coraclesslwallet autologinonly添加 Amazon RDS 证书到钱包:shell Coraclebinorapki wallet add wallet Coraclesslwallet trustedcert cert Csqldevelopersslusgovwest1bundlepem autologinonly在 tnsnamesora 文件中添加数据库条目。请注意,新安装的客户端中该文件可能不存在。请在与 sqlnetora 文件相同的目录下创建名为 tnsnamesora 的文本文件,添加以下条目: shell ORCLSSL =(DESCRIPTION = (ADDRESS = (PROTOCOL = TCPS)(HOST = ltorclsslxxxxxusgovwest1rdsamazonawscomgt)(PORT = 2484)) (CONNECTDATA= (SERVER = DEDICATED) (SID = ltorclsslgt)) ) )在 sqlnetora 文件中添加钱包位置的条目: shell WALLETLOCATION= (SOURCE= (METHOD=file) (METHODDATA=(DIRECTORY= Coraclesslwallet))) SSLCLIENTAUTHENTICATION = FALSE SSLVERSION = 12 SSLCIPHERSUITES = (SSLRSAWITHAES256CBCSHA) SSLSERVERDNMATCH = NO SQLNETAUTHENTICATIONSERVICES = (TCPSTNS) NAMESDIRECTORYPATH= (TNSNAMES EZCONNECT)打开 Windows 命令窗口并通过以下命令设置包含 tnsnamesora 文件位置的环境变量: shell set TNSADMIN= Coraclenetworkadmin使用以下代码确认: shell ECHO TNSADMIN 您可以通过将 tnsnamesora 文件的位置添加到系统环境变量中,使这一设置为永久。
使用以下 sqlplus 命令建立与数据库的安全连接,并使用 SELECT SQL 语句确认已建立安全连接: shell sqlplus admin@ORCLSSL SELECT SYSCONTEXT(USERENV DBNAME) connected with SYSCONTEXT(USERENV networkprotocol) FROM DUAL 响应应该是 ltdbnamegt 已连接的字符串以及 tcps。
使用以下命令将来自 AWS 的证书从 pem 格式转换为 der 格式: shell set OPENSSLCONF=COpenSSLbinopensslcnf COpenSSLbinopenssl x509 outform der in Csqldevelopersslusgovwest1bundlepem out Coraclesslwalletusgovwest1bundleder dir Coraclesslwallet
使用以下命令创建密钥库: shell Coraclejdkbinkeytool keystore Coraclejdkjrelibsecurityclientkeystore genkey alias client 系统会要求您输入密码,请妥善保管该密码,因为后续步骤将需要它。
确认文件已创建: shell dir Coraclejdkjrelibsecurityclientkeystore
导入 AWS 证书以 der 格式: shell Coraclejdkbinkeytool import alias rdsroot keystore Coraclejdkjrelibsecurityclientkeystore file Coraclesslwalletusgovwest1bundleder复制 JCE 文件: shell copy Csqldeveloperssllocalpolicyjar Coraclejdkjrelibsecurity copy CsqldevelopersslUSexportpolicyjar Coraclejdkjrelibsecurity编辑 Oracle SQL Developer 配置文件 (sqldeveloperconf),并添加以下条目: shell AddVMOption DjavaxnetssltrustStore=Coraclejdkjrelibsecurityclientkeystore AddVMOption DjavaxnetssltrustStoreType=JKS AddVMOption DjavaxnetssltrustStorePassword=ltkeystore passwordgt AddVMOption Doraclenetsslciphersuites=TLSRSAWITHAES256CBCSHA启动 Oracle SQL Developer,并导航到 工具、首选项、数据库、高级,设置 Oracle 客户端位置。
创建与数据库的安全连接,连接信息如下: shell (DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=ltorclsslxxxxxxxusgovwest1rdsamazonawscomgt)(PORT=2484)) (CONNECTDATA=(SID=orclssl))(SECURITY = (MYWALLETDIRECTORY = Coraclesslwallet)))
使用以下 SQL 确认连接通过 TCPS 完成: sql SELECT SYSCONTEXT(USERENV DBNAME) connected with SYSCONTEXT(USERENV networkprotocol) FROM DUAL到此为止,数据库正在监听两个端口:1521不安全连接和 2484安全连接。为了防止使用 1521 端口的连接,请编辑安全组的入站规则以禁止该端口的访问。
测试完成后,请删除 RDS 实例及任何用于创建堡垒的 EC2 实例。
蘑菇加速器永久破解版在本文中,我们展示了如何配置多种数据库客户端工具,以便在 Amazon RDS for SQL Server 和 Amazon RDS for Oracle 中使用 SSL 加密。使用 SSL 可以在连接到 Amazon RDS 时保护数据的传输安全,同时确保符合您组织的安全政策和指南。
如果您有任何问题或意见,请在评论区留言。
Dean Capps 是 AWS 的数据库顾问,拥有提供遗留、开放系统和云平台数据库支持的经验。他目前是 AWS 全球能力中心的成员,为商业和公共部门客户提供同质和异质数据库迁移支持。
Feng Cai 是 AWS 的数据库顾问,拥有广泛的为不同客户提供数据库服务的背景。他当前也是 AWS 全球能力中心的成员,专注于为客户提供同质和异质数据库迁移支持。
Shirin Ali 是 AWS 的高级客户解决方案经理,作为技术 CSM 和业务战略领导者,Shirin 助力客户加速云端之旅,执行强有力的项目管理,同时确保 AWS 客户实现业务价值。
Sushant Deshmukh 是 AWS 专业服务团队的数据库顾问,与 AWS 客户和合作伙伴共同建构高度可用、可扩展、安全的数据库架构。他在 AWS 上运行数据库工作负载方面提供技术设计和实现专业知识,并帮助客户迁移和现代化其数据库到 AWS 云。工作之外,他喜欢旅行、探索新的地方,打排球以及与家人和朋友共度时光。