如何使用 SSL 连接连接到我的 Amazon RDS for Oracle 数据库实例?
我想使用安全套接字层 (SSL) 连接来连接我的 Amazon Relational Database Service (Amazon RDS) for Oracle 数据库实例。
简短描述
当您预调配数据库实例时,Amazon RDS 会创建 SSL 证书,然后在该实例上安装证书。这些证书由证书颁发机构签署。SSL 证书包含数据库实例端点作为 SSL 证书的常用名称。这可以保护实例免受欺骗攻击。由 Amazon RDS 创建的 SSL 证书是可信根实体,适用于大多数常见用例。
Amazon RDS for Oracle 支持传输层安全性协议 (TLS) 版本 1.0 和 1.2。要使用 Oracle SSL 选项,请使用选项组中的 SQLNET.SSL_VERSION 选项设置。此选项设置允许使用以下值:
- 1.0 - 客户端只能使用 TLS 1.0 连接到数据库实例。
- 1.2 - 客户端只能使用 TLS 1.2 连接到数据库实例。
- 1.2 或 1.0 - 客户端可以使用 TLS 1.0 或 1.2 连接到数据库实例。
对于现有的 Oracle SSL 选项,SQLNET.SSL_VERSION 默认设置为 1.0 英寸。如有必要,您可以更改此设置。
解决方法
局限性
您可以在同一 RDS for Oracle 数据库实例上使用 SSL 或本地网络加密 (NNE),但不能同时使用两者。如果您使用 SSL 加密,请确保关闭任何其他连接加密。有关详细信息,请参阅 Oracle 本地网络加密。
将 SSL 选项添加到选项组
在您的客户选项组中添加 SSL 选项,以便为您的 RDS for Oracle 数据库实例打开 SSL 模式。按照以下步骤打开 SSL 模式:
- 创建新的选项组或选择现有选项组以将 SSL 选项添加到其中。
- 向选项组添加 SSL 选项。如果您只想将经过 FIPS 验证的密码套件用于 SSL 连接,请将选项 FIPS.SSLFIPS_140 设置为 TRUE。
- 创建新的 RDS for Oracle 数据库实例并将该选项组与之关联。或者修改 RDS for Oracle 数据库实例以将选项组与之关联。
使用 orapki 在客户端中设置钱包
在您的客户端上,将 ORACLE_HOME 环境变量设置为 Oracle 主目录的位置。
-
导航到客户端的目录:
$ cd app/client/product/19.0.0/client_1
-
确认路径:
[client_1]$ pwd /home/ec2-user/app/client/product/19.0.0/client_1
-
设置 Oracle 的路径:
[client_1]$ export ORACLE_HOME=/home/ec2-user/app/client/product/19.0.0/client_1
-
将 &ORACLE_HOME/lib 附加到 LD_LIBRARY_PATH 环境变量:
[client_1]$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
-
创建钱包目录:
[client_1]$ mkdir $ORACLE_HOME/ssl_wallet
-
导航到新创建的目录:
[client_1]$ cd ssl_wallet
-
下载证书捆绑包:
[ssl_wallet]$ wget https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem --2023-08-15 15:20:05-- https://truststore.pki.rds.amazonaws.com/global/global-bundle.pem Resolving http://truststore.pki.rds.amazonaws.com (http://truststore.pki.rds.amazonaws.com)... 18.165.98.84, 18.165.98.93, 18.165.98.125, ... Connecting to http://truststore.pki.rds.amazonaws.com (http://truststore.pki.rds.amazonaws.com)|18.165.98.84|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 178780 (175K) [application/octet-stream] Saving to: 'global-bundle.pem' 100%[==============================================================================>] 178,780 --.-K/s in 0.002s 2023-08-15 15:20:05 (80.1 MB/s) - 'global-bundle.pem' saved [178780/178780]
-
创建钱包:
[ssl_wallet]$ orapki wallet create -wallet . -auto_login_only Oracle PKI Tool Release 19.0.0.0.0 - Production Version 19.3.0.0.0 Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved. Operation is successfully completed.
-
将您下载的证书添加到钱包文件中。
下载全球或特定区域的证书捆绑包 PEM 文件
接下来,您必须下载证书捆绑包以在连接到 RDS for Oracle 数据库时使用。有关详细信息,请参阅特定 AWS 区域的证书捆绑包。
Oracle 的钱包 orapki 功能只能从 PEM 捆绑包文件中导入初始证书。因此,您无法将包含多个 PEM 文件的捆绑包导入钱包。要激活任一证书(rds-ca-rsa2048-g1、rds-ca-rsa4096-g1)的 SSL 连接,必须将单个根文件与 AWS 区域特定的 PEM 文件分开。
要拆分 PEM 文件,请使用以下方法:
cat us-east-1-bundle.pem |awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}' [oracle@ip-***-**-**-*** wallet]$ ls -lrt total 28 -rw-r--r--. 1 oracle oinstall 7488 May 25 2021 us-east-1-bundle.pem -rw-r--r--. 1 oracle oinstall 1456 Sep 16 05:41 cert.pem -rw-r--r--. 1 oracle oinstall 989 Sep 16 05:41 cert4.pem -rw-r--r--. 1 oracle oinstall 2139 Sep 16 05:41 cert3.pem -rw-r--r--. 1 oracle oinstall 1448 Sep 16 05:41 cert2.pem -rw-r--r--. 1 oracle oinstall 1456 Sep 16 05:41 cert1.pem
接下来,将所有 PEM 文件添加到钱包中。您不知道哪个 PEM 文件属于每个证书,因此请将所有 PEM 文件添加到钱包中。
orapki wallet add -wallet /data/wallet -trusted_cert -cert cert.pem -auto_login_only orapki wallet add -wallet /data/wallet -trusted_cert -cert cert1.pem -auto_login_only orapki wallet add -wallet /data/wallet -trusted_cert -cert cert2.pem -auto_login_only orapki wallet add -wallet /data/wallet -trusted_cert -cert cert3.pem -auto_login_only orapki wallet add -wallet /data/wallet -trusted_cert -cert cert4.pem -auto_login_only
使用 openssl 仅下载根证书文件
您也可以使用 openssl 仅下载根证书文件。在 Red Hat Linux 服务器中运行以下命令:
openssl s_client -connect user.ckyx0wdxr13x.us-east-1.rds.amazonaws.com:2484 -showcerts </dev/null 2>/dev/null | sed -n '/s:C = US.*Root/,$p' | sed -n '/BEGIN CERT/,/END CERT/p'> root.pem
运行此命令后,您可以将创建的文件 (root.pem) 添加到您的 Oracle 钱包中。请参阅以下示例:
-----BEGIN CERTIFICATE----- MIID/zCCAuegAwIBAgIRAPVSMfFitmM5PhmbaOFoGfUwDQYJKoZIhvcNAQELBQAw gZcxCzAJBgNVBAYTAlVTMSIwIAYDVQQKDBlBbWF6b24gV2ViIFNlcnZpY2VzLCBJ bmMuMRMwEQYDVQQLDApBbWF6b24gUkRTMQswCQYDVQQIDAJXQTEwMC4GA1UEAwwn QW1hem9uIFJEUyB1cy1lYXN0LTEgUm9vdCBDQSBSU0EyMDQ4IEcxMRAwDgYDVQQH DAdTZWF0dGxlMCAXDTIxMDUyNTIyMzQ1N1oYDzIwNjEwNTI1MjMzNDU3WjCBlzEL MAkGA1UEBhMCVVMxIjAgBgNVBAoMGUFtYXpvbiBXZWIgU2VydmljZXMsIEluYy4x EzARBgNVBAsMCkFtYXpvbiBSRFMxCzAJBgNVBAgMAldBMTAwLgYDVQQDDCdBbWF6 b24gUkRTIHVzLWVhc3QtMSBSb290IENBIFJTQTIwNDggRzExEDAOBgNVBAcMB1Nl YXR0bGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDu9H7TBeGoDzMr dxN6H8COntJX4IR6dbyhnj5qMD4xl/IWvp50lt0VpmMd+z2PNZzx8RazeGC5IniV 5nrLg0AKWRQ2A/lGGXbUrGXCSe09brMQCxWBSIYe1WZZ1iU1IJ/6Bp4D2YEHpXrW bPkOq5x3YPcsoitgm1Xh8ygz6vb7PsvJvPbvRMnkDg5IqEThapPjmKb8ZJWyEFEE QRrkCIRueB1EqQtJw0fvP4PKDlCJAKBEs/y049FoOqYpT3pRy0WKqPhWve+hScMd 6obq8kxTFy1IHACjHc51nrGII5Bt76/MpTWhnJIJrCnq1/Uc3Qs8IVeb+sLaFC8K DI69Sw6bAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE7PCopt lyOgtXX0Y1lObBUxuKaCMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOC AQEAFj+bX8gLmMNefr5jRJfHjrL3iuZCjf7YEZgn89pS4z8408mjj9z6Q5D1H7yS jNETVV8QaJip1qyhh5gRzRaArgGAYvi2/r0zPsy+Tgf7v1KGL5Lh8NT8iCEGGXwF g3Ir+Nl3e+9XUp0eyyzBIjHtjLBm6yy8rGk9p6OtFDQnKF5OxwbAgip42CD75r/q p421maEDDvvRFR4D+99JZxgAYDBGqRRceUoe16qDzbMvlz0A9paCZFclxeftAxv6 QlR5rItMz/XdzpBJUpYhdzM0gCzAzdQuVO5tjJxmXhkSMcDP+8Q+Uv6FA9k2VpUV E/O5jgpqUJJ2Hc/5rs9VkAPXeA== -----END CERTIFICATE-----
orapki wallet add -wallet /data/wallet -trusted_cert -cert test.pem -auto_login_only Oracle PKI Tool Release 19.0.0.0.0 - Production Version 19.3.0.0.0 Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved. Operation is successfully completed. [oracle@ip-***-**-**-*** pem]$ orapki wallet display -wallet /data/wallet Oracle PKI Tool Release 19.0.0.0.0 - Production Version 19.3.0.0.0 Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved. Requested Certificates: User Certificates: Trusted Certificates: Subject: L=Seattle,CN=Amazon RDS us-east-1 Root CA RSA2048 G1,ST=WA,OU=Amazon RDS,O=Amazon Web Services\, Inc.,C=US [oracle@ip-172-31-19-245 pem]$ orapki cert display -cert test.pem Oracle PKI Tool Release 19.0.0.0.0 - Production Version 19.3.0.0.0 Copyright (c) 2004, 2019, Oracle and/or its affiliates. All rights reserved. Subject: L=Seattle,CN=Amazon RDS us-east-1 Root CA RSA2048 G1,ST=WA,OU=Amazon RDS,O=Amazon Web Services\, Inc.,C=US Issuer: L=Seattle,CN=Amazon RDS us-east-1 Root CA RSA2048 G1,ST=WA,OU=Amazon RDS,O=Amazon Web Services\, Inc.,C=US Valid Until: Wed May 25 23:34:57 UTC 2061 [oracle@ip-***-**-**-*** admin]$ sqlplus admin/*******@'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCPS)(HOST=user.ckyx0wdxr13x.us-east-1.rds.amazonaws.com)(PORT=2484))(CONNECT_DATA=(SID=USER)))' SQL*Plus: Release 19.0.0.0.0 - Production on Sun Sep 17 07:12:34 2023 Version 19.3.0.0.0 Copyright (c) 1982, 2019, Oracle. All rights reserved. Last Successful login time: Sun Sep 17 2023 06:07:26 +00:00 Connected to: Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production Version 19.20.0.0.0 SQL> SELECT SYS_CONTEXT('USERENV', 'network_protocol') FROM DUAL; SYS_CONTEXT('USERENV','NETWORK_PROTOCOL') -------------------------------------------------------------------------------- tcps
更新 sqlnet.ora 和 tnsnames.ora 文件
接下来,导航到网络或管理员目录。找到 sqlnet.ora 和 tnsnames.ora 文件并相应地对其进行更新。如果 tnsnames.ora 不存在,请使用以下方法创建它:
[~]$ cd app/client/product/19.0.0/client_1/network/admin [admin]$ cat > tnsnames.ora net_service_name = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCPS) (HOST = user.ckyx0wdxr13x.us-east-1.rds.amazonaws.com) (PORT = 2484) ) ) (CONNECT_DATA = (SID = ORCL) ) (SECURITY = (SSL_SERVER_CERT_DN = "C=US,ST=Washington,L=Seattle,O=Amazon.com,OU=RDS,CN=endpoint") ) ) :wq!
更新 sqlnet.ora 文件以包含您的 SLL 连接的更新详细信息:
[admin]$ vi sqlnet.ora WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /data/wallet))) SSL_CLIENT_AUTHENTICATION = TRUE SSL_VERSION = 1.0 SSL_CIPHER_SUITES = (SSL_RSA_WITH_AES_256_CBC_SHA) SSL_SERVER_DN_MATCH = ON :wq!
使用 SSL 选项连接到您的 RDS for Oracle 数据库实例
将 SQL*Plus 配置为使用 SSL 后,您可以使用 SSL 选项连接到 RDS for Oracle 数据库实例。或者,在连接之前,您可以导出指向包含 tnsnames.ora 和 sqlnet.ora 文件的目录的 TNS_ADMIN 值。这意味着 SQL*Plus 可以始终找到这些文件。请参阅导出 TNS_ADMIN 值的以下示例命令:
[client_1]$export TNS_ADMIN = ${ORACLE_HOME}/network/admin
**注意:**在使用 SSL 连接到数据库实例之前,请检查以下内容:
- RDS 根证书已下载并添加到钱包文件中。
- 您的 TNS 条目中有正确的 SSL 端口号。
- 您的 Amazon RDS 安全组已配置为允许您的计算机通过 SSL 端口进行入站连接。
- 防火墙或安全策略经过适当配置,允许来自 Amazon RDS 的 SSL 端口流量。
相关信息
相关内容
- 已提问 2 年前lg...
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 个月前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前