- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个完全可操作的系统,其中基于 openssl 的客户端与 openssl 服务器交互。每个客户端都有自己的证书,由服务器验证。已使用 openssl(X509、pem)生成证书。它们是自签名的。
我现在想写一个基于SslStream的测试客户端。我使用了 SslStream 类中的客户端示例 documentation .
我的 SslStream 客户端无法完成握手。 stunnel 提示客户端未发送其证书。这在 Wireshark 中得到确认(证书长度:握手消息中的 0)。
我的客户端显示以下异常:
Inner exception: The message received was unexpected or badly formatted
这是我加载证书的方式:
X509Certificate cert = new X509Certificate2(filename, password);
X509CertificateCollection certColl = new X509CertificateCollection();
certColl.Add(cert);
我尝试检索证书的各种属性(例如:GetSerialNumberString())。有用。 Verify 方法返回 false。这是我接下来要调查的事情。
我如何设置我的 SslStream 似乎并不重要(相同的结果):
sslStream.AuthenticateAsClient(serverName);
SslStream sslStream = new SslStream(
client.GetStream(),
false,
new RemoteCertificateValidationCallback(ValidateServerCertificate),
new LocalCertificateSelectionCallback(SelectLocalCertificate));
与身份验证相同:
sslStream.AuthenticateAsClient(serverName);
sslStream.AuthenticateAsClient(serverName,
certColl,
SslProtocols.Tls,
true);
SelectLocalCertificate
被调用(两次)并返回我的证书。 ValidateServerCertificate
目前从未被调用(令我惊讶的是)。
我该如何调试它?如果你能解决我的问题就更好了。
更新
我添加了一个函数来执行基于 X509Chain example 的链验证从文档中。它显示有关证书的各种信息,包括两条有趣的消息:
Element certificate is valid: False
Element error status length: 1
最后,我真的没有比调用验证时更多的详细信息。
openssl verify cert.pem
的输出没有报告任何异常情况。
error 18 at 0 depth lookup:self signed certificate
OK
更新
我从 pem 中提取了私钥和证书,并生成了一个 cert.pfx (pkcs12)。我在我的个人 keystore 中导入 cert.pfx 时没有遇到任何问题。在我的证书详细信息中,我可以看到一个小图标,表示附加的私钥。
我修改了我的客户端以从我的个人存储中检索证书。但我遇到了完全相同的失败。
最佳答案
解决方案是在我的 Windows 机器上导入我的 CA 根证书。我的客户现在可以完成握手了!
通过搜索更完整的 SslStream 示例找到了解决方案。感谢http://geekswithblogs.net/luskan/archive/2007/10/01/115758.aspx .
关于c# - SslStream 客户端无法完成与 Stunnel 服务器的握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11474747/
我已经创建了一个 conf 文件,用于连接到位于/usr/local/etc/stunnel/中的 stunnel 的地址和端口,并启动了 stunnel 服务。 我已经把地址绑定(bind)到我的本
我有运行 stunnel 的机器 A。我正在从机器 B 的机器 A 的端口上发送数据,但是当请求来自不同的机器时,stunnel 没有监听这个端口。当我从本地计算机在同一端口上发送请求时,它工作正常。
我正在尝试了解用于在 stunnel 上到期时更换证书的程序。所以我在 Windows 上安装了一个简单配置的 stunnel: [test1] accept = 127.0.0.1:21234 co
1 个关于 Stunnel 的问题。我想将 Stunnel 用作互联网的 FIX(金融信息交换)网关,以支持 SSL 和非 SSL 连接。 Stunnel 是否可以在没有任何加密的情况下运行?我刚刚尝
我正在尝试在 Windows 中使用 REDIS 设置 stunnel。安装 stunnel 和 redis 后,我在服务器和客户端模式下进行了以下配置: 客户端机器配置: [redis-stunne
我知道 STunnel 可以通过配置文件中的“client = no”或“client = yes”行设置为服务器或客户端。有没有办法让一台机器既是服务器又是客户端? 最佳答案 这样就容易多了您只需在
我正在尝试更正 CentOS 6.x 的以下 stunnel 语法: stunnel -c -f -d 1143 -r imap.foo.tld:993 -P '' 建议的语法不起作用: -c: No
我使用 stunnel 版本 4.29 连接到服务,该服务的提供者禁用了通过 stunnel 4.29 的连接。这现在需要我从 WHM 更新我的 stunnel。 我更新使用 yum update
我有 Ratchet webSocket 服务器在运行并且运行良好。问题是某些连接在握手后立即关闭。 在搜索 stackOverflow 和 google 之后我发现我应该使用 wss,因为使用 ss
有人可以向我解释使用一种优于另一种的好处吗?它们具有可比性吗? 我知道 sshuttle 充当出站通信的代理,但是它也可以用于转发连接吗? 例如,stunnel 可以用作在我的网络之外传输数据的反向代
我有一个完全可操作的系统,其中基于 openssl 的客户端与 openssl 服务器交互。每个客户端都有自己的证书,由服务器验证。已使用 openssl(X509、pem)生成证书。它们是自签名的。
我有一个监听端口 8081 的 Web 服务(它是一个在单声道上运行的 ServiceStack REST Web 服务,如果有帮助的话)。我正在尝试使用 stunnel 保护它,但问题是一旦我连接到
寻求一些帮助,以通过 FIX4.4 协议(protocol)使用 stunnel 和 quickfix python 与我的经纪人 DUKASCOPY 建立连接。 这是我的 channel 配置: c
一段时间以来,我一直在启用 SSL 的页面上使用 stunnel 进行本地 Django 开发,但是自从升级到 Yosemite 之后它似乎停止工作了: $ sudo stunnel stunnel/
在 CentOS 7 上运行 Apache v2.4、PHP v5.6 w/php-fpm 所以我正在尝试让 wss 与 stunnel & Ratchet 一起工作。我有 Ratchet 的 Hel
我需要连接的服务为我提供了三个文件,我正在尝试弄清楚我需要什么来创建 STUNNEL 需要的 Cert=xxx.PEM 文件 我有一个“keystore.jks”文件。用 keytool 转储说这是一
我正在尝试通过 stunnel 实现 TCP 套接字,但不确定如何捕获服务器响应。我的stunnel配置文件是这样的: [Coinbase] client = yes accept = 127.0.0
我正在尝试使用 stunnel 将 wss 连接转换为 ws 连接,因为 wsServer不支持wss。服务器运行的是 Ubuntu,而我使用的客户端是 Chrome,如果重要的话。 这是我的stun
我在 Ubuntu 14.04 上使用 stunnel4 安全地将连接转发到远程连接。我重新启动了 stunnel 服务,它似乎正在正常运行,但我无法打开与 127.0.0.1:8888 的连接。 $
SSL 保护 Redis 集群的正确方法是什么? (客户端-服务器、节点-节点通信)。 如 Redis 集群规范中所述,集群上的每个节点都监听 2 个端口:用于“外部”通信的端口和用于集群总线的端口。
我是一名优秀的程序员,十分优秀!