问题标签 [sslstream]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4109 浏览

.net - .NET SslStream 没有正确关闭 TLS 连接

.NET 的类在关闭连接之前SslStream不会发送警报。close_notify

如何close_notify手动发送警报?

0 投票
1 回答
4018 浏览

ssl - TCP 服务器上的 SslStream 无法使用 RemoteCertificateNotAvailable 验证客户端证书

这个问题都是关于解决SslPolicyError.RemoteCertificateNotAvailable错误的。

我为另一端开发了一个带有 SSLStream 的 TCP 服务器和一个 TCP 客户端。

我通过以下方式验证服务器:

我通过以下方式验证客户端:

我正在从Trusted Publishers - Local Machine.

两者都在同一台机器上运行。

我尝试从 .cer 和 .pfx 文件而不是受信任的发布者存储中加载客户端证书。但是服务器的客户端(远程)证书验证器回调因发现SslPolicyErrorsRemoteCertificateNotAvailable错误而失败。

0 投票
3 回答
29491 浏览

c# - 使用 SSL 和 SslStream 进行对等身份验证?

我需要在使用 TCP/IP 套接字进行通信的各种进程之间提供安全通信。我想要身份验证和加密。而不是重新发明轮子,我真的很想使用 SSL 和 SslStream 类和自签名证书。我想要做的是根据我本地应用程序中的已知副本验证远程进程的证书。(不需要证书颁发机构,因为我打算手动复制证书)。

为此,我希望应用程序能够在第一次运行时自动生成新证书。除了 makecert.exe,看起来这个链接显示了一种自动生成自签名证书的方法,所以这是一个开始。

我查看了 SslStream 的 AuthenticateAsServer 和 AuthenticateAsClient 方法。您可以提供回调以进行验证,因此看起来是可能的。但现在我了解了它的细节,我真的认为不可能做到这一点。

我是否朝着正确的方向前进?有更好的选择吗?以前有没有人做过这样的事情(基本上是对等 SSL 而不是客户端服务器)?

0 投票
1 回答
1662 浏览

c# - 充当服务器时,SslStream 是否使用 LocalCertificateSelectionCallback?

如果我像这样创建一个 SslStream 实例:

然后我使用 AuthenticateAsServer 或 BeginAuthenticateAsServer 方法之一,是否可以调用 LocalCertificateSelectionCallback (tlsLocalCallback)?如果是这样,怎么办?

我的印象是这是不可能的,因为 AuthenticateAsServer 方法需要一个 X509Certificate 参数。如果你传递 null,那么它会引发异常。但我想确定一下,因为我正在尝试编写一个套接字 API 供我团队中的其他开发人员使用。

0 投票
1 回答
1810 浏览

c# - 将 SslStream 与 IOCP 一起使用

我已经使用 Socket 类的异步/IOCP 方法 BeginSend()/BeginRead()/etc 编写了一个 TCP 服务器。我想使用 SslStream 添加 SSL 功能,但从界面看来 Socket 和 SslStream 并不打算一起工作,特别是因为我根本没有使用 Streams 并且 SslStream 似乎依赖于使用 Stream .

这是可能的,还是我找错地方了?我是否需要设计自己的 Stream 子类来输入我的 Socket 实例并指向 SslStream ?由于缩放问题,我的服务器使用 IOCP 对我来说很重要。

0 投票
1 回答
1919 浏览

c# - Socket.ReceiveAsync 和 SslStream

似乎在使用 SslStream 时我无法获得 ReceiveAsync 的好处,因为我必须通过仅支持 Begin* End* 异步模型的 SslStream 进行读取。

是否可以在完成身份验证之前只使用 SslStream,然后直接访问套接字?这意味着我必须找出协商的安全级别,然后自己对缓冲区应用正确的加密/解密。发送前加密,接收后解密。

这是可行的吗?

谢谢!

0 投票
2 回答
2808 浏览

c# - 在服务器应用程序中使用带有 SslStream 和 X509Certificate2 的中间证书

我正在开发一个使用 SslStream 提供其 SSL 套接字的 .Net 服务器应用程序。它适用于某些客户端(例如基于 libcurl 的客户端),但其他客户端由于缺少中间证书而引发错误。如何将中间证书与 SslStream 或 X509Certificate2 对象关联以使这些客户满意?

这是我现在在接受连接时使用的代码:

如果我使用 OpenSSL,我会使用SSL_CTX_add_extra_chain_cert(). 我查看了 X509Chain 对象,但不知道如何使其适合。

谢谢。

0 投票
1 回答
1137 浏览

.net - SslStream 的 SSL 证书设置

我有一种情况,我需要为使用 SslStream 作为服务器的客户端生成 SSL 证书。

我知道该怎么做(makecert.exe),但是在尝试确保连接的双方都经过身份验证时遇到了问题。

基本上,如果我使用自签名证书,我需要将其添加到受信任的根中以使相互身份验证正常工作。如果可以的话,我宁愿避免这种情况。我知道我可以购买 SSL 证书,但我的情况是我需要为每个客户端创建不同的证书,因此为每个客户端购买证书是不可能的。

有没有办法避免这种情况?也许我可以购买一些可以用来生成更多证书的证书?正如您可能知道的那样,我对 SSL 总体上一无所知。

0 投票
4 回答
5208 浏览

c# - 使用 iPhone Apple 推送通知提供程序 (apns-sharp) 时出现 SslStream.AuthenticateAsClient 异常

使用 Apple 推送通知提供程序 (apns-sharp) 时,我收到以下异常。

推送通知在我的开发机器上工作,但在 Rackspace 云托管中不起作用。我有与我的开发人员一起运行的确切 Rackspace Cloud 自定义中等信任配置。机器,所以中等信任在这里不是问题。此外,证书文件也不是问题,因为它适用于我的开发人员。机器。

有任何想法吗?

更新 #1:这是否与可能不在Rackspace 云服务器上的 Entrust 根服务器有关?我检查了 apns-sharp 代码,看起来它忽略了证书验证,但我不是 100% 确定。

0 投票
4 回答
18198 浏览

certificate - 新机器的证书问题 - 提供给包裹的凭据无法识别

我正在新机器上安装 Windows 服务。该服务通过 TCP 上的 SslStream 执行各种操作,该服务使用有问题的证书。

该服务在其他 2 台 windows 2003 机器上使用相同的代码和相同的证书运行良好。但是,这台新机器也是Windows 2003 64 位处理器。

当我尝试使用“服务帐户”身份运行服务时遇到了这个问题。它适用于我自己的凭据。(同样,它在其他 2 台使用此服务帐户的机器上运行良好)

导入证书时我没有启用“强保护”。

这是堆栈跟踪。

System.ComponentModel.Win32Exception:在 System.Net.Security.SecureChannel.AcquireCredentialsHandle(CredentialUse credUsage, SecureCredential&secureCredential) 在 System.Net.Security.SecureChannel.AcquireClientCredentials(Byte[]& thumbPrint) 在 System.Net.Security.SecureChannel.GenerateToken(Byte[] input, Int32 offset, Int32 count, Byte[]& output) 在 System
System.Net.Security.SslState.StartSendBlob(Byte[] 传入,Int32 计数,AsyncProtocolRequest asyncRequest)处的.Net.Security.SecureChannel.NextMessage(Byte[] 传入,Int32 偏移量,Int32 计数)
在 System.Net.Security.SslState.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)
在 System.Net.Security.SslState.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)
在 System.Net.Security .SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest) at System.Net.Security.SslState.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)
在 System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer, AsyncProtocolRequest asyncRequest)
在 System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResultlazyResult) 在 System.Net.Security.SslStream.AuthenticateAsClient(String targetHost, X509CertificateCollection clientCertificates, SslProtocols enabledSslProtocols, Boolean checkCertificateRevocation)