问题描述
我在亚马逊的钥匙空间中创建了一个钥匙空间(表),并试图将记录从其中获取到我的.net核心应用程序,该应用程序在ubuntu中运行。我提供了所需的所有内容,例如“ .pem”文件用户名,密码和aws文档Using a Cassandra .NET Core Client Driver to Access Amazon Keyspaces Programmatically
中提到的awsEndpoint但是当我运行代码并尝试与Amazon Keyspace连接时,它引发了一个异常“ 所有尝试查询的主机均失败(尝试3.6.70.143:9142:AuthenticationException'验证失败,请参阅内部异常。') ”。
但是从Windows环境中执行时,相同的代码可以正确执行并返回所需的结果。
X509Certificate2Collection certCollection = new X509Certificate2Collection();
X509Certificate2 amazoncert = new X509Certificate2(@"./Security/AmazonRootCA1.pem","");
var userName = "username";
var pwd = "password";
certCollection.Add(amazoncert);
var awsEndpoint = "cassandra.ap-south-1.amazonaws.com" ;
try
{
var cluster = Cluster.Builder()
.AddContactPoints(awsEndpoint)
.WithPort(9142)
.WithAuthProvider(new PlainTextAuthProvider(userName,pwd))
.WithSSL(new SSLOptions().SetCertificateCollection(certCollection))
.Build();
var session = cluster.Connect();
var rs = session.Execute("select * from tutorialkeyspace.tutorialtable;");
解决方法
尝试将证书添加到linux truststore中。
keytool -import -alias cassandra -keystore cassandra_truststore.jks -file temp_file.der```