问题描述
下午好,先生们,
我真的需要澄清一下为数据包加密设置SSL加密,因为这让我有点疯狂。我想设置SSL加密,以确保将设置为客户端和oracle数据库的数据包加密。这听起来很简单,但它一直是我职业生涯中最令人沮丧的Oracle RDBMS功能之一。例如,Data Guard易于设置5倍,因为我觉得Oracle在该文档方面做得很好。
我一直看到Oracle出于某种令人困惑的原因将数据包的SSL加密称为 “SSL身份验证”。我的理解是,在设置数据包的SSL加密时,它对于 “SSL身份验证” 是可选的。换句话说,对我来说,数据包的加密与 “SSL身份验证” 无关。至少根据我所阅读的内容,它们应该是两个独立的过程。实际上,在11g中,由于存在错误,Oracle支持告诉我们将sqlnet.ora中的SSL_CLIENT_AUTHENTICATION设置为false,但最终还是使用tcp加密了数据包!
Oracle文档也不合逻辑。Oracle 19c文档部分中有关 “SSL加密” 的Oracle文档不在 “第四部分保护网络上的数据” 下。相反,它们将其包含在 “第V部分管理21下的强身份验证配置安全套接字层身份验证!” 部分中。如果指示我将SSL加密设置为 “网络上的数据安全”,我将立即转到 “第四部分网络上的数据安全”。同样,我的理解是,我能够通过SSL加密的整个设置来加密网络上的数据,并设置SSL_CLIENT_AUTHENTICATION = FALSE,这将关闭由具有SSL证书的数据库进行SSL身份验证,因此看到 “安全套接字层身份验证” 中的步骤令人困惑。
通过完成以下步骤,我能够使客户端建立与数据库服务器的SSL/TCPS连接:
创建钱包
生成证书请求
由CA签名 (顺便说一句: 这并不容易,Oracle没有提供有关如何完成此操作的过程文档。)
导入CA签名证书
从Oracle Server wallet导出证书并导入到客户端的wallet中
使用Wallet_Location和SSL_VERSION = 1.2配置sqlnet.ora和侦听器.ora
配置侦听器.ora侦听器协议以使用tcpS
在sqlnet.ora和listener.ora中设置SSL_CLIENT_AUTHENTICATION = FALSE
顺便说一句: 我已经确认通过查看listener.log和通过SQL * Plus建立了SSL安全连接:
1.) 从侦听器日志输出:
10 JUN-2021 11:52:21 * (连接数据 =(CID = (程序 = JDBC瘦客户端) (主机 = jdbc _)(用户 = svc_x))(服务名称 = oracle)) * (地址 = (协议 = tcps)(主机 = x.x)(端口 = 550)) * 建立 * oracle * 0
2.) SQL Plus
连接到:
Oracle数据库19c企业版版本19.0.0.0.0-生产
版本19.11.0.0.0
SYS_CONTEXT('USERENV','network_protocol ')
-
tcps
以下是我的问题:
1.) 我可以通过上面用于验证的两种方法确认正在对数据包进行SSL加密吗?
2.) 如果我们在sqlnet.ora中设置SSL_CLIENT_AUTHENTICATION = FALSE并遵循所有其他SSL身份验证步骤,则
a.) 数据包的SSL加密仍然发生?
b.) 用户还会被数据库认证吗?如果是,请确认密码仍将被加密,因为即使未设置SSL加密,默认情况下密码也始终被加密。
3.) 为什么即使设置SSL加密不需要SSL身份验证,Oracle也将其称为SSL身份验证?
4.) Oracle甚至在 “第四部分保护网络上的数据” 中没有名为 “SSL加密设置” 的文档,它只包括使用本机加密的步骤,该步骤不如SSL加密安全。它不是 “第四部分保护网络上的数据” 的一部分,这不是很奇怪吗?
5.) 让数据库使用SSL证书进行身份验证有什么好处?如果这是一个重大的好处,为什么不只是将其作为SSL设置的一部分,而让我们在listener.ora中设置SSL_CLIENT_AUTHENTICATION = FALSE,在sqlnet.ora中设置SSL_CLIENT_AUTHENTICATION = TRUE?
6.) Oracle metalink提供此文档 “分步指南,以配置SSL身份验证 (Doc ID 736510.1)”。我遵循了它,但是到了令人困惑的最后一部分。它有在外部创建用户的说明,如 “客户端证书的dn”。我是否真的需要像下面的任务III中的步骤那样重新创建数据库帐户,以便使用SSL身份验证?如果是,这是否意味着数据库密码不与SSL身份验证一起使用?
以下是这些步骤:
任务三: 创建数据库用户
创建需要通过SSL进行身份验证的数据库用户。外部as子句应包括客户端证书的确切主题DN。通过使用OWM或orapki工具查看客户端钱包,您可以获得客户端证书的主题DN。
SQL> 创建外部标识为 “客户端证书的dn” 的用户 <用户名>;
现在,您可以以 “sqlplus /@” 的身份登录数据库。您不会提供任何密码,因为此用户已通过已导入客户端钱包的客户端证书进行身份验证。
> sqlplus /@
感谢您在这个令人困惑的主题上的帮助。
约翰
我真的需要澄清一下为数据包加密设置SSL加密,因为这让我有点疯狂。我想设置SSL加密,以确保将设置为客户端和oracle数据库的数据包加密。这听起来很简单,但它一直是我职业生涯中最令人沮丧的Oracle RDBMS功能之一。例如,Data Guard易于设置5倍,因为我觉得Oracle在该文档方面做得很好。
我一直看到Oracle出于某种令人困惑的原因将数据包的SSL加密称为 “SSL身份验证”。我的理解是,在设置数据包的SSL加密时,它对于 “SSL身份验证” 是可选的。换句话说,对我来说,数据包的加密与 “SSL身份验证” 无关。至少根据我所阅读的内容,它们应该是两个独立的过程。实际上,在11g中,由于存在错误,Oracle支持告诉我们将sqlnet.ora中的SSL_CLIENT_AUTHENTICATION设置为false,但最终还是使用tcp加密了数据包!
Oracle文档也不合逻辑。Oracle 19c文档部分中有关 “SSL加密” 的Oracle文档不在 “第四部分保护网络上的数据” 下。相反,它们将其包含在 “第V部分管理21下的强身份验证配置安全套接字层身份验证!” 部分中。如果指示我将SSL加密设置为 “网络上的数据安全”,我将立即转到 “第四部分网络上的数据安全”。同样,我的理解是,我能够通过SSL加密的整个设置来加密网络上的数据,并设置SSL_CLIENT_AUTHENTICATION = FALSE,这将关闭由具有SSL证书的数据库进行SSL身份验证,因此看到 “安全套接字层身份验证” 中的步骤令人困惑。
通过完成以下步骤,我能够使客户端建立与数据库服务器的SSL/TCPS连接:
创建钱包
生成证书请求
由CA签名 (顺便说一句: 这并不容易,Oracle没有提供有关如何完成此操作的过程文档。)
导入CA签名证书
从Oracle Server wallet导出证书并导入到客户端的wallet中
使用Wallet_Location和SSL_VERSION = 1.2配置sqlnet.ora和侦听器.ora
配置侦听器.ora侦听器协议以使用tcpS
在sqlnet.ora和listener.ora中设置SSL_CLIENT_AUTHENTICATION = FALSE
顺便说一句: 我已经确认通过查看listener.log和通过SQL * Plus建立了SSL安全连接:
1.) 从侦听器日志输出:
10 JUN-2021 11:52:21 * (连接数据 =(CID = (程序 = JDBC瘦客户端) (主机 = jdbc _)(用户 = svc_x))(服务名称 = oracle)) * (地址 = (协议 = tcps)(主机 = x.x)(端口 = 550)) * 建立 * oracle * 0
2.) SQL Plus
连接到:
Oracle数据库19c企业版版本19.0.0.0.0-生产
版本19.11.0.0.0
SYS_CONTEXT('USERENV','network_protocol ')
-
tcps
以下是我的问题:
1.) 我可以通过上面用于验证的两种方法确认正在对数据包进行SSL加密吗?
2.) 如果我们在sqlnet.ora中设置SSL_CLIENT_AUTHENTICATION = FALSE并遵循所有其他SSL身份验证步骤,则
a.) 数据包的SSL加密仍然发生?
b.) 用户还会被数据库认证吗?如果是,请确认密码仍将被加密,因为即使未设置SSL加密,默认情况下密码也始终被加密。
3.) 为什么即使设置SSL加密不需要SSL身份验证,Oracle也将其称为SSL身份验证?
4.) Oracle甚至在 “第四部分保护网络上的数据” 中没有名为 “SSL加密设置” 的文档,它只包括使用本机加密的步骤,该步骤不如SSL加密安全。它不是 “第四部分保护网络上的数据” 的一部分,这不是很奇怪吗?
5.) 让数据库使用SSL证书进行身份验证有什么好处?如果这是一个重大的好处,为什么不只是将其作为SSL设置的一部分,而让我们在listener.ora中设置SSL_CLIENT_AUTHENTICATION = FALSE,在sqlnet.ora中设置SSL_CLIENT_AUTHENTICATION = TRUE?
6.) Oracle metalink提供此文档 “分步指南,以配置SSL身份验证 (Doc ID 736510.1)”。我遵循了它,但是到了令人困惑的最后一部分。它有在外部创建用户的说明,如 “客户端证书的dn”。我是否真的需要像下面的任务III中的步骤那样重新创建数据库帐户,以便使用SSL身份验证?如果是,这是否意味着数据库密码不与SSL身份验证一起使用?
以下是这些步骤:
任务三: 创建数据库用户
创建需要通过SSL进行身份验证的数据库用户。外部as子句应包括客户端证书的确切主题DN。通过使用OWM或orapki工具查看客户端钱包,您可以获得客户端证书的主题DN。
SQL> 创建外部标识为 “客户端证书的dn” 的用户 <用户名>;
现在,您可以以 “sqlplus /@
> sqlplus /@
感谢您在这个令人困惑的主题上的帮助。
约翰
专家解答
我承认我也曾在这方面的文档上苦苦挣扎。
如果您只关心网络流量,我将提出一个更简单的建议。
我们现在做一个简单得多的选项-本机SSL。为此,你只需要:
服务器
SQLNET.ENCRYPTION_SERVER = 必需
SQLNET.加密类型服务器 =(AES128)
客户
SQLNET.ENCRYPTION_CLIENT = 必需
SQLNET.加密 _ 类型 _ 客户端 =(AES128)
有一整套关于如何通过控制访问的排列
https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/configuring-network-data-encryption-and-integrity.html#GUID-02CA9997-996F-413E-B00D-55DB96675ACB
加上可用算法的列表。
而且它不需要任何额外的许可选项。
如果您只关心网络流量,我将提出一个更简单的建议。
我们现在做一个简单得多的选项-本机SSL。为此,你只需要:
服务器
SQLNET.ENCRYPTION_SERVER = 必需
SQLNET.加密类型服务器 =(AES128)
客户
SQLNET.ENCRYPTION_CLIENT = 必需
SQLNET.加密 _ 类型 _ 客户端 =(AES128)
有一整套关于如何通过控制访问的排列
https://docs.oracle.com/en/database/oracle/oracle-database/19/dbseg/configuring-network-data-encryption-and-integrity.html#GUID-02CA9997-996F-413E-B00D-55DB96675ACB
加上可用算法的列表。
而且它不需要任何额外的许可选项。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




