- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试使用 SSL 证书通过 Oracle.ManagedDataAccess Nuget 包连接到 Amazon RDS 实例。
我可以使用使用 orapki 生成的钱包通过 SQL*Plus 成功连接。关注AWS instructions生成的钱包
我想在 C# 中通过 Oracle.ManagedDataAccess 做同样的事情,我正在尝试使用同一个钱包。
我的 C# 看起来像这样:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Oracle.ManagedDataAccess.Client;
namespace OracleDataAccess
{
class Program
{
static void Main(string[] args)
{
var connectionString = @"USER ID=***;PASSWORD=***;DATA SOURCE=(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCPS)(HOST = ***) (PORT = 2484)))(CONNECT_DATA = (SID = ***)) (SECURITY = (SSL_SERVER_CERT_DN = C=US,ST=Washington,L=Seattle,O=Amazon.com,OU=RDS,CN=***)))";
var connection = new OracleConnection(connectionString);
connection.Open();
}
}
}
我的 app.config 有我钱包的位置:
<oracle.manageddataaccess.client>
<version number="*">
<settings>
<setting name = "WALLET_LOCATION" value="(SOURCE=(METHOD =FILE)(METHOD_DATA=(DIRECTORY=C:\ssl_wallet))) "/>
</settings>
</version>
</oracle.manageddataaccess.client>
我在 Open()
上得到一个 OracleException:
Oracle.ManagedDataAccess.Client.OracleException: 'Network Transport: SSL failure in parsing wallet location'
内部异常:
TCPS: Invalid SSL Wallet (Magic)
它肯定会找到并可以访问钱包文件,因为如果你将位置更改为无效的内容,你会得到不同的内部异常,例如:
DirectoryNotFoundException: Could not find a part of the path 'C:\ssl_wallet2\cwallet.sso'.
我找不到任何明显的证据表明为什么该钱包应该无效,因为它已被 SQL*Plus 成功连接到同一服务器。
Invalid SSL Wallet (Magic)
没有产生任何我能找到的相关信息。这种方法有什么我遗漏的吗?
编辑:
您的堆栈跟踪可能包含:
at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, String password, X509KeyStorageFlags keyStorageFlags) at OracleInternal.Network.TcpsTransportAdapter.Negotiate(ConnectionOption conOption) at OracleInternal.Network.OracleCommunication.DoConnect(String tnsDescriptor) at OracleInternal.Network.OracleCommunication.Connect(String tnsDescriptor, Boolean doNAHandshake, String IName, ConnectionOption CO) at OracleInternal.ServiceObjects.OracleConnectionImpl.Connect(ConnectionString cs, Boolean bOpenEndUserSession, OracleConnection connRefForCriteria, String instanceName)System.ArgumentException, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089Array may not be empty or null. Parameter name: rawData at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromBlob(Byte[] rawData, Object password, X509KeyStorageFlags keyStorageFlags) at System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData, String password, X509KeyStorageFlags keyStorageFlags) at OracleInternal.Network.TcpsTransportAdapter.Negotiate(ConnectionOption conOption
最佳答案
原来orapki生成的钱包文件放在这里不合适。
解决方案是改用 Windows 证书存储来保存 RDS 证书颁发机构。
在这种情况下,您下载 PKCS7 file for RDS from AWS并将其导入 Windows 中受信任的根证书颁发机构。
然后您更改 app.config
以将您的钱包位置设置为 Microsoft 证书存储,如下所示:
<oracle.manageddataaccess.client>
<version number="*">
<settings>
<setting name = "WALLET_LOCATION" value="(SOURCE=(METHOD =MCS)) "/>
</settings>
</version>
</oracle.manageddataaccess.client>
然后一切都按预期进行。
关于.net - Oracle.ManagedDataAccess 到 AWS RDS 数据库 - TCPS : Invalid SSL Wallet (Magic),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52220070/
我需要创建 RDS Aurora 5.7 数据库。我想我对 RDS 的概念不是很清楚。这是正确的层次结构吗? aws_rds_cluster -> aws_rds_cluster_instance -
我正在开发包含 RDS 数据库的 CloudFormation 模板,并且我想将安全组附加到 RDS。有一个资源AWS::RDS::DBSecurityGroup我想编写自己的入口规则,通过附加此资源
我有不同的 EC2 实例尝试访问 RDS 实例。我想在配置文件中预先设置 RDS 实例“规范名称”,以便在部署后我不需要对配置文件进行任何更改。 我有以下问题: 无论如何,人们可以在cloudform
当我在 python 中使用多处理器运行数据导入器时,发生了一些非常奇怪的行为。我相信这是一个数据库问题,但我不知道如何追踪它。下面是我正在做的过程的描述: 1) 运行 XX 个处理器的多处理器文件,
我有一个SpringBoot应用程序,它使用以下配置与PostgreSQL通信,通过AWS Beanstrik部署:。在我将AWS Aurora证书更新为rds-ca-ecc384-g1之前,一切都很
我有一个带有 PostgreSQL 的 AWS RDS 实例。在实例创建过程中,我将自动备份的最大保留期指定为 7。但我可以在快照部分看到过去 9 天的自动备份。 有谁知道这里发生了什么? 最佳答案
我是否能够根据需要切换(我的意思是升级或降级)Amazon RDS 实例,还是必须重新创建一个新实例并进行迁移? 最佳答案 是,Amazon RDS 实例可通过 modify-db-instance
Amazon RDS 使用哪些操作系统。虽然我知道在使用 RDS 时我们只是暴露于一个端点,并且在内部我们使用的数据库可能受多个系统支持,但我想知道这些系统使用的操作系统是什么。 最佳答案 要检查 A
来自文档 https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBCluster.html ,CreateDBClu
此处提到的动态参数与静态参数的示例是什么? Here are some important points you should know about working with parameters i
正在考虑使用多可用区的 RDS Oracle 产品。我找不到一件事 - 如果您的主实例消失并且您故障转移到辅助实例,您会回到主实例吗?或者次要成为主要,然后另一个实例(可能是您的旧主要)成为次要? R
我们最近将 AWS rds 的 SSL 从 rds-ca-2015 更新为 rds-ca-2019。现在应用程序可以正常工作并与 SSL 连接,但我们现在无法使用 rds-ca-2019 确认 rds
我让 AWS EKS 节点访问 RDS,其中我在 RDS 的安全组中将 EKS 节点的公共(public) IP 列入白名单。但这不是可行的解决方案,因为 EKS 节点可以被替换,其公共(public
我有一个多堆栈应用程序,我想在一个堆栈中部署 RDS,然后在稍后的堆栈中部署一个连接到 RDS 的 Fargate 集群。 以下是 rds 的定义方式: this.rdsSG = new ec
AWS RDS的三个指标是什么:可用内存(增强监控),事件内存(增强监控)和可用内存(CloudWatch监控)? 它们之间是什么关系? 看这两张照片。 三个指标的值不同。 的形象 enter ima
我正在使用 AWS-RDS(Aurora MySQL5.6) 并且它是一个集群,它有一个写入器实例和一个读取器实例。我发现当我改变它的类型时,每个实例都会停机近 10 分钟,这是 Not Accept
我们目前每月为 RDS 使用支付 85-100 美元之间的费用。但大多数时候我们不访问我们的数据库实例。有没有办法通过关闭实例或进入共享数据库模式来减少计费。有哪些替代方案? 最佳答案 您可以随时使用
我搜索了网络并浏览了 RDS 文档,但似乎找不到开放连接限制。 就其值(value)而言,我计划使用 RDS 的新 Postgres 风格,但我认为来自 mySQL 方面的答案也可以接受。 谢谢! 最
我使用以下命令将之前部署的 RDS 实例替换为手动配置的 RDS 实例: ./terraform destroy -target aws_db_instance.my_db ./terraform i
我使用以下命令将之前部署的 RDS 实例替换为手动配置的 RDS 实例: ./terraform destroy -target aws_db_instance.my_db ./terraform i
我是一名优秀的程序员,十分优秀!