gpt4 book ai didi

c# - 使用 .Net 连接到 openssl 服务器

转载 作者:太空宇宙 更新时间:2023-11-03 13:34:07 24 4
gpt4 key购买 nike

我得到了一个正在监听客户端连接的服务器应用程序。以下 openssl 命令确实连接...

openssl s_client -key provided.key -cert provided.crt -CAfile provided.pem -connect 127.0.0.1:59123

我有一个 C# 应用程序,它创建一个 TcpClient 并尝试对一个 SslStream 进行身份验证。 BeginAuthenticateAsClient 需要证书。显然,提供的 .crt 文件还不够好,因为需要涉及提供的 .key。我试过使用 openssl 从 .crt 和 .key 文件创建一个 .pfx 文件,但这没有用(文件已创建但服务器关闭了连接)。模仿 .net 中的 open ssl 命令并不难,但我还没有在网上找到任何有效甚至接近我正在尝试做的事情。有谁知道该怎么做,或者我应该使用其他方法吗?附言第三方软件并不是真正的选择。

最佳答案

openssl pkcs12 -export -out provided.pfx -inkey provided.key -in provided.crt

...

var coll = new X509Certificate2Collection();
var cert = new X509Certificate2("provided.pfx", "WhateverPasswordYouGaveIt");
coll.Add(cert);

// do TcpClient stuff
var sslStream = new SslStream(tcpClient.GetStream());
const SslProtocols allowedProtocols = SslProtocols.Tls12 | SslProtocols.Tls11;
sslStream.AuthenticateAsClient("127.0.0.1", coll, allowedProtocols, checkCertificateRevocation: true);

对于 -CAFile 等效项,您需要执行自定义回调并比较 chain.ChainElements[chain.ChainElements.Length - 1].Certificate 中的证书到您期望的那个。

关于c# - 使用 .Net 连接到 openssl 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45737747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com