rabbitmq,Java客户端通过SSL工作,但.NET one则不然



我是 rabbitmq 的新手,但我必须连接到远程代理才能发送和接收消息。远程服务器不受我的控制,几乎不可能从其团队获得答案。不过,我有地址、端口、虚拟主机和用户凭据可供我使用。服务器使用 TLS v1.2。 问题是我无法使用 .NET 客户端建立与服务器的连接。客户端是"rabbitmq.client.5.1.0",.NET Framework 4.5.1和VS 2017。我的代码是:

public bool Start() {
try {
var f = new ConnectionFactory();
f.UserName = "TestUser";
f.Password = "TestPwd";
f.HostName = "x.x.x.x";
f.Port = 5673;
f.VirtualHost = "TestVH";
f.Ssl.Version = SslProtocols.Tls12;
f.Ssl.Enabled = true;
f.Ssl.AcceptablePolicyErrors = SslPolicyErrors.RemoteCertificateChainErrors
| SslPolicyErrors.RemoteCertificateNameMismatch
| SslPolicyErrors.RemoteCertificateNotAvailable;
var c = f.CreateConnection();
} catch( Exception e ) {
throw e;
}
}

它抛出一个异常,最里面是:

身份验证失败,因为远程方已关闭传输流。

(线鲨捕获(。

如果我用Java(1.8, amqp-client-4.0.2(来做,我可以成功地连接到服务器。

public static void main( String[] args ) throws Exception{
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("x.x.x.x");
factory.setPort(5673);
factory.setUsername( "TestUser" );
factory.setPassword( "TestPwd" );
factory.setVirtualHost( "TestVH" );
factory.useSslProtocol("TLSv1.2");
Connection conn = factory.newConnection();
}

线鲨捕获

我想使用 C# 来完成工作,但我无法解决这个问题。任何帮助将不胜感激!

尝试更改此行:

f.Ssl.Version = SslProtocols.Tls12;

对此:

f.Ssl.Version = SslProtocols.Tls12 | SslProtocols.Ssl3 | SslProtocols.Tls11 | SslProtocols.Ssl2;

如果可行,那么您缩小范围

相关内容

最新更新