尝试使用.net Core和Linux的cassandra csharp驱动程序连接到Amazon密钥空间时的身份验证异常

问题描述

我在亚马逊的钥匙空间中创建了一个钥匙空间(表),并试图将记录从其中获取到我的.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```